KekSec

NOTICE TO ALL METHAMPHETAMINE PRODUCERS (THIS IS HOW THEY FIND YOU AND THIS IS WHAT THEY KNOW)

Sep 9th, 2021
724
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 206.24 KB | None | 0 0
  1. use base64decode.org to decode. highly classified gangstalker level file about clandestine meth production
  2.  
  3.  
  4. QVJDSElWRUQgLSBBcmNoaXZpbmcgQ29udGVudAoKQVJDSElWw4lFIC0gQ29udGVudSBhcmNoaXbDqQoKQXJjaGl2ZWQgQ29udGVudAoKQ29udGVudSBhcmNoaXbDqQoKSW5mb3JtYXRpb24gaWRlbnRpZmllZCBhcyBhcmNoaXZlZCBpcyBwcm92aWRlZCBmb3IKcmVmZXJlbmNlLCByZXNlYXJjaCBvciByZWNvcmRrZWVwaW5nIHB1cnBvc2VzLiBJdAppcyBub3Qgc3ViamVjdCB0byB0aGUgR292ZXJubWVudCBvZiBDYW5hZGEgV2ViClN0YW5kYXJkcyBhbmQgaGFzIG5vdCBiZWVuIGFsdGVyZWQgb3IgdXBkYXRlZApzaW5jZSBpdCB3YXMgYXJjaGl2ZWQuIFBsZWFzZSBjb250YWN0IHVzIHRvIHJlcXVlc3QKYSBmb3JtYXQgb3RoZXIgdGhhbiB0aG9zZSBhdmFpbGFibGUuCgpM4oCZaW5mb3JtYXRpb24gZG9udCBpbCBlc3QgaW5kaXF1w6kgcXXigJllbGxlIGVzdCBhcmNoaXbDqWUKZXN0IGZvdXJuaWUgw6AgZGVzIGZpbnMgZGUgcsOpZsOpcmVuY2UsIGRlIHJlY2hlcmNoZQpvdSBkZSB0ZW51ZSBkZSBkb2N1bWVudHMuIEVsbGUgbuKAmWVzdCBwYXMKYXNzdWpldHRpZSBhdXggbm9ybWVzIFdlYiBkdSBnb3V2ZXJuZW1lbnQgZHUKQ2FuYWRhIGV0IGVsbGUgbuKAmWEgcGFzIMOpdMOpIG1vZGlmacOpZSBvdSBtaXNlIMOgIGpvdXIKZGVwdWlzIHNvbiBhcmNoaXZhZ2UuIFBvdXIgb2J0ZW5pciBjZXR0ZQppbmZvcm1hdGlvbiBkYW5zIHVuIGF1dHJlIGZvcm1hdCwgdmV1aWxsZXoKY29tbXVuaXF1ZXIgYXZlYyBub3VzLgoKVGhpcyBkb2N1bWVudCBpcyBhcmNoaXZhbCBpbiBuYXR1cmUgYW5kIGlzIGludGVuZGVkCmZvciB0aG9zZSB3aG8gd2lzaCB0byBjb25zdWx0IGFyY2hpdmFsIGRvY3VtZW50cwptYWRlIGF2YWlsYWJsZSBmcm9tIHRoZSBjb2xsZWN0aW9uIG9mIFB1YmxpYyBTYWZldHkKQ2FuYWRhLgoKTGUgcHLDqXNlbnQgZG9jdW1lbnQgYSB1bmUgdmFsZXVyIGFyY2hpdmlzdGlxdWUgZXQKZmFpdCBwYXJ0aWUgZGVzIGRvY3VtZW50cyBk4oCZYXJjaGl2ZXMgcmVuZHVzCmRpc3BvbmlibGVzIHBhciBTw6ljdXJpdMOpIHB1YmxpcXVlIENhbmFkYSDDoCBjZXV4CnF1aSBzb3VoYWl0ZW50IGNvbnN1bHRlciBjZXMgZG9jdW1lbnRzIGlzc3VzIGRlCnNhIGNvbGxlY3Rpb24uCgpTb21lIG9mIHRoZXNlIGRvY3VtZW50cyBhcmUgYXZhaWxhYmxlIGluIG9ubHkKb25lIG9mZmljaWFsIGxhbmd1YWdlLiBUcmFuc2xhdGlvbiwgdG8gYmUgcHJvdmlkZWQKYnkgUHVibGljIFNhZmV0eSBDYW5hZGEsIGlzIGF2YWlsYWJsZSB1cG9uCnJlcXVlc3QuCgpDZXJ0YWlucyBkZSBjZXMgZG9jdW1lbnRzIG5lIHNvbnQgZGlzcG9uaWJsZXMKcXVlIGRhbnMgdW5lIGxhbmd1ZSBvZmZpY2llbGxlLiBTw6ljdXJpdMOpIHB1YmxpcXVlCkNhbmFkYSBmb3VybmlyYSB1bmUgdHJhZHVjdGlvbiBzdXIgZGVtYW5kZS4KCgxUZWNobmljYWwgUmVwb3J0ClRSLTA0LTIwMDgKCkRldGVjdGluZyBhbmQgSWRlbnRpZnlpbmcgQ2xhbmRlc3RpbmUgRHJ1ZwpMYWJvcmF0b3JpZXM6IFNlbnNpbmcgVGVjaG5vbG9neSBBc3Nlc3NtZW50Ck1hcmNoIDIwMDgKUHJlcGFyZWQgYnkgdGhlCgpUaGUgVW5pdmVyc2l0eSBvZiBCcml0aXNoIENvbHVtYmlhCkdhYnJpZWwgTWFuCkJvcmlzIFN0b2ViZXIKS29ucmFkIFdhbHVzCkZvciB0aGUKQ2FuYWRpYW4gUG9saWNlIFJlc2VhcmNoIENlbnRyZQoKDMKpIEhlciBNYWplc3R5IHRoZSBRdWVlbiBpbiBSaWdodCBvZiBDYW5hZGEsIGFzIHJlcHJlc2VudGVkIGJ5IHRoZSBNaW5pc3RlciBvZgpOYXRpb25hbCBEZWZlbmNlLAoKVGhpcyByZXBvcnQgaXMgYSBwdWJsaWNhdGlvbiBvZiB0aGUgQ2FuYWRpYW4gUG9saWNlIFJlc2VhcmNoIENlbnRyZS4KRm9yIGFkZGl0aW9uYWwgY29waWVzIG9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gY29udGFjdDoKCkNhbmFkaWFuIFBvbGljZSBSZXNlYXJjaCBDZW50cmUKKENQUkMpCkRlZmVuY2UgUiZEIENhbmFkYSDigJMgQ2VudHJlIGZvcgpTZWN1cml0eSBTY2llbmNlCkJ1aWxkaW5nIE0tMjNhLCAxMjAwIE1vbnRyZWFsIFJvYWQKT3R0YXdhLCBPTiBLMUEgMFI2ClRlbGVwaG9uZTogKDYxMykgOTkzLTM5OTYKRmF4OiAoNjEzKSA5NDktMzA1Ngp3d3cuY3ByYy5vcmcKCkNlbnRyZSBjYW5hZGllbiBkZSByZWNoZXJjaGVzCnBvbGljacOocmVzIChDQ1JQKQpSJkQgcG91ciBsYSBkw6lmZW5zZSBDYW5hZGEg4oCTIENlbnRyZQpkZXMgc2NpZW5jZXMgcG91ciBsYSBzw6ljdXJpdMOpCsOJZGlmaWNlIE0tMjNhLCAxMjAwLCBjaGVtaW4gZGUKTW9udHLDqWFsCk90dGF3YSAoT250YXJpbykgSzFBIDBSNgpUw6lsw6lwaG9uZSA6ICg2MTMpIDk5My0zOTk2ClTDqWzDqWNvcGlldXIgOiAoNjEzKSA5NDktMzA1Ngp3d3cuY3ByYy5vcmcKClRoZSBzY2llbnRpZmljIG9yIHRlY2huaWNhbCB2YWxpZGl0eSBvZiB0aGlzIFJlcG9ydCBpcyBlbnRpcmVseSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCmF1dGhvcnMgYW5kIHRoZSBjb250ZW50cyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0aGUgYXBwcm92YWwgb3IgZW5kb3JzZW1lbnQgb2YKRGVmZW5jZSBSJkQgQ2FuYWRhLgoKDERldGVjdGluZyBhbmQgSWRlbnRpZnlpbmcKQ2xhbmRlc3RpbmUgRHJ1ZyBMYWJvcmF0b3JpZXM6ClNlbnNpbmcgVGVjaG5vbG9neSBBc3Nlc3NtZW50CgpHYWJyaWVsIE1hbgpCb3JpcyBTdG9lYmVyCktvbnJhZCBXYWx1cwpNYXJjaCAzMSwgMjAwOAoKVGhlIFVuaXZlcnNpdHkgb2YgQnJpdGlzaCBDb2x1bWJpYQoKDEFCU1RSQUNUCkNsYW5kZXN0aW5lIGRydWcgbGFib3JhdG9yaWVzLCBvZiB3aGljaCB0aGUgbWFqb3JpdHkgYXJlIHByb2R1Y2luZyBtZXRoYW1waGV0YW1pbmUsCnJlcHJlc2VudCBvbmUgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgc29jaWFsIGNoYWxsZW5nZXMgZmFjaW5nIENhbmFkYSBhbmQgaW4gcGFydGljdWxhcgpCcml0aXNoIENvbHVtYmlhLiBTdWNoIGxhYm9yYXRvcmllcyBhcmUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgbGFyZ2UgcXVhbnRpdGllcyBvZiBpbGxpY2l0CmRydWdzIGluIHByb2R1Y3Rpb24gY3ljbGVzIHRoYXQgY2FuIG9mdGVuIHNwYW4gbGVzcyB0aGFuIDQ4IGhvdXJzLCBtYWtpbmcgdGltZWx5CmRpc2NvdmVyeSBlc3NlbnRpYWwuIFRoaXMgcmVwb3J0IG91dGxpbmVzIHRoZSBmaXJzdCBwaGFzZSBvZiBhIGxhcmdlciBwcm9qZWN0IGFpbWluZyBhdApkZXZlbG9waW5nIHNlbnNvciB0ZWNobm9sb2d5IHRhcmdldGVkIGF0IGRldGVjdGluZyB0aGVzZSBjbGFuZGVzdGluZSBtZXRoYW1waGV0YW1pbmUKbGFib3JhdG9yaWVzLiBBcyBwYXJ0IG9mIHRoaXMgcmVwb3J0LCB3ZSBwcm92aWRlIGEgZGV0YWlsZWQgYW5hbHlzaXMgb2YgdGhlIG1vc3QgY29tbW9uCm1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyBhbmQgaWRlbnRpZnkgdGhlIGFpcmJvcm5lIGNoZW1pY2FscyByZWxlYXNlZApkdXJpbmcgbWFudWZhY3R1cmluZy4gU2luY2UgZWFjaCBvZiB0aGVzZSBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyBoYXMgYSB1bmlxdWUKY2hlbWljYWwgYW5kIHRlbXBvcmFsIHNpZ25hdHVyZSwgdGhlc2Ugc2lnbmF0dXJlcyBjYW4gYmUgdXNlZCB0byBkaXN0aW5ndWlzaAptZXRoYW1waGV0YW1pbmUgbGFib3JhdG9yaWVzIGZyb20gb3RoZXIgbGVnaXRpbWF0ZSBzb3VyY2VzIG9mIHRoZXNlIGdhc2VzLiBJbiB0aGUKY29udGV4dCBvZiB0aGUgdGFyZ2V0IGdhc2VzLCB0aGlzIHJlcG9ydCBhbHNvIHByb3ZpZGVzIGEgZGV0YWlsZWQgYXNzZXNzbWVudCBvZiBhdmFpbGFibGUKc2Vuc29yIHRlY2hub2xvZ3ksIGFzIHdlbGwgYXMgc2Vuc29yIHRlY2hub2xvZ3kgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50LiBUaGUKb2JqZWN0aXZlIG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0byBpZGVudGlmeSB0aGUgc2Vuc29yIHRlY2hub2xvZ2llcyB0aGF0IHdvdWxkIGJlIG1vc3QKc3VpdGFibGUgZm9yIHRoaXMgYXBwbGljYXRpb24uIEluIGFkZGl0aW9uLCByZWNvbW1lbmRhdGlvbnMgZm9yIGZ1dHVyZSBzdGVwcyBhcmUgZGV2ZWxvcGVkCmluIG9yZGVyIHRvIGZ1cnRoZXIgYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZiB0aGlzIHByb2plY3QuCgoyCgoMRVhFQ1VUSVZFIFNVTU1BUlkKVGhlIHByaW1hcnkgb2JqZWN0aXZlIG9mIHRoZSBwcm9qZWN0IGlzIHRvIGRldmVsb3AgZGV0ZWN0aW9uIHRlY2hub2xvZ3kgdGhhdCB3aWxsIGJlIHVzZWQKYnkgbGF3IGVuZm9yY2VtZW50IHVuaXRzIHRvIHVuY292ZXIgY2xhbmRlc3RpbmUgbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcmllcyBhbmQKY2hlbWljYWwgd2FzdGUgZHVtcHMuIEluIHRoZSBpbml0aWFsIHBoYXNlIG9mIHRoaXMgcHJvamVjdCwgdGFyZ2V0IGNoZW1pY2FscyB1c2VkIGluIHRoZQpwcm9kdWN0aW9uIG9mIG1ldGhhbXBoZXRhbWluZSBhcmUgaWRlbnRpZmllZCB0aHJvdWdoIGEgZGV0YWlsZWQgYW5hbHlzaXMgb2YgdGhlIGNvbW1vbgptYW51ZmFjdHVyaW5nIHByb2Nlc3Nlcy4gVGhlIHJlc3VsdHMgcHJlc2VudGVkIGFyZSBlc3NlbnRpYWwgdG8gZGV2ZWxvcGluZyBhIGRhdGFiYXNlIG9mCmNoZW1pY2FsIHNpZ25hdHVyZXMgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlIGNsYW5kZXN0aW5lIGxhYm9yYXRvcmllcyBhbmQgd2FzdGUKZHVtcHMgZnJvbSBvdGhlciBsZWdpdGltYXRlIHNvdXJjZXMgb2YgdGhlc2UgZ2FzZXMuIEluIGFkZGl0aW9uLCBhIGRldGFpbGVkIGFzc2Vzc21lbnQgb2YKc2Vuc29yIHRlY2hub2xvZ3kgd2FzIGNvbXBsZXRlZCBpbiBvcmRlciB0byBpZGVudGlmeSB0ZWNobm9sb2dpZXMgdGhhdCBhcmUgbW9zdCBzdWl0YWJsZQpmb3IgdGhpcyBwdXJwb3NlLiBJbiBzdW1tYXJ5LCB0aGlzIHJlc2VhcmNoIGhhczoKMS4gSWRlbnRpZmllZCBhIGRldGFpbGVkIGxpc3Qgb2YgdGFyZ2V0IGdhc2VzIHRoYXQgYXJlIHJlbGVhc2VkIGZyb20gY29tbW9uCm1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyAoQmlyY2ggUmVkdWN0aW9uIG1ldGhvZCwgUDJQLWJhc2VkCm1ldGhvZHMsIFJlZCBQaG9zcGhvcnVzLWJhc2VkIG1ldGhvZHMpLgoyLiBJZGVudGlmaWVkIHRoZSBleHBlY3RlZCB0ZW1wb3JhbCBzZXF1ZW5jZSBvZiBnYXNlcyBmb3IgdGhlIHZhcmlvdXMgbWV0aG9kcywKd2hpY2ggd2lsbCBmb3JtIHRoZSBjaGVtaWNhbCBzaWduYXR1cmUgb2YgZWFjaCBwYXJ0aWN1bGFyIG1hbnVmYWN0dXJpbmcgcHJvY2Vzcy4KV2hlcmUgcG9zc2libGUsIHRoZSBlc3RpbWF0ZWQgY29uY2VudHJhdGlvbiBvZiB0aG9zZSBnYXNlcyBib3RoIGluc2lkZSBhbmQKb3V0c2lkZSBvZiB0aGUgbGFib3JhdG9yeSBoYXMgYmVlbiBwcm92aWRlZC4KMy4gSWRlbnRpZmllZCBjb21tb24gdXNlcyBhbmQgc291cmNlcyBvZiB0aGUgdGFyZ2V0IGdhc2VzIGluIG9yZGVyIHRvIHJlZHVjZSBmYWxzZQppZGVudGlmaWNhdGlvbnMgb2YgY2xhbmRlc3RpbmUgbGFib3JhdG9yaWVzLgo0LiBJZGVudGlmaWVkIHRoZSBwb3RlbnRpYWwgcG9pbnQgc2Vuc29yIHRlY2hub2xvZ2llcyB0aGF0IGNvdWxkIGJlIHVzZWQgaW4gdGhlCmRldGVjdGlvbiBvZiB0aGUgdGFyZ2V0IGdhc2VzIGFuZCBwcm92aWRlZCB0aGUgZGV0ZWN0YWJsZSBsZXZlbHMgb2YgdGhvc2UgZ2FzZXMuCjUuIERldmVsb3BlZCBhIHNldCBvZiByZWNvbW1lbmRhdGlvbnMgb3V0bGluaW5nIGEgc2VyaWVzIG9mIHJlcXVpcmVkIGV4cGVyaW1lbnRzCnRoYXQgd2lsbCBlbmFibGUgYSBwcm9qZWN0IGZlYXNpYmlsaXR5IGFzc2Vzc21lbnQuIFRoZXNlIGluY2x1ZGU6CmEuIFNldHRpbmcgdXAgYSBtb2NrIGNsYW5kZXN0aW5lIGxhYiBzaXRlIGZvciByZXNlYXJjaCBhbmQgZGV0ZWN0aW9uIG9mCmhhcm1sZXNzIHNpbXVsYW50IGdhc2VzIGluIG9yZGVyIHRvIGRldGVybWluZSBleHBlY3RlZCBjb25jZW50cmF0aW9ucyBpbgphbmQgYXJvdW5kIHRoZSBsYWJvcmF0b3J5LiBUaGlzIGluaXRpYWwgc2V0dXAgd2lsbCBiZSB1c2VkIHRvIHNpbXVsYXRlIHRoZQpwcm9wYWdhdGlvbiBvZiBnYXMgb3V0c2lkZSBvZiB0aGUgbGFiIGFuZCB0byBlc3RhYmxpc2ggcHJlbGltaW5hcnkgZXN0aW1hdGVzCm9mIGdhcyBjb25jZW50cmF0aW9uLgpiLiBQZXJmb3JtaW5nIGxpdmUgdGVzdGluZyB1c2luZyBjb2xvcmltZXRyaWMgZGV0ZWN0aW9uIHR1YmVzIG1vdW50ZWQgb24KcGF0cm9sIHZlaGljbGVzLiBUaGlzIGhpZ2hseSBzZW5zaXRpdmUgbWV0aG9kIHdpbGwgZGVtb25zdHJhdGUgaWYgdGFyZ2V0Cmdhc2VzIGNhbiBiZSBkZXRlY3RlZCBmcm9tIGEgbW92aW5nIHZlaGljbGUuCmMuIFNldHRpbmcgdXAgYSBtb2RlbCBjbGFuZGVzdGluZSBsYWJvcmF0b3J5IGFuZCAvIG9yIHdhc3RlIGR1bXAgaW4gb3JkZXIgdG8Kb2J0YWluIGFjY3VyYXRlIGFpcmJvcm5lIHRhcmdldCBnYXMgY29uY2VudHJhdGlvbnMgaW4gdGhlIHZpY2luaXR5IG9mIHRoZQpsYWJvcmF0b3J5IGZvciB0aGUgbW9zdCBjb21tb24gbWFudWZhY3R1cmluZyBtZXRob2RzLiBUaGlzIGRhdGEgd2lsbApiZSB1c2VkIHRvIGFzc2VzcyBleGlzdGluZyB0ZWNobm9sb2d5IGFuZCBkZXRlcm1pbmUgd2hlcmUgZnVydGhlcgpyZXNlYXJjaCB3aWxsIGJlIHJlcXVpcmVkLgoKMwoKDFRBQkxFIE9GIENPTlRFTlRTCkFCU1RSQUNUIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyCkVYRUNVVElWRSBTVU1NQVJZIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzCkxJU1QgT0YgQUJCUkVWSUFUSU9OUyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDEwCkludHJvZHVjdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxMgpQYXJ0IEE6IERldGVybWluaW5nIHRoZSBDaGVtaWNhbHMgaW52b2x2ZWQgaW4gQ2xhbmRlc3RpbmUgTWV0aGFtcGhldGFtaW5lClByb2R1Y3Rpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxMgoxLiBDaGFyYWN0ZXJpc3RpY3Mgb2YgQ2xhbmRlc3RpbmUgRHJ1ZyBMYWJvcmF0b3JpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxMgoxLjEgTG9jYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTMKMS4yIE9wZXJhdG9ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDEzCjEuMyBFcXVpcG1lbnQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTQKMi4gQ29tbW9uIENsYW5kZXN0aW5lIE1ldGhhbXBoZXRhbWluZSBNYW51ZmFjdHVyaW5nIFByb2Nlc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxNgoyLjEgQmlyY2ggUmVkdWN0aW9uIE1ldGhvZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE3CjIuMiBQMlAtYmFzZWQgTWV0aG9kcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMTkKMi4zIFJlZCBQaG9zcGhvcnVzLWJhc2VkIE1ldGhvZHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyMgoyLjQgT3RoZXIgTWV0aG9kcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDI1CjMuIElsbGVnYWwgQ2hlbWljYWwgV2FzdGUgRHVtcHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMjUKMy4xIExvY2F0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDI1CjMuMiBDaGFyYWN0ZXJpc3RpY3MgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMjcKNC4gU3VtbWFyeSBvZiBUYXJnZXQgQ2hlbWljYWxzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyOAo1LiBHZW5lcmFsIEluZm9ybWF0aW9uIG9uIExlZ2l0aW1hdGUgVXNlcyBvZiBUYXJnZXQgQ2hlbWljYWxzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDI5CjUuMSBDb21tb24gQ2hlbWljYWxzIGZvciBhbGwgTWV0aG9kcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzAKNS4yIEJpcmNoIFJlZHVjdGlvbiBNZXRob2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzMAo1LjMgUDJQLWJhc2VkIE1ldGhvZHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMxCjUuNCBSZWQgUGhvc3Bob3J1cy1iYXNlZCBNZXRob2RzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzIKUGFydCBCOiBDaGVtaWNhbCBTZW5zaW5nIFRlY2hub2xvZ2llcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzMKU2Vuc29yIEFycmF5cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMzCjEuIEVsZWN0cm9jaGVtaWNhbCBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzMKMS4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIEVsZWN0cm9jaGVtaWNhbCBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzMwoxLjIgQ29tbWVyY2lhbCBFbGVjdHJvY2hlbWljYWwgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDM0CjEuMyBSZWNlbnQgUmVzZWFyY2ggb24gRWxlY3Ryb2NoZW1pY2FsIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNQoxLjQgUHJvcGVydGllcyBvZiBFbGVjdHJvY2hlbWljYWwgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzYKCjQKCgwyLiBHcmF2aW1ldHJpYyBTZW5zb3JzIChTdXJmYWNlIEFjb3VzdGljIFdhdmUsIEJ1bGsgQWNvdXN0aWMgV2F2ZSwgYW5kIEZsZXh1cmFsClBsYXRlIFdhdmUgRGV2aWNlcyApIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzYKMi4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIEdyYXZpbWV0cmljIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNgoyLjIgQ29tbWVyY2lhbCBHcmF2aW1ldHJpYyBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDM4CjIuMyBSZWNlbnQgUmVzZWFyY2ggb24gR3JhdmltZXRyaWMgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzOAoyLjQgUHJvcGVydGllcyBvZiBHcmF2aW1ldHJpYyBUZWNobm9sb2d5IGJhc2VkIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzOQozLiBDaGVtaWNhbCBTZW5zaW5nIHVzaW5nIEluZnJhcmVkIFNwZWN0cm9zY29weSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDM5CjMuMSBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBvZiBJbmZyYXJlZCBTcGVjdHJvbWV0cnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzOQozLjIgQ29tbWVyY2lhbCBJUiBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQwCjMuMyBSZWNlbnQgUmVzZWFyY2ggb24gSVIgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0MQozLjQgUHJvcGVydGllcyBvZiBJUiBTcGVjdHJvbWV0cnkgYmFzZWQgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0MQo0LiBJb24gTW9iaWxpdHkgU3BlY3Ryb21ldHJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDIKNC4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIElvbiBNb2JpbGl0eSBTcGVjdHJvbWV0cnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQyCjQuMiBDb21tZXJjaWFsIElNUyBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQzCjQuMyBSZWNlbnQgUmVzZWFyY2ggb24gSU1TIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDQKNC40IFByb3BlcnRpZXMgb2YgSU1TIFRlY2hub2xvZ3kgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0NAo1LiBNZXRhbCBPeGlkZSBTZW1pY29uZHVjdG9yIChNT1MpIENoZW1pY2FsIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0NQo1LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgTWV0YWwgT3hpZGUgU2VtaWNvbmR1Y3RvciBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uIDQ1CjUuMiBDb21tZXJjaWFsIE1PUyBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0NQo1LjMgUmVjZW50IFJlc2VhcmNoIG9uIE1PUyBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0Ngo1LjQgUHJvcGVydGllcyBvZiBNT1MgQ2hlbWljYWwgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQ2CjYuIE1pY3JvY2FudGlsZXZlciBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDYKNi4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIE1pY3JvY2FudGlsZXZlciBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDYKNi4yIENvbW1lcmNpYWwgTWljcm9jYW50aWxldmVyIEdhcyBTZW5zb3JzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0Nwo2LjMgUmVjZW50IFJlc2VhcmNoIG9uIE1pY3JvY2FudGlsZXZlciBHYXMgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDcKNi40IFByb3BlcnRpZXMgb2YgTWljcm9jYW50aWxldmVyIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0OAo3LiBOYW5vbWF0ZXJpYWxzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQ4CjcuMSBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBvZiBOYW5vbWF0ZXJpYWxzLWJhc2VkIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0OAo3LjIgQ29tbWVyY2lhbCBOYW5vbWF0ZXJpYWxzIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0OQo3LjMgUmVjZW50IFJlc2VhcmNoIG9uIE5hbm9tYXRlcmlhbHMgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQ5CjcuNCBQcm9wZXJ0aWVzIG9mIE5hbm9tYXRlcmlhbHMgYmFzZWQgQ2hlbWljYWwgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDUwCjguIE9wdGljYWwgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTAKOC4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIE9wdGljYWwgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1MAo1CgoMOC4yIENvbW1lcmNpYWwgT3B0aWNhbCBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1MQo4LjMgUmVjZW50IFJlc2VhcmNoIG9uIE9wdGljYWwgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTEKOC40IFByb3BlcnRpZXMgb2YgT3B0aWNhbCBDaGVtaWNhbCBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTIKOS4gUGhvdG9pb25pemF0aW9uIERldGVjdG9ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1Mgo5LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgUGhvdG9pb25pemF0aW9uIERldGVjdG9yIEdhcyBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1Mgo5LjIgQ29tbWVyY2lhbCBQSUQgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTMKOS4zIFJlY2VudCBSZXNlYXJjaCBvbiBQSUQgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTQKOS40IFByb3BlcnRpZXMgb2YgUElEIFRlY2hub2xvZ3kgYmFzZWQgQ2hlbWljYWwgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTQKMTAuIFBvbHltZXItYmFzZWQgQ2hlbWljYWwgU2Vuc29ycyAoQ2hlbWlyZXNpc3RvcnMsIENoZW1pY2FwYWNpdG9ycywgQ2hlbUZFVOKAmXMpCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NAoxMC4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIFBvbHltZXIgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NAoxMC4yIENvbW1lcmNpYWwgUG9seW1lciBHYXMgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDU1CjEwLjMgUmVjZW50IFJlc2VhcmNoIG9uIFBvbHltZXIgR2FzIFNlbnNvcnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NgoxMC40IFByb3BlcnRpZXMgb2YgUG9seW1lci1iYXNlZCBDaGVtaWNhbCBTZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDU3CjExLiBUaGVybWFsIENoZW1pY2FsIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NwoxMS4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIFRoZXJtYWwgR2FzIFNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NwoxMS4yIENvbW1lcmNpYWwgVGhlcm1hbCBHYXMgU2Vuc29ycy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDU4CjExLjMgUmVjZW50IFJlc2VhcmNoIG9uIFRoZXJtYWwgR2FzIFNlbnNvcnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1OAoxMS40IFByb3BlcnRpZXMgb2YgVGhlcm1hbCBHYXMgU2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDU5CjEyLiBTdW1tYXJ5IG9mIFNlbnNvciBTcGVjaWZpY2F0aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDU5CjEzLiBUZWNobm9sb2d5IEFzc2Vzc21lbnQuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNjEKUGFydCBDOiBSZWNvbW1lbmRhdGlvbnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDYzCjEuIExpbWl0YXRpb25zIG9mIEF2YWlsYWJsZSBJbmZvcm1hdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA2MwoyLiBPdXRzdGFuZGluZyBRdWVzdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA2MwozLiBHZW5lcmFsIFJlY29tbWVuZGF0aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNjUKUkVGRVJFTkNFUyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA2OAoKNgoKDExJU1QgT0YgRklHVVJFUwpGaWd1cmUgMSAtIEVxdWlwbWVudCB1c2VkIGFzIHN1YnN0aXR1dGVzIGZvciBzY2llbnRpZmljLWdyYWRlIGVxdWlwbWVudCBpbiBjbGFuZGVzdGluZQpkcnVnIG1hbnVmYWN0dXJlLCAoYSkgb2lsIGJhdGggcmVmbHV4IChiKSBiZWVyIGtlZyByZWFjdGlvbiB2ZXNzZWwgKGMpIGNvcHBlciB0dWJlCmNvbmRlbnNlciBbMV0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxNgpGaWd1cmUgMiAtIEJpcmNoIFJlZHVjdGlvbiBtZXRob2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAxNwpGaWd1cmUgMyAtIFAyUCBMZXVja2FyZHQtV2FsbGFjaCBtZXRob2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyMApGaWd1cmUgNCAtIFJlZCBQIG1ldGhvZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMjMKRmlndXJlIDUgLSBNZXRoYW1waGV0YW1pbmUgcHJvZHVjdGlvbiB3YXN0ZSBkdW1wLCA0IGJhcnJlbHMgYW5kIGJhZ3MgY29udGFpbmluZwpnYXJiYWdlLiBEaXRjaCBpbiB0aGUgMTg1MDAtYmxvY2sgb2YgMjh0aCBBdmVudWUsIFN1cnJleSwgQkMsIENhbmFkYSBbMTNdIC4uLi4uLi4gMjYKRmlndXJlIDYgLSBFeGFtcGxlIG9mIGEgcG9ydGFibGUgY29udGFpbmVyIGR1bXAgc2l0ZSBbMTNdIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMjcKRmlndXJlIDcgLSBTY2hlbWF0aWMgb2YgYSB0eXBpY2FsIGVsZWN0cm9jaGVtaWNhbCBnYXMgc2Vuc29yIFsxN10uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNApGaWd1cmUgOCAtIENvbW1lcmNpYWwgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvciAoRHLDpGdlclNlbnNvcikuIFRoZSBkaWFtZXRlciBvZiB0aGUKc2Vuc29yIGJvZHkgaXMgYXBwcm94aW1hdGVseSA1MCBtbS4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNApGaWd1cmUgOSAtIE9wZXJhdGlvbiBwcmluY2lwbGUgb2YgYSBTQVcgc2Vuc29yIFsyN10gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNwpGaWd1cmUgMTAgLSBUb3AtZG93biB2aWV3IG9mIGEgU0FXIGNoZW1pY2FsIHNlbnNvciwgcGllem9lbGVjdHJpYyBzdWJzdHJhdGUgaXMKdHlwaWNhbGx5IHF1YXJ0eiBidXQgY2FuIGJlIG90aGVyIG1hdGVyaWFscyBbMjRdLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzgKRmlndXJlIDExIC0gRXhhbXBsZSBvZiBJUiBzcGVjdHJhIG9mIDMgZGlmZmVyZW50IG9yZ2FuaWMgY29tcG91bmRzLiBUaGUgZ3JhcGhzIHNob3cKdGhlIG5vcm1hbGl6ZWQgdHJhbnNtaXR0YW5jZSAoJVQpIGFzIGEgZnVuY3Rpb24gb2Ygd2F2ZWxlbmd0aCBpbiBjbS4gRGlmZmVyZW50CmJvbmRzIChpLmUuIEMtQ0gzLCBDPU8sIGV0Yy4pIHdpdGhpbiB0aGVzZSBjb21wb3VuZHMgYXJlIGV4Y2l0ZWQgYnkgZGlmZmVyZW50IElSCndhdmVsZW5ndGhzLCBhdCB3aGljaCB0aGV5IGFic29yYiB0aGUgSVIgcmFkaWF0aW9uLiBbMzNdLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0MApGaWd1cmUgMTIgLSBFbnZpcm9uaWNzIE95IElEMTAwIHBvcnRhYmxlIEZUSVIgZ2FzIGFuYWx5emVyIFszNF0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQwCkZpZ3VyZSAxMyAtIFNjaGVtYXRpYyBzaG93aW5nIHRoZSBJTVMgcHJpbmNpcGxlIG9mIG9wZXJhdGlvbi4gVGhlIGNvbGxlY3RlZCBlbGVjdHJpYwpjaGFyZ2VzIGZyb20gdGhlIGlvbnMgb24gdGhlIGRldGVjdG9ycyBhcmUgbWVhc3VyZWQgdXNpbmcgZWxlY3Ryb21ldGVycyBbMzhdLi4uLi4uLi4gNDIKRmlndXJlIDE0IC0gVHlwaWNhbCBjaGFyZ2UgbWVhc3VyZW1lbnQgZnJvbSBJTVMsIHRoZSBkcmlmdCB0aW1lIG9uIHRoZSB4LWF4aXMKY29ycmVzcG9uZHMgdG8gZWxlY3RyaWMgZHJpZnQgZmllbGQgWzM5XSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQzCkZpZ3VyZSAxNSAtIERpYWdyYW0gb2YgY29tbWVyY2lhbGx5IGF2YWlsYWJsZSB0aW4gb3hpZGUgZ2FzIHNlbnNvciBbMjVdLiBMZWFkcyBhcmUKZWxlY3RyaWNhbCBsZWFkcy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA0NQpGaWd1cmUgMTYgLSBUeXBpY2FsIFBJRCBjb25maWd1cmF0aW9uIFsxOF0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1MgpGaWd1cmUgMTcgLSBDb21tZXJjaWFsIFBJRCBzZW5zb3IsIGRpYW1ldGVyIGlzIGFwcHJveGltYXRlbHkgMjAgbW0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1MwpGaWd1cmUgMTggLSBDb21tZXJjaWFsIGNhdGFseXRpYyBnYXMgc2Vuc29yLCB3aXRoIHNlbnNpbmcgYmVhZCBhbmQgcmVmZXJlbmNlIGJlYWQgWzg3XQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NwoKNwoKDExJU1QgT0YgVEFCTEVTClRhYmxlIDEgLSBDaGFyYWN0ZXJpc3RpY3Mgb2YgY2xhbmRlc3RpbmUgbGFiIG9wZXJhdG9ycyBbMV0uIExvY2FsIGRpc3RyaWJ1dGlvbiBtZWFucyB0aGUKZHJ1ZyBpcyBzb2xkIGdlb2dyYXBoaWNhbGx5IGNsb3NlIHRvIHRoZSBvcGVyYXRvciwgYW5kIG5vdCB0aHJvdWdoIGEgZGlzdHJpYnV0aW9uCm5ldHdvcmsuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE0ClRhYmxlIDIgLSBDb3JlIGVxdWlwbWVudCB1c2VkIGZvciBjbGFuZGVzdGluZSBtZXRoYW1waGV0YW1pbmUgcHJvZHVjdGlvbiwgYWxvbmcgd2l0aApzdWJzdGl0dXRlIGVxdWlwbWVudCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE1ClRhYmxlIDMgLSBTdW1tYXJ5IG9mIHJlYWN0YW50cywgc29sdmVudHMsIGNhdGFseXN0cywgYW5kIGJ5cHJvZHVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoZQpCaXJjaCByZWR1Y3Rpb24gbWV0aG9kLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDE4ClRhYmxlIDQgLSBTdW1tYXJ5IG9mIHJlYWN0YW50cywgc29sdmVudHMsIGNhdGFseXN0cywgYW5kIGJ5cHJvZHVjdHMgYXNzb2NpYXRlZCB3aXRoIFAyUApMZXVja2FyZHQtV2FsbGFjaCBtZXRob2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDIxClRhYmxlIDUgLSBTdW1tYXJ5IG9mIHJlYWN0YW50cywgc29sdmVudHMsIGNhdGFseXN0cywgYW5kIGJ5cHJvZHVjdHMgYXNzb2NpYXRlZCB3aXRoIFJlZApQIG1ldGhvZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDI0ClRhYmxlIDYgLSBMaXN0IG9mIHRhcmdldCBjaGVtaWNhbHMsIGNsYXNzaWZpZWQgYnkgbWV0aGFtcGhldGFtaW5lIG1hbnVmYWN0dXJpbmcgcHJvY2VzcwouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAyOQpUYWJsZSA3IC0gU3VtbWFyeSBvZiBsZWdpdGltYXRlIHVzZXMgb2YgY2hlbWljYWxzIHVzZWQgaW4gbmVhcmx5IGFsbCBtZXRoYW1waGV0YW1pbmUKbWFudWZhY3R1cmluZyBwcm9jZXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzMApUYWJsZSA4IC0gU3VtbWFyeSBvZiBsZWdpdGltYXRlIHVzZXMgb2YgY2hlbWljYWxzIHNwZWNpZmljIHRvIHRoZSBCaXJjaCBtYW51ZmFjdHVyaW5nCnByb2Nlc3MuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzMApUYWJsZSA5IC0gU3VtbWFyeSBvZiBsZWdpdGltYXRlIHVzZXMgb2YgY2hlbWljYWxzIHNwZWNpZmljIHRvIFAyUC1iYXNlZCBtYW51ZmFjdHVyaW5nCnByb2Nlc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDMxClRhYmxlIDEwIC0gU3VtbWFyeSBvZiBsZWdpdGltYXRlIHVzZXMgb2YgY2hlbWljYWxzIHNwZWNpZmljIHRvIFJlZCBQLWJhc2VkCm1hbnVmYWN0dXJpbmcgcHJvY2Vzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gMzIKVGFibGUgMTEgLSBDb21wYW5pZXMgc2VsbGluZyBlbGVjdHJvY2hlbWljYWwgZ2FzIHNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAzNQpUYWJsZSAxMiAtIENvbXBhbmllcyBzZWxsaW5nIGdyYXZpbWV0cmljIGdhcyBzZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDM4ClRhYmxlIDEzIC0gQ29tcGFuaWVzIG9mZmVyaW5nIEZUSVIgZ2FzIHNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQxClRhYmxlIDE0IC0gQ29tcGFuaWVzIG9mZmVyaW5nIGRpc3BlcnNpdmUgSVIgc2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNDEKVGFibGUgMTUgLSBWZW5kb3JzIG9mIElNUyBnYXMgc2Vuc29ycyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQ0ClRhYmxlIDE2IC0gQ29tcGFuaWVzIHByb2R1Y2luZyBNT1MgZ2FzIHNlbnNvcnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIDQ2ClRhYmxlIDE3IC0gQ29tcGFuaWVzIHNlbGxpbmcgb3B0aWNhbCBzZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gNTEKVGFibGUgMTggLSBDb21wYW5pZXMgb2ZmZXJpbmcgUElEIGdhcyBzZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NApUYWJsZSAxOSAtIENvbW1lcmNpYWwgcG9seW1lci1iYXNlZCBnYXMgc2Vuc29yIGNvbXBhbmllcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1NgpUYWJsZSAyMCAtIENvbXBhbmllcyBvZmZlcmluZyB0aGVybWFsIGdhcyBzZW5zb3JzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA1OApUYWJsZSAyMSAtIFNlbnNvciBwZXJmb3JtYW5jZSBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHNlbnNpbmcgdGVjaG5vbG9naWVzIHJldmlld2VkIC4uLi4uIDU5ClRhYmxlIDIyIC0gU2Vuc29yIGRldGVjdGlvbiBsaW1pdHMgZm9yIGFsbCBzZW5zaW5nIHRlY2hub2xvZ2llcyByZXZpZXdlZCwgaW5vcmdhbmljCmFuYWx5dGVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA2MAoKOAoKDFRhYmxlIDIzIC0gU2Vuc29yIGRldGVjdGlvbiBsaW1pdHMgZm9yIGFsbCBzZW5zaW5nIHRlY2hub2xvZ2llcyByZXZpZXdlZCwgb3JnYW5pYyBhbmFseXRlcwouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiA2MAoKOQoKDExJU1QgT0YgQUJCUkVWSUFUSU9OUwpCQVcKCkJ1bGsgYWNvdXN0aWMgd2F2ZQoKQ01PUwoKQ29tcGxlbWVudGFyeSBtZXRhbCBveGlkZSBzZW1pY29uZHVjdG9yCgpDV0EKCkNoZW1pY2FsIHdhcmZhcmUgYWdlbnQKCkRNU08KCkRpbWV0aHlsIHN1bGZveGlkZQoKZVYKCkVsZWN0cm9udm9sdAoKRmUyTzMKCklyb24gb3hpZGUKCkZFVAoKRmllbGQgZWZmZWN0IHRyYW5zaXN0b3IKCkZPRVcKCkZpYnJlIG9wdGljIGV2YW5lc2NlbnQgd2F2ZQoKRlBXCgpGbGV4dXJhbCBwbGF0ZSB3YXZlCgpGVElSCgpGb3VyaWVyIHRyYW5zZm9ybSBpbmZyYXJlZAoKSURUCgpJbnRlcmRpZ2l0YWwgdHJhbnNkdWNlcgoKSU1TCgpJb24gbW9iaWxpdHkgc3BlY3Ryb21ldHJ5CgpJUgoKSW5mcmFyZWQKCk1FTVMKCk1pY3JvZWxlY3Ryb21lY2hhbmljYWwgc3lzdGVtCgpNb08zCgpNb2x5YmRpYyBveGlkZQoKTU9TCgpNZXRhbCBveGlkZSBzZW1pY29uZHVjdG9yCgpNUwoKTWFzcyBzcGVjdHJvbWV0cnkKCk5FTVMKCk5hbm9lbGVjdHJvbWVjaGFuaWNhbCBzeXN0ZW0KClBMUwoKUGFydGlhbCBsZWFzdCBzcXVhcmVzCgpQZAoKUGFsbGFkaXVtCgpQRE1TCgpQb2x5ZGltZXRoeWxzaWxveGFuZQoKUElECgpQaG90b2lvbml6YXRpb24gZGV0ZWN0b3IKClB0CgpQbGF0aW51bQoKcHBiCgpQYXJ0cyBwZXIgYmlsbGlvbgoKcHBtCgpQYXJ0cyBwZXIgbWlsbGlvbgoKcHB0CgpQYXJ0cyBwZXIgdHJpbGxpb24KClFDTQoKUXVhcnR6IGNyeXN0YWwgbWljcm9iYWxhbmNlCgpSSWZTCgpSZWZsZWN0b21ldHJpYyBpbnRlcmZlcmVuY2Ugc3BlY3Ryb3Njb3B5CgpTQVcKClN1cmZhY2UgYWNvdXN0aWMgd2F2ZQoKMTAKCgxTbk8yCgpUaW4gZGlveGlkZQoKU1dOVAoKU2luZ2xlIHdhbGxlZCBuYW5vdHViZQoKVElDCgpUb3hpYyBpbmR1c3RyaWFsIGNoZW1pY2FsCgpUSVJGCgpUb3RhbCBpbnRlcm5hbCByZWZsZWN0aW9uIGZsdW9yZXNjZW5jZQoKVFNNCgpUaGlja25lc3Mgc2hlYXIgbW9kZQoKzrxUQVMKCk1pY3JvLXRvdGFsIGFuYWx5c2lzIHN5c3RlbQoKVVYKClVsdHJhdmlvbGV0CgpWT0MKClZvbGF0aWxlIG9yZ2FuaWMgY29tcG91bmQKCldPMwoKVHVuZ3N0ZW4gb3hpZGUKClpuTwoKWmluYyBveGlkZQoKMTEKCgxJbnRyb2R1Y3Rpb24KVGhlIHByaW1hcnkgb2JqZWN0aXZlIG9mIHRoZSBvdmVyYWxsIHByb2plY3QgaXMgdG8gZGV2ZWxvcCB0ZWNobm9sb2d5LWJhc2VkIHNlbnNpbmcgdG9vbHMKdGhhdCB3aWxsIGFzc2lzdCBsYXcgZW5mb3JjZW1lbnQgdW5pdHMgaW4gdW5jb3ZlcmluZyBjbGFuZGVzdGluZSBtZXRoYW1waGV0YW1pbmUKbGFib3JhdG9yaWVzIGFuZCBjaGVtaWNhbCB3YXN0ZSBkdW1wcy4gVGhlIHJvbGUgb2YgdGhpcyByZXBvcnQgaXMgdG8gaGVscCBhc3Nlc3MgdGhlCmZlYXNpYmlsaXR5IG9mIHN1Y2ggYSBwcm9qZWN0LiBUaGUgcmVwb3J0IGhhcyBiZWVuIGJyb2tlbiBkb3duIGludG8gdGhyZWUgbWFpbiBzZWN0aW9uczoKc2VjdGlvbiBBLCB3aGljaCBkZXNjcmliZXMgY29tbW9uIG1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyBhbmQKaWRlbnRpZmllcyB0YXJnZXQgY2hlbWljYWxzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBwcm9jZXNzZXMsIHNlY3Rpb24gQiwgd2hpY2ggZGVzY3JpYmVzCmNoZW1pY2FsIHNlbnNpbmcgdGVjaG5vbG9neSBjdXJyZW50bHkgaW4gdGhlIGNvbW1lcmNpYWwgb3IgcmVzZWFyY2ggc3RhZ2UsIGFuZCBzZWN0aW9uIEMsCndoaWNoIGFzc2Vzc2VzIHRoZSBzZW5zaW5nIHRlY2hub2xvZ3kgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2plY3QgYW5kIHByb3ZpZGVzCnJlY29tbWVuZGF0aW9ucyBmb3IgbW92aW5nIGZvcndhcmQuClRoZSBhcHByb2FjaCB0YWtlbiBmb3IgZm9ybXVsYXRpbmcgdGhlIHJlY29tbWVuZGF0aW9ucyBpcyBhcyBmb2xsb3dzOgoxLiBJZGVudGlmeSBhIGxpc3Qgb2YgdGFyZ2V0IGNoZW1pY2FscyBhbmQgcG9zc2libGUgY29uY2VudHJhdGlvbnMsIGJhc2VkIG9uOgphLiBDb21tb24gbWV0aGFtcGhldGFtaW5lIG1hbnVmYWN0dXJpbmcgcHJvY2Vzc2VzLCBpbmNsdWRpbmcgcmVsZWFzZWQKY2hlbWljYWxzIGFuZCBzZXF1ZW5jZSBvZiByZWxlYXNlIChzaWduYXR1cmUpLgpiLiBDaGFyYWN0ZXJpc3RpY3MgYW5kIGxheW91dCBvZiBjbGFuZGVzdGluZSBkcnVnIGxhYnMgYW5kIGNoZW1pY2FsIHdhc3RlCmR1bXBzLgoyLiBBbmFseXplIHNlbnNpbmcgdGVjaG5vbG9neSB0byBkZXRlY3QgdGhlIHRhcmdldCBjaGVtaWNhbHMsIGluY2x1ZGluZyBjdXJyZW50IGFuZApuZXh0IGdlbmVyYXRpb24gY29tbWVyY2lhbCBnYXMgc2Vuc29ycywgYXMgd2VsbCBhcyBnYXMgc2Vuc29ycyB0aGF0IGFyZSBjdXJyZW50bHkKdW5kZXJnb2luZyByZXNlYXJjaGVkIGVuaGFuY2VtZW50cywgdXNpbmcgcGVyZm9ybWFuY2UgbWV0cmljcyBzdWNoIGFzIGxvd2VzdApkZXRlY3Rpb24gbGltaXQsIHJlc3BvbnNlIHRpbWUsIGV0Yy4KClBhcnQgQTogRGV0ZXJtaW5pbmcgdGhlIENoZW1pY2FscyBpbnZvbHZlZApDbGFuZGVzdGluZSBNZXRoYW1waGV0YW1pbmUgUHJvZHVjdGlvbgoKaW4KClRoZSBOZWVkcyBUcmlhbmdsZSBvZiBjbGFuZGVzdGluZSBsYWJzLCBhY2NvcmRpbmcgdG8gZm9yZW5zaWMgZXhwZXJ0cywgY29uc2lzdHMgb2YgdGhyZWUKa2V5IGNvbXBvbmVudHM6IGNoZW1pY2FscywgZXF1aXBtZW50LCBhbmQga25vd2xlZGdlIFsxXS4gV2l0aGluIHRoZSBjb250ZXh0IG9mIHRoaXMKcmVwb3J0LCBlYWNoIG9mIHRoZXNlIHRocmVlIGNvbXBvbmVudHMgcGxheXMgc29tZSByb2xlIGluIHRoZSBkZXRlY3RhYmlsaXR5IG9mIGEgcGFydGljdWxhcgpsYWJvcmF0b3J5LiBUaGUgbG9jYXRpb24sIGxhYiBvcGVyYXRvciwgYW5kIGVxdWlwbWVudCByZXF1aXJlZCBmb3IgY2xhbmRlc3RpbmUKbWV0aGFtcGhldGFtaW5lIHByb2R1Y3Rpb24gaXMgdGhlIGZvY3VzIG9mIFNlY3Rpb24gMSwgd2hpbGUgdGhlIGNoZW1pY2FscyByZXF1aXJlZCBmb3IKdGhlIGRydWcgc3ludGhlc2lzIGFyZSBkZXRhaWxlZCBpbiBTZWN0aW9uIDIgd2l0aCBhIGZvY3VzIG9uIHRoZSBtb3N0IGNvbW1vbgptZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMuCgoxLiBDaGFyYWN0ZXJpc3RpY3Mgb2YgQ2xhbmRlc3RpbmUgRHJ1ZyBMYWJvcmF0b3JpZXMKVGhlIGNoYXJhY3RlcmlzdGljcyBvZiBjbGFuZGVzdGluZSBkcnVnIGxhYm9yYXRvcmllczogbG9jYXRpb24sIGVxdWlwbWVudCwgYW5kIG9wZXJhdG9yLApoYXZlIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgYW1vdW50IG9mIGdhcyByZWxlYXNlZCBkdXJpbmcgdGhlIGRydWcgcHJvZHVjdGlvbiBjeWNsZS4gRm9yCmV4YW1wbGUsIHNtYWxsIGNsYW5kZXN0aW5lIGxhYnMgYWNjb3VudCBmb3IgZmFyIG1vcmUgZXhwbG9zaW9ucyBhbmQgZmlyZXMgKHdpdGggb25lIG1ham9yCnJlYXNvbiBiZWluZyBtb3JlIGZyZXF1ZW50IGFjY2lkZW50YWwgcmVsZWFzZXMgb2YgZXhwbG9zaXZlIGdhc2VzKSBiZWNhdXNlIGxlc3Mtc2tpbGxlZArigJxjb29rc+KAnSBvcGVyYXRlIHRoZSBsYWJzIHVzaW5nIG1vcmUgcHJpbWl0aXZlIGVxdWlwbWVudCBhbmQgZmFjaWxpdGllcyBbMl0uCkRhdGEgaXMgYXZhaWxhYmxlIGluIHRoZSBsaXRlcmF0dXJlIG9uIHR5cGljYWwgY29uY2VudHJhdGlvbnMgb2YgY2hlbWljYWxzIGluc2lkZQpob21lcy9hcGFydG1lbnRzIHVzZWQgZm9yIGNvbnRyb2xsZWQgbWV0aGFtcGhldGFtaW5lIHN5bnRoZXNlcy4gSG93ZXZlciwgbm8gZGF0YQpleGlzdHMgZm9yIGNoZW1pY2FsIGNvbmNlbnRyYXRpb25zIHdpdGhpbiB0aGUgdmljaW5pdHkgb2YgdGhlIGNvb2sgc2l0ZSBvdXRzaWRlIHRoZSBidWlsZGluZywKd2hpY2ggaXMgbW9yZSByZWxldmFudCB0byB0aGlzIHN0dWR5LiBUaGlzIGZhY3Qgd2FzIGNvbmZpcm1lZCBieSBlbWFpbCBjb3JyZXNwb25kZW5jZQp3aXRoIERyLiBKb2huIE1hcnR5bnksIGEgcmVzZWFyY2hlciB3aXRoIHRoZSBOYXRpb25hbCBKZXdpc2ggTWVkaWNhbCBDZW50ZXIsIFUuUy5BLiwKCgx3aG8gaGFzIHB1Ymxpc2hlZCBzZXZlcmFsIHJlcG9ydHMgb24gY2hlbWljYWwgY29uY2VudHJhdGlvbnMgYXQgY29udHJvbGxlZAptZXRoYW1waGV0YW1pbmUg4oCcY29va3PigJ0uIEl0IGlzIGV4cGVjdGVkIHRoYXQgZW52aXJvbm1lbnRhbCBmYWN0b3JzIHN1Y2ggYXMgaHVtaWRpdHksCndpbmQgc3BlZWQsIGV0Yy4gd2lsbCBzaWduaWZpY2FudGx5IGFmZmVjdCB0aGUgYW1iaWVudCBjb25jZW50cmF0aW9uIG9mIGNoZW1pY2Fscy4gU2luY2UKYW4gYWN0dWFsIGNvbnRyb2xsZWQgY29vayBjb3VsZCBub3QgYmUgY29uZHVjdGVkIGluIG9yZGVyIHRvIG1lYXN1cmUgdGhlIGNvbmNlbnRyYXRpb25zCm9mIHRoZSByZWxlYXNlZCBjaGVtaWNhbHMgb3V0c2lkZSB0aGUgbGFib3JhdG9yeSwgaXQgY2FuIG9ubHkgYmUgYXNzdW1lZCB0aGF0IHRoZSBnYXMKY29uY2VudHJhdGlvbiBvdXRzaWRlIHRoZSBidWlsZGluZyB3aWxsIGxpa2VseSBiZSBhdCBsZWFzdCB0d28gdG8gdGhyZWUgb3JkZXJzIG9mIG1hZ25pdHVkZQpsb3dlciB0aGFuIHRoZSBhdmVyYWdlIGNvbmNlbnRyYXRpb24gcHJlc2VudCBpbnNpZGUsIHVzaW5nIHRoZSB1cHdpbmQgY29uY2VudHJhdGlvbiBhdAp0aGUgZnJvbnQgZG9vciBvZiBhIGNvbnRyb2xsZWQgY29vayBhcyBhIGdlbmVyYWwgcnVsZSBvZiB0aHVtYi4gVGhpcyBlc3RpbWF0aW9uIGlzIGJhc2VkCm9uIGV4cGVyaW1lbnRzIHByZXNlbnRlZCBpbiBbM10uCgoxLjEgTG9jYXRpb24KQ2xhbmRlc3RpbmUgbGFicyBwcm9kdWNpbmcgbWV0aGFtcGhldGFtaW5lLCB2ZXJzdXMgb3RoZXIgc3ludGhldGljIGRydWdzIHN1Y2ggYXMKRWNzdGFzeSwgYWNjb3VudGVkIGZvciB0aGUgbWFqb3JpdHkgb2YgbGFiIHNlaXp1cmVzIGluIENhbmFkYSwgd2l0aCBvdmVyIDgwJSBpbiAyMDA0IFs0XS4KQ2xhbmRlc3RpbmUgbGFiIGFjdGl2aXR5IGlzIGdyZWF0ZXN0IGluIEJyaXRpc2ggQ29sdW1iaWEgd2l0aCA2NiUgb2YgQ2FuYWRh4oCZcyBzZWl6dXJlcyBpbgoyMDA1LCBmb2xsb3dlZCBieSBPbnRhcmlvLCBRdWViZWMsIEFsYmVydGEsIGFuZCBTYXNrYXRjaGV3YW4uIENsYW5kZXN0aW5lIGRydWcgbGFicwphcmUgZm91bmQgaW4gdmVyeSBkaWZmZXJlbnQgc2V0dGluZ3MgaW5jbHVkaW5nIHJlbnRhbCBwcm9wZXJ0aWVzLCBtb3RlbCByb29tcywgZXZlbiBoaWdoZW5kIGhvdGVsIHJvb21zLCB2ZWhpY2xlcyBhbmQgbW90b3IgaG9tZXMsIGFzIHdlbGwgYXMgaW4gdGhlIHJlbW90ZSBydXJhbCBhcmVhcyBbNV0uIEluCjIwMDUsIExvd2VyIE1haW5sYW5kIHBvbGljZSByZXNwb25kZWQgdG8gb3ZlciAzMCBkaXNjb3ZlcmVkIGNsYW5kZXN0aW5lIGRydWcgbGFicywgMyBvZgp3aGljaCB3ZXJlIGxvY2F0ZWQgaW4gVmFuY291dmVyIFs1XS4gVGhlIG1ham9yaXR5IG9mIHRoZXNlIGNsYW5kZXN0aW5lIGRydWcgbGFicyB3ZXJlCmZvdW5kIGluIHN1YnVyYmFuIG9yIHNlbWktcnVyYWwgYXJlYXMuIFRoaXMgc3RhdGlzdGljIGlzIGluIGFncmVlbWVudCB3aXRoIHRoZSBsb2NhbApSQ01Q4oCZcyBvYnNlcnZhdGlvbiB0aGF0IGNsYW5kZXN0aW5lIOKAnHN1cGVyLWxhYnPigJ0gaGF2ZSBiZWNvbWUgbW9yZSBjb21tb24gdGhhbgpzbWFsbC1zY2FsZSBsYWJzIGluIHJlY2VudCB5ZWFycy4gQSBzdXBlci1sYWIgaXMgZGVmaW5lZCBhcyBhIGNsYW5kZXN0aW5lIGxhYiB0aGF0IHByb2R1Y2VzLApvbiBhdmVyYWdlLCBtb3JlIHRoYW4gMTAgcG91bmRzIG9mIG1ldGhhbXBoZXRhbWluZSBwZXIgcHJvZHVjdGlvbiBjeWNsZSBbMV0uIEFzCm1lbnRpb25lZCBlYXJsaWVyLCBtb3N0IGV4cGxvc2lvbnMgKGFuZCB0aGUgYWNjaWRlbnRhbCBnYXMgcmVsZWFzZXMgdGhhdCBjYXVzZSB0aGVtKQpvY2N1ciBpbiBzbWFsbC1zY2FsZSBsYWJzLiBTdXBlci1sYWJzIG1heSBiZSBtb3JlIGRpZmZpY3VsdCB0byBkZXRlY3Qgc2luY2UgdGhleSBhcmUgYmV0dGVyCm9yZ2FuaXplZCBhbmQgZW1wbG95IGFkZGl0aW9uYWwgZXF1aXBtZW50IHRvIHN1cHByZXNzIHRoZSByZWxlYXNlIG9mIGdhc2VzLiBTdXBlci1sYWJzCmFyZSB0eXBpY2FsbHkgbG9jYXRlZCBpbiBsZXNzIGRlbnNlbHkgcG9wdWxhdGVkIGFyZWFzIHRvIG1pbmltaXplIHRoZSBjaGFuY2VzIG9mIGRldGVjdGlvbi4KCjEuMiBPcGVyYXRvcnMKQWNjb3JkaW5nIHRvIENocmlzdGlhbiwgdGhlcmUgYXJlIHRocmVlIG1haW4gdHlwZXMgb2YgY2xhbmRlc3RpbmUgbGFiIG9wZXJhdGlvbnM6IHNtYWxsc2NhbGUsIGNvbW1lcmNpYWwsIGFuZCBlZHVjYXRlZCBbMV0uIE9wZXJhdG9ycyBvZiBzbWFsbC1zY2FsZSBsYWJzIGFyZSB0eXBpY2FsbHkKbWV0aGFtcGhldGFtaW5lIHVzZXJzIHRoZW1zZWx2ZXMuIFRoZXkgcHJvZHVjZSBtZXRoYW1waGV0YW1pbmUgZm9yIHRoZWlyIG93bgpjb25zdW1wdGlvbiBhbmQgYWRkaXRpb25hbCBzbWFsbCBhbW91bnRzIHRvIHNlbGwuIE9wZXJhdG9ycyBvZiBjb21tZXJjaWFsIGxhYm9yYXRvcmllcwphcmUgbW90aXZhdGVkIHByaW1hcmlseSBieSBmaW5hbmNpYWwgZ2FpbiwgYW5kIHJ1biBtdWx0aS1zaXRlIG9wZXJhdGlvbnMgdXNpbmcgb3B0aW1pemVkCmluZHVzdHJpYWwtc2NhbGUgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMuIEVkdWNhdGVkIG9wZXJhdG9ycyBwb3NzZXNzIGZvcm1hbCBlZHVjYXRpb24KaW4gY2hlbWlzdHJ5IG9yIG9uLXRoZS1qb2IgdHJhaW5pbmcsIGFuZCBhcmUgdGhlIGxlYXN0LWVuY291bnRlcmVkIHR5cGUgb2YgbGFiIG9wZXJhdG9yLgpUaGV5IG1heSBhY3QgYXMgY29uc3VsdGFudHMgZm9yIHNtYWxsLXNjYWxlIG9yIGNvbW1lcmNpYWwgbGFiIG9wZXJhdG9ycy4gVGFibGUgMQpzdW1tYXJpemVzIHRoZSBsaWtlbHkgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB0aHJlZSB0eXBlcyBvZiBsYWIgb3BlcmF0b3JzLgoKMTMKCgxUYWJsZSAxIC0gQ2hhcmFjdGVyaXN0aWNzIG9mIGNsYW5kZXN0aW5lIGxhYiBvcGVyYXRvcnMgWzFdLiBMb2NhbCBkaXN0cmlidXRpb24gbWVhbnMgdGhlIGRydWcgaXMgc29sZApnZW9ncmFwaGljYWxseSBjbG9zZSB0byB0aGUgb3BlcmF0b3IsIGFuZCBub3QgdGhyb3VnaCBhIGRpc3RyaWJ1dGlvbiBuZXR3b3JrLgpDaGFyYWN0ZXJpc3RpYwoKU21hbGwtU2NhbGUKT3BlcmF0b3IKCkNvbW1lcmNpYWwKT3BlcmF0b3IKCkVkdWNhdGVkIE9wZXJhdG9yCgpDaGVtaWNhbCBlZHVjYXRpb24KCk5vCgpZZXMKClllcwoKRHJ1ZyB1c2VyCgpZZXMKCk1heWJlCgpNYXliZQoKRm9yIHByb2ZpdAoKTm8KClllcwoKTWF5YmUKCkxlZ2l0aW1hdGUgY2hlbWljYWwgc3VwcGx5CgpObwoKTWF5YmUKClllcwoKU2luZ2xlIGxvY2F0aW9uIG9wZXJhdGlvbgoKWWVzCgpObwoKWWVzCgpMb2NhbCBkaXN0cmlidXRpb24KClllcwoKTm8KCk1heWJlCgpUaGUgdHlwZSBvZiBsYWIgb3BlcmF0b3IgaGVhdmlseSBpbmZsdWVuY2VzIHRoZSBhbW91bnQgb2YgZ2FzIHJlbGVhc2VkIGR1cmluZyBkcnVnCnByb2R1Y3Rpb24uIEZvciBleGFtcGxlLCBlZHVjYXRlZCBsYWIgb3BlcmF0b3JzIHdpbGwgYmUgbW9yZSBsaWtlbHkgdG8gdXNlIHZlbnRpbGF0aW9uIHRvCnJlZHVjZSB0aGUgbGV2ZWwgb2YgdG94aWMgYW5kL29yIGV4cGxvc2l2ZSBnYXNlcyBpbnNpZGUgdGhlIGxhYi4gSW4gYSBzdHVkeSBieSBNYXJ0eW55IGV0CmFsLiwgdGhlIHJlc2VhcmNoZXJzIGZvdW5kIHRoYXQgYnkgc2ltcGx5IG9wZW5pbmcgYSB3aW5kb3cgYW5kIHBsYWNpbmcgYSBmYW4gbmV4dCB0byBpdCwKdGhlIGNvbmNlbnRyYXRpb24gb2YgYSByZWFjdGFudCBnYXMgaW5zaWRlIHRoZSBmYWNpbGl0eSB3YXMgZHJhc3RpY2FsbHkgcmVkdWNlZCBbM10uIEZvciBhCmdhcyBkZXRlY3Rpb24gc2NoZW1lLCB0aGlzIHZlbnRpbGF0aW9uIHdvdWxkIGJlIGFkdmFudGFnZW91cyBhcyB0aGUgb3V0ZG9vcgpjb25jZW50cmF0aW9uIG9mIGdhcyB3b3VsZCBiZSBpbmNyZWFzZWQuCgoxLjMgRXF1aXBtZW50ClRoZSBjaG9pY2Ugb2YgZXF1aXBtZW50IHVzZWQgaW4gYSBjbGFuZGVzdGluZSBkcnVnIGxhYiBvcGVyYXRpb24gZGVwZW5kcyBoaWdobHkgb24gdGhlCm1hbnVmYWN0dXJpbmcgcHJvY2VzcyB1dGlsaXplZCB0byBwcm9kdWNlIHRoZSBkcnVnOyB0aGUgc3BlY2lmaWNzIG9mIHRoZSBtb3N0IGNvbW1vbgpwcm9kdWN0aW9uIHJvdXRlcyBhcmUgZXhwbGFpbmVkIGluIHNlY3Rpb24gMi4gU2NpZW50aWZpYy1ncmFkZSBlcXVpcG1lbnQsIGlmIGF2YWlsYWJsZSwgaXMKcHJlZmVycmVkLCBhbHRob3VnaCBjbGFuZGVzdGluZSBsYWIgb3BlcmF0b3JzIHdpbGwgb2NjYXNpb25hbGx5IHVzZSBzdWJzdGl0dXRlcyB0byBhdm9pZApkZXRlY3Rpb24uIFVzaW5nIHNjaWVudGlmaWMtZ3JhZGUgZXF1aXBtZW50IG1heSByZXN1bHQgaW4gbGVzcyBmcmVxdWVudCByZWxlYXNlcyBvZiBnYXNlcwp3aGljaCBtYWtlcyBkZXRlY3Rpb24gbW9yZSBkaWZmaWN1bHQsIHdoaWxlIHN1YnN0aXR1dGUgZXF1aXBtZW50IG1heSBiZSBtb3JlIHByb25lIHRvCmZhaWx1cmUuIEFsbCBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyBjYW4gYmUgYnJva2VuIGRvd24gaW50byBmb3VyIGRpc3RpbmN0IHByb2Nlc3NlczoKZXh0cmFjdGlvbiwgY29udmVyc2lvbiwgc3ludGhlc2lzLCBhbmQgdGFibGV0aW5nIFsxXS4gTGFicyBjYW4gc3BlY2lhbGl6ZSBpbiBvbmUgb2YgdGhlCnByb2Nlc3Nlcywgb3IgcGVyZm9ybSBhIGNvbWJpbmF0aW9uIG9mIHByb2Nlc3Nlcy4gRXh0cmFjdGlvbiByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YKcmV0YWluaW5nIGEgcGFydGljdWxhciBpbmdyZWRpZW50IGZyb20gYSBtaXh0dXJlIHdoaWxlIHJlbW92aW5nIHRoZSByZXN0LiBUaGUgcHJvY2VzcyBvZgp0cmFuc2Zvcm1pbmcgYSBzcGVjaWZpYyBtYXRlcmlhbCBmcm9tIG9uZSBmb3JtIHRvIGFub3RoZXIgaXMgY29udmVyc2lvbjsgdGhpcyBpbmNsdWRlcwpjaGFuZ2luZyB0aGUgZHJ1ZyBmcm9tIGl0cyBmcmVlYmFzZSBmb3JtIHRvIHNhbHQgZm9ybSBvciB2aWNlIHZlcnNhLiBTeW50aGVzaXMgaW52b2x2ZXMKY2hlbWljYWxseSByZWFjdGluZyBtb2xlY3VsZXMgb3IgcGFydHMgb2YgbW9sZWN1bGVzIHRvIGNyZWF0ZSBuZXcgbW9sZWN1bGVzOyB0aGlzIGlzIHRoZQprZXkgc3RlcCBpbiB0aGUgZmFicmljYXRpb24gcHJvY2Vzcy4gVGhlIGZpbmFsIHByb2Nlc3MgaXMgdGFibGV0aW5nLCB3aGVyZSB0aGUgZmluaXNoZWQKcHJvZHVjdCBpcyBwbGFjZWQgaW50byBzbWFsbGVyLCBtb3JlIHNhbGFibGUgdW5pdHMgc3VjaCBhcyB0YWJsZXRzIGZvciBkaXN0cmlidXRpb24uClRoZSBjb3JlIHBpZWNlcyBvZiBlcXVpcG1lbnQgdXNlZCBmb3IgdGhlIHByb2R1Y3Rpb24gb2YgbWV0aGFtcGhldGFtaW5lIGFyZQpjb2xsZWN0aXZlbHkgcmVmZXJyZWQgdG8gYXMg4oCcdGhlIGtpdOKAnSBbNl0sIHdoaWNoIGluY2x1ZGVzOgp4CgpTZXZlcmFsIHJvdW5kIGJvdHRvbSBmbGFza3MKCngKCkNsYWlzZW4gYWRhcHRlcgoKeAoKU3RpbGwgaGVhZCB3aXRoIHRoZXJtb21ldGVyIGhvbGRlciwgYW5kIHRoZXJtb21ldGVyCgp4CgpDb25kZW5zZXIKCjE0CgoMeAoKVmFjdXVtIGFkYXB0ZXIKCngKClNlcGFyYXRvcnkgZnVubmVsCgpUaGUgcGllY2VzIGFsbCBoYXZlIGdyb3VuZCBnbGFzcyBqb2ludHMsIHNvIHRoZSBlbnRpcmUgc2V0dXAgY2FuIGJlIHJlY29uZmlndXJlZCBmb3IKZGlmZmVyZW50IHByb2Nlc3Nlcy4gVXN1YWxseSB0aGlzIHNjaWVudGlmaWMtZ3JhZGUgZXF1aXBtZW50IGlzIHN0b2xlbiBvciBkaXZlcnRlZCBmcm9tCmxlZ2l0aW1hdGUgc291cmNlcy4gVGFibGUgMiBsaXN0cyB0aGUgc2NpZW50aWZpYy1ncmFkZSBlcXVpcG1lbnQgdXNlZCBpbiBjbGFuZGVzdGluZSBkcnVnCm1hbnVmYWN0dXJlLCB0aGVpciBzdWJzdGl0dXRlcywgYW5kIHB1cnBvc2UuClRhYmxlIDIgLSBDb3JlIGVxdWlwbWVudCB1c2VkIGZvciBjbGFuZGVzdGluZSBtZXRoYW1waGV0YW1pbmUgcHJvZHVjdGlvbiwgYWxvbmcgd2l0aCBzdWJzdGl0dXRlCmVxdWlwbWVudApQcm9jZXNzCgpTY2llbnRpZmljLWdyYWRlCkVxdWlwbWVudAoKRXhhbXBsZXMgb2YKRXF1aXBtZW50CgpSZWZsdXhpbmcKCngKClJlYWN0aW9uIGZsYXNrCgp4Cgp4CgpDb25kZW5zZXIKCngKCkhlYXRpbmcgbWFudGxlIHdpdGgKcmhlb3N0YXQKCkdsYXNzIGNvb2t3YXJlIG9yIHBvdCwKc3RhaW5sZXNzLXN0ZWVsIGNhbmlzdGVyLApjb3BwZXIgcmVhY3Rpb24gcG90IGlmCnN0cm9uZywgaG90IGFjaWRzIHVzZWQKCngKClBvdCBsaWQsIG1ha2VzaGlmdApjb25kZW5zZXIgZnJvbSBzdGFpbmxlc3NzdGVlbCBvciBQVkMgcGlwZSwgdGVmbG9uY29hdGVkIGNvcHBlciBjb25kZW5zZXIKaWYgc3Ryb25nLCBob3QgYWNpZHMgdXNlZAoKeAoKU3RvdmUgb3IgaG90IHBsYXRlLCBhbG9uZwp3aXRoIG9pbCBiYXRoLCBjb3VudGVyZHJvcApkZWVwIGZyeWVycyBhcyBvaWwgYmF0aHMKCngKClNpbWlsYXIgdG8gYWJvdmUKCngKClNpbWlsYXIgdG8gYWJvdmUKCkRpc3RpbGxhdGlvbgoKeAoKUmVhY3Rpb24gZmxhc2ssCmNvbmRlbnNlciwgaGVhdGluZwptYW50bGUgd2l0aCByaGVvc3RhdAoKU3Vic3RpdHV0ZQoKUHVycG9zZQp4CgpDb250cm9sbGVkIGJvaWxpbmcKcHJvY2Vzcywgd2hlcmUKZXZhcG9yYXRlZCBsaXF1aWQKY29uZGVuc2VzIGFuZApyZXR1cm5zIHRvIHJlYWN0aW9uCm1peHR1cmUuCgp4CgpTZXBhcmF0ZSBhIGxpcXVpZApmcm9tIGEgc29saWQgb3Igb3RoZXIKbGlxdWlkLCB1c2luZwpldmFwb3JhdGlvbiBmb2xsb3dlZApieSBjb25kZW5zYXRpb24uCkV4cGxvaXRzIGRpZmZlcmVuY2VzCmluIGJvaWxpbmcgcG9pbnRzLgoKeAoKU2Vjb25kIGZsYXNrCgpIeWRyb2dlbmF0aW9uCgp4CgpIeWRyb2dlbmF0b3IgKOKAnHRoZQpib21i4oCdKQoKeAoKQWx1bWludW0gZmlyZQpleHRpbmd1aXNoZXIsIGVtcHRpZWQsCmNvYXRlZCBvbiBpbnNpZGUgd2l0aApUZWZsb24tYmFzZWQgcGFpbnQKCngKCkFkZHMgaHlkcm9nZW4gdG8gYQpzdWJzdGFuY2UgdW5kZXIgaGlnaApwcmVzc3VyZSB0byBjb252ZXJ0CmZyb20gb25lIHN1YnN0YW5jZQp0byBhbm90aGVyLCB1c2VmdWwgZm9yCmluZHVzdHJpYWwtc2NhbGUKbWFudWZhY3R1cmUuCgpFeHRyYWN0aW9uCgp4CgpWYWN1dW0gZmlsdHJhdGlvbiB1bml0Cgp4Cgp4Cgp4CgpTZXBhcmF0b3J5IGZ1bm5lbAoKQWlyIGNvbXByZXNzb3IgZnJvbQpmcmlkZ2Ugb3IgYWlyIGNvbmRpdGlvbmVyCnVzZWQgdG8gZ2VuZXJhdGUgdmFjdXVtLAphc3BpcmF0b3IgdXNlZCB3aXRoIGNvbGQKcnVubmluZyB3YXRlcgoKVGhlIHBoeXNpY2FsIGFuZC9vcgpjaGVtaWNhbCBwcm9wZXJ0aWVzCm9mIGEgY29tcG9uZW50IGFyZQp1c2VkIHRvIHNlcGFyYXRlIGl0CmZyb20gdGhlIHdob2xlLgoKeAoKVHVya2V5IGJhc3Rlciwgd2F0ZXIKYm90dGxlIHdpdGggc3F1aXJ0IHRvcAoKMTUKCgxGaWd1cmUgMSAtIEVxdWlwbWVudCB1c2VkIGFzIHN1YnN0aXR1dGVzIGZvciBzY2llbnRpZmljLWdyYWRlIGVxdWlwbWVudCBpbiBjbGFuZGVzdGluZSBkcnVnCm1hbnVmYWN0dXJlLCAoYSkgb2lsIGJhdGggcmVmbHV4IChiKSBiZWVyIGtlZyByZWFjdGlvbiB2ZXNzZWwgKGMpIGNvcHBlciB0dWJlIGNvbmRlbnNlciBbMV0KCjIuIENvbW1vbgpQcm9jZXNzZXMKCkNsYW5kZXN0aW5lCgpNZXRoYW1waGV0YW1pbmUKCk1hbnVmYWN0dXJpbmcKCkFsbCBtZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBtZXRob2RzIGluY2x1ZGUgYSBzZXF1ZW5jZSBvZiB0aGUgZm91ciBtYWluCnByb2Nlc3Mgc3RhZ2VzIG91dGxpbmVkIGFib3ZlLiBUaGUgY2hlbWljYWxzIHJlbGVhc2VkIGR1cmluZyB0aGUgZGlmZmVyZW50IHN0YWdlcyBhcmUKc3BlY2lmaWMgdG8gdGhlIHJlc3BlY3RpdmUgbWV0aG9kLiBUaGVyZSBhcmUgdHdvIGNoZW1pY2FsIHNpZ25hdHVyZXMgdGhhdCBjYW4gYmUKYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBtYW51ZmFjdHVyaW5nIG1ldGhvZC4gRmlyc3QgaXMgdGhlIHNpZ25hdHVyZSBhdHRhaW5lZCBmcm9tCmFueSBvbmUgcGFydGljdWxhciBtZWFzdXJlbWVudCBvZiBhaXJib3JuZSBjaGVtaWNhbHM7IGkuZS4sIHRoZSByZWxhdGl2ZSBjb25jZW50cmF0aW9uIG9mCnRoZSB2YXJpb3VzIGdhc2VzIGluIGFueSBvbmUgbWVhc3VyZWQgc2FtcGxlLiBUaGUgb3RoZXIgaXMgdGhlIHRlbXBvcmFsIHNpZ25hdHVyZSwgd2hpY2gKaXMgYXR0YWluZWQgZnJvbSBzZXZlcmFsIG1lYXN1cmVtZW50cyBvdmVyIGFuIGV4dGVuZGVkIHBlcmlvZCBvZiB0aW1lLiBJbiB0aGlzIGNhc2UsIHRoZQpyZWxlYXNlIHNlcXVlbmNlIG9mIHRoZSBkaWZmZXJlbnQgY2hlbWljYWxzIHJlcHJlc2VudHMgdGhlIHNpZ25hdHVyZSBvZiB0aGF0IG1ldGhvZC4gQQptYXhpbXVtIGxldmVsIG9mIGNlcnRhaW50eSBhYm91dCB0aGUgbmF0dXJlIG9mIHRoZSBzb3VyY2UgY2FuIGJlIGF0dGFpbmVkIGlmIGEKMTYKCgxtZWFzdXJlbWVudCBvZiBjaGVtaWNhbCBjb25jZW50cmF0aW9ucyBvdmVyIHRpbWUgY2FuIGJlIG1hdGNoZWQgd2l0aCB0aGUgdGVtcG9yYWwKc2lnbmF0dXJlIG9mIGEgcHJvZHVjdGlvbiBwcm9jZXNzLiBUaGUgcHJvZHVjdGlvbiBzdGVwcywgYXMgd2VsbCBhcyB0aGUgYXNzb2NpYXRlZApzaWduYXR1cmVzIGFyZSBvdXRsaW5lZCBiZWxvdyBmb3IgdGhlIGRpZmZlcmVudCBtYW51ZmFjdHVyaW5nIG1ldGhvZHMuCgoyLjEgQmlyY2ggUmVkdWN0aW9uIE1ldGhvZAoyLjEuMSBCYWNrZ3JvdW5kClRoZSBCaXJjaCByZWR1Y3Rpb24gbWV0aG9kIGlzIG9uZSBvZiBzZXZlcmFsIHBvcHVsYXIgZXBoZWRyaW5lL3BzZXVkb2VwaGVkcmluZS1iYXNlZAptZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMuIEl0IHVzZXMgZXBoZWRyaW5lIG9yIHBzZXVkb2VwaGVkcmluZSBmcm9tCm92ZXIgdGhlIGNvdW50ZXIgY29sZCBtZWRpY2luZSwgd2hlcmUgaXQgaXMgZm91bmQgYXMgYW4gaW5ncmVkaWVudCBpbiB2YXJpb3VzIG1lZGljYXRpb25zCnN1Y2ggYXMgU3VkYWZlZCDCri4gQSBzaW1wbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByb2Nlc3MgaXMgc2hvd24gaW4gRmlndXJlIDIuIEl0IHVzZXMKbGFyZ2UgYW1vdW50cyBvZiBhbmh5ZHJvdXMgYW1tb25pYSBhbmQgdGhlcmVmb3JlLCBpdCBpcyBhbHNvIGtub3duIGFzIHRoZSBhbmh5ZHJvdXMKYW1tb25pYSBtZXRob2QuIEluZm9ybWFsbHkgdGhlIEJpcmNoIG1ldGhvZCBpcyBhbHNvIGtub3duIGFzIHRoZSDigJxOYXpp4oCdIG1ldGhvZCBbM10uClRoZSBtZXRob2QgcHJvZHVjZXMgaGlnaCBxdWFsaXR5IHByb2R1Y3QsIGNhbiBiZSBlYXNpbHkgc2NhbGVkIHVwIGZvciBpbmR1c3RyaWFsCnByb2R1Y3Rpb24gdXNpbmcgcGFyYWxsZWwgcHJvY2Vzc2VzLCBoYXMgYSBzaG9ydCByZWFjdGlvbiB0aW1lIChvbiB0aGUgb3JkZXIgb2YgdGVucyBvZgptaW51dGVzKSwgYW5kIHRoZSByZWFjdGFudHMgYW5kIGNhdGFseXN0cyBhcmUgcmVsYXRpdmVseSBlYXN5IHRvIG9idGFpbi4gVmFyaW91cyBmb3JtcyBvZgp0aGlzIG1ldGhvZCBoYXZlIGJlY29tZSB3aWRlc3ByZWFkIGluIHJ1cmFsIGFyZWFzIHdpdGhpbiB0aGUgcGFzdCBkZWNhZGUgWzddLiBSZWFzb25zCmluY2x1ZGUgcmVhZGlseSBhY2Nlc3NpYmxlIHNvdXJjZXMgb2YgYW5oeWRyb3VzIGFtbW9uaWEgKHN0b2xlbiBmcm9tIG9yIGV2ZW4gc29sZCBieQpmYXJtZXJzKSwgYW5kIGxvd2VyIGNoYW5jZSBvZiBkZXRlY3Rpb24gZHVlIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHNpbmNlIGFtbW9uaWEgaGFzIGEKZGlzdGluY3QsIHVucGxlYXNhbnQgb2RvdXIgdGhhdCBjYW4gYmUgZWFzaWx5IGlkZW50aWZpZWQgYnkgaHVtYW5zLgoKRmlndXJlIDIgLSBCaXJjaCBSZWR1Y3Rpb24gbWV0aG9kCgoyLjEuMiBSZWFjdGlvbgpUaGUgQmlyY2ggbWV0aG9kIHJlcXVpcmVzIHRoZSB1c2Ugb2YgYSBjYXRhbHlzdCBzdWNoIGFzIHNvZGl1bSBvciBsaXRoaXVtIG1ldGFsLgpDbGFuZGVzdGluZSBtYW51YWxzIHByb3ZpZGluZyB0ZWNobmlxdWVzIGZvciByZW1vdmluZyB0aGUgbGl0aGl1bSBmcm9tIGJhdHRlcmllcywgb3IKdXNpbmcgYW4gZWxlY3Ryb2NoZW1pY2FsIGNlbGwgKERvd27igJlzIGNlbGwpIHRvIHByb2R1Y2UgbWV0YWxsaWMgc29kaXVtIGZyb20gbHllLCBjYW4gYmUKZm91bmQgb24gdGhlIEludGVybmV0IG9yIGluIHVuZGVyZ3JvdW5kIGxpdGVyYXR1cmUuIFRoZSBsaXRoaXVtIG9yIHNvZGl1bSBtZXRhbCBpcyBmaXJzdApkaXNzb2x2ZWQgaW4gbGlxdWlkIGFtbW9uaWEsIGZvcm1pbmcgYSBibHVlIHNvbHV0aW9uLiBBZnRlciB0aGUgZXBoZWRyaW5lIG9yCnBzZXVkb2VwaGVkcmluZSBmcmVlIGJhc2UgaGFzIGJlZW4gZXh0cmFjdGVkIGZyb20gdGhlIHRhYmxldHMsIGl0IGlzIGRpc3NvbHZlZCBpbgp0ZXRyYWh5ZHJvZnVyYW4gKFRIRikgb3IgZXRoZXIuIFRoZSBkaXNzb2x2ZWQgZXBoZWRyaW5lL3BzZXVkb2VwaGVkcmluZSBzb2x1dGlvbiBpcwphZGRlZCB0byB0aGUgYW1tb25pYSBzb2x1dGlvbiBvdmVyIGEgc3BhbiBvZiAxMCBtaW51dGVzLiBUaGUgcmVhY3Rpb24gaXMgYWxsb3dlZCB0bwoxNwoKDHByb2NlZWQgZm9yIDEwLTIwIG1pbnV0ZXMsIGFmdGVyIHdoaWNoIGl0IGlzIHF1ZW5jaGVkIGJ5IGFkZGluZyB3YXRlci4gRHVyaW5nIHRoaXMKcHJvY2VzcyB0aGUgYW1tb25pYSBldmFwb3JhdGVzLCBhbmQgbW9yZSB3YXRlciBpcyBhZGRlZCB0byBkaXNzb2x2ZSB0aGUgc2FsdHMgb2YgbGl0aGl1bS4KQWZ0ZXIgdGhpcyBwcm9jZXNzIGhhcyBjb21wbGV0ZWQsIHRoZSB3YXRlciBsYXllciBpcyBzZXBhcmF0ZWQgb2ZmIGZyb20gdGhlIGV0aGVyIGxheWVyLgpUaGUgZXRoZXIgbGF5ZXIgaXMgZHJpZWQgdXNpbmcgYW5oeWRyb3VzIHNvZGl1bSBzdWxmYXRlLCBhbmQgdGhlIGh5ZHJvY2hsb3JpZGUgc2FsdCBvZgptZXRoYW1waGV0YW1pbmUgaXMgb2J0YWluZWQgYnkgYnViYmxpbmcgaHlkcm9nZW4gY2hsb3JpZGUgZ2FzIHRocm91Z2ggdGhlIHNvbHV0aW9uLgpUaGUgaHlkcm9jaGxvcmlkZSBzYWx0IGNyeXN0YWxzIGFyZSBmaWx0ZXJlZCBhbmQgZHJpZWQuIFRhYmxlIDMgc3VtbWFyaXplcyB0aGUgcmVhY3RhbnRzLApzb2x2ZW50cywgY2F0YWx5c3RzLCBhbmQgYnktcHJvZHVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWV0aG9kIG9mIG1ldGhhbXBoZXRhbWluZQpzeW50aGVzaXMuClRhYmxlIDMgLSBTdW1tYXJ5IG9mIHJlYWN0YW50cywgc29sdmVudHMsIGNhdGFseXN0cywgYW5kIGJ5LXByb2R1Y3RzIGFzc29jaWF0ZWQgd2l0aCB0aGUgQmlyY2gKcmVkdWN0aW9uIG1ldGhvZApUeXBlIG9mIENoZW1pY2FsCgpSZWFjdGFudHMKClNvbHZlbnRzCgpDYXRhbHlzdHMKCkJ5LXByb2R1Y3RzCgp4Cgp4Cgp4CgpIeWRyb2dlbgpjaGxvcmlkZQoKeAoKTGl0aGl1bS9Tb2RpdW0KCngKCk4vQQoKeAoKU29kaXVtCnN1bHBoYXRlCgp4CgpUb2x1ZW5lCgp4CgpOL0EKCngKCk4vQQoKeAoKQ2FtcGVyIGZ1ZWwKKGhleGFuZSwKaGVwdGFuZSwKY3ljbG9oZXhhbmUpCgp4CgpUSEYKCngKCkV0aGVyCgp4CgpJbm9yZ2FuaWMKCk9yZ2FuaWMKCngKCkFtbW9uaWEKCkVwaGVkcmluZS8KUHNldWRvZXBoZWRyaQpuZQoKMi4xLjMgVGVtcG9yYWwgQ2hlbWljYWwgU2lnbmF0dXJlIGFuZCBUeXBpY2FsIENvbmNlbnRyYXRpb25zCkEgc2ltdWxhdGVkIGNvbnRyb2xsZWQgY29vayB1c2luZyB0aGUgYW5oeWRyb3VzIGFtbW9uaWEgbWV0aG9kIHdhcyBpbnZlc3RpZ2F0ZWQgYnkKTWFydHlueSBldCBhbC4sIHdobyByZWNvcmRlZCBjb25jZW50cmF0aW9ucyBvZiBhbW1vbmlhIGFuZCBoeWRyb2dlbiBjaGxvcmlkZQp0aHJvdWdob3V0IHRoZSBtYW51ZmFjdHVyaW5nIGN5Y2xlIFszXS4gSGlnaCBvcmdhbmljIHNvbHZlbnQgbGV2ZWxzIHdlcmUgbm90IG9ic2VydmVkCmluIHByaW9yIHRlc3RpbmcsIHNvIHRoZSBpbnZlc3RpZ2F0b3JzIGRpZCBub3Qgc2FtcGxlIGZvciB2b2xhdGlsZSBvcmdhbmljIGNvbXBvdW5kcwooVk9D4oCZcykuIFRocmVlIGNvb2tzIHdlcmUgY29uZHVjdGVkLCBjb29rICMxIHdhcyBjb25kdWN0ZWQgd2l0aCBhbGwgd2luZG93cyBhbmQKZG9vcnMgaW4gdGhlIGNvb2sgYXJlYSBjbG9zZWQsIGNvb2sgIzIgaGFkIGEgc21hbGwgZmFuIHBsYWNlZCBuZWFyIGFuIG9wZW4gd2luZG93LCBhbmQKY29vayAjMyBoYWQgYSByZWxhdGl2ZWx5IHdlbGwgdmVudGlsYXRlZCBjb29rIGFyZWEgYnV0IHVzZWQgbm8gZmFucy4KQXMgY29vayAjMSB3YXMgaW5pdGlhdGVkLCB0aGUgYW1tb25pYSBnYXMgbW9uaXRvciBpbiB0aGUgY29vayBhcmVhIGV4Y2VlZGVkIGl0cyB1cHBlcgpkZXRlY3Rpb24gbGltaXQgKDIwMCBwcG0pIHdpdGhpbiA1IG1pbnV0ZXMsIGFuZCBhbGwgb3RoZXIgYW1tb25pYSBtb25pdG9ycyB3aXRoaW4gdGhlCmJ1aWxkaW5nIGV4Y2VlZGVkIHRoZWlyIHVwcGVyIGRldGVjdGlvbiBsaW1pdHMgd2l0aGluIDE2IG1pbnV0ZXMuIFRoZSBoaWdoZXN0IHJlY29yZGVkCmxldmVsIG9mIGFtbW9uaWEgd2FzIDMzNDggcHBtIHVzaW5nIERyYWdlciBjb2xvcmltZXRyaWMgdHViZXMsIGFuZCB0aGUgYXZlcmFnZQptZWFzdXJlZCBjb25jZW50cmF0aW9uIG9mIGFtbW9uaWEgZHVyaW5nIHRoZSBmaXJzdCAzIGhvdXJzIGV4Y2VlZGVkIDQxMCBwcG0uIER1cmluZwpjb29rICMyLCByZWFsLXRpbWUgYW1tb25pYSBjb25jZW50cmF0aW9ucyBjb2xsZWN0ZWQgaW4gdGhlIGFpciBzdHJlYW0gb2YgdGhlIGZhbiByYW5nZWQKYmV0d2VlbiA1MC0xMDAgcHBtLiBMZXNzIHRoYW4gNjYgcHBtIG9mIGFtbW9uaWEgd2FzIG1lYXN1cmVkIGFjcm9zcyB0aGUgcm9vbSwKbWVhbmluZyB0aGF0IGFuIG9wZW4gd2luZG93IGFuZCBzaW1wbGUgZmFuIGFyZSBlZmZlY3RpdmUgYXQgcmVkdWNpbmcgaW50ZXJpb3IgYW1tb25pYQpjb25jZW50cmF0aW9ucy4gQXQgY29vayAjMywgYXZlcmFnZSBhbW1vbmlhIGxldmVscyByYW5nZWQgYmV0d2VlbiA1MDAgcHBtIHRvIDIwMDAKcHBtLCA1MDAgcHBtIHdhcyBtZWFzdXJlZCBpZiB0aGUgc29sdXRpb24gd2FzIG5vdCBhZ2l0YXRlZC4gQXZlcmFnZSBtZWFzdXJlZApjb25jZW50cmF0aW9uIGF0IHRoZSBjb29rIGFyZWEgd2FzIDMzOCBwcG0gZHVyaW5nIHRoZSBmaXJzdCAxMDEgbWludXRlcyBvZiB0aGUgY29vaywgYW5kCjE0MSBwcG0gZHVyaW5nIHRoZSA0NiBtaW51dGVzIG9mIHRoZSBhY2lkaWZpY2F0aW9uIHBoYXNlLiBBbW1vbmlhIGNvbmNlbnRyYXRpb25zIHdlcmUKCjE4CgoMbWVhc3VyZWQgYXQgNTAgcHBtIG91dHNpZGUgdGhlIHdpbmRvdyBuZWFyIHRoZSBjb29rIGFyZWEsIGFuZCBhdCA0IHBwbSB1cHdpbmQgYnkgdGhlCmZyb250IGRvb3IgKG91dHNpZGUpLgpBcyBmb3IgaHlkcm9nZW4gY2hsb3JpZGUsIHRoZSByZXNlYXJjaGVycyBub3RlZCB0aGF0IHRoZSBtZWFzdXJlZCBjb25jZW50cmF0aW9ucyBtYXkgYmUKbG93ZXIgdGhhbiBleHBlY3RlZCBiZWNhdXNlIHRoZSBnYXMgbW9uaXRvcnMgd2VyZSBvdmVybG9hZGVkIGR1ZSB0byBoaWdoIGFuaHlkcm91cwphbW1vbmlhIGxldmVscywgYW5kIGh5cG90aGVzaXplZCB0aGF0IGluIGFkZGl0aW9uIHRoZSBhbmh5ZHJvdXMgYW1tb25pYSB3YXMgcmVhY3RpbmcKd2l0aCBoeWRyb2dlbiBjaGxvcmlkZSB0byBwcm9kdWNlIGFtbW9uaXVtIGNobG9yaWRlIHdoaWNoIHdhcyBub3QgZGV0ZWN0ZWQgYnkgdGhlCmF2YWlsYWJsZSBlcXVpcG1lbnQuIEF0IGNvb2sgIzEsID4wLjIgcHBtIHdhcyBtZWFzdXJlZCBhdCB0aGUgY29vayBhcmVhLiBUaGUgY29vawphcmVhIG9mIGNvb2sgIzIgaGFkID4wLjAyIHBwbSBvZiBoeWRyb2dlbiBjaGxvcmlkZSwgYW5kID4wLjYgcHBtIG9mIGh5ZHJvZ2VuIGNobG9yaWRlCndhcyBtZWFzdXJlZCBhdCB0aGUgY29vayBhcmVhIG9mIGNvb2sgIzMuCjIuMS40IFN1bW1hcnkgb2YgVGFyZ2V0IENoZW1pY2FscyBmb3IgQmlyY2ggUmVkdWN0aW9uIE1ldGhvZApPZiB0aGUgbGlzdCBvZiBvcmdhbmljIGFuZCBpbm9yZ2FuaWMgY2hlbWljYWxzIGxpc3RlZCBpbiBUYWJsZSAzLCBhbW1vbmlhIGFuZCBoeWRyb2dlbgpjaGxvcmlkZSBhcmUgaW4gZ2FzZW91cyBmb3JtLCBhbmQgdGhlIG9yZ2FuaWMgc29sdmVudHMgYXJlIHZvbGF0aWxlIGxpcXVpZHMgYXQgcm9vbQp0ZW1wZXJhdHVyZS4gVGhlIGxpc3Qgb2YgcG90ZW50aWFsIHRhcmdldHMgZm9yIHRoaXMgcHJvY2VzcyBjb25zaXN0cyBvZjoKeAoKQW1tb25pYQoKeAoKSHlkcm9nZW4gY2hsb3JpZGUKCngKCkNhbXBlciBmdWVsIChoZXhhbmUsIGhlcHRhbmUsIGN5Y2xvaGV4YW5lKQoKeAoKVGV0cmFoeWRyb2Z1cmFuCgoyLjIgUDJQLWJhc2VkIE1ldGhvZHMKMi4yLjEgQmFja2dyb3VuZApQcmlvciB0byB0aGUgMTk5MOKAmXMsIHRoZSBtb3N0IHBvcHVsYXIgY2xhbmRlc3RpbmUgbWV0aGFtcGhldGFtaW5lIHN5bnRoZXNpcyBwcm9jZXNzCndhcyB0aGUgUDJQIG1ldGhvZCwgd2hpY2ggdXNlcyB0aGUgcHJlY3Vyc29yLCBwaGVueWwtMi1wcm9wYW5vbmUgKGFsc28ga25vd24gYXMKcGhlbnlsYWNldG9uZSBvciBQMlApIGFuZCBpcyBzdHJ1Y3R1cmFsbHkgdmVyeSBzaW1pbGFyIHRvIG1ldGhhbXBoZXRhbWluZS4gVGhlCm1vdG9yY3ljbGUgZ2FuZ3MgaW4gQ2FsaWZvcm5pYSB1c2VkIHRoaXMgbWFudWZhY3R1cmluZyBwcm9jZXNzIGV4dGVuc2l2ZWx5LiBUaGUKcG9wdWxhcml0eSBvZiB0aGUgcHJvY2VzcyBkaW1pbmlzaGVkIGFzIHByZWN1cnNvciBjaGVtaWNhbHMgYmVjYW1lIG1vcmUgZGlmZmljdWx0IHRvCm9idGFpbiBhZnRlciBQMlAgd2FzIHBsYWNlZCBvbnRvIHRoZSBjb250cm9sbGVkIHN1YnN0YW5jZXMgbGlzdCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBpbgoxOTg4OyBDYW5hZGEgZm9sbG93ZWQgc3VpdCBieSBjbGFzc2lmeWluZyBQMlAgYXMgYSBTY2hlZHVsZSBWSSBDbGFzcyBBIHJlZ3VsYXRlZApwcmVjdXJzb3IgY2hlbWljYWwgWzhdLiBDb21wYXJlZCB0byBtb2Rlcm4gcHJvY2Vzc2VzLCBQMlAtYmFzZWQgbWV0aG9kcyBhbHNvCnByb2R1Y2UgYSBsb3dlciBxdWFsaXR5IHByb2R1Y3Qgd2l0aCBsZXNzIGFkZGljdGl2ZSBwcm9wZXJ0aWVzIFs5XS4gT25lIFAyUC1iYXNlZAptZXRob2QsIHRoZSBMZXVja2FyZHQtV2FsbGFjaCByZWFjdGlvbiwgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSB1cCB0byDCvSBwb3VuZCBiYXRjaGVzCls2XS4gQSBzaW1wbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByb2Nlc3MgaXMgc2hvd24gaW4gRmlndXJlIDMuCgoxOQoKDEZpZ3VyZSAzIC0gUDJQIExldWNrYXJkdC1XYWxsYWNoIG1ldGhvZAoKMi4yLjIgUmVhY3Rpb24KVGhlIGtleSByZWFjdGlvbiBmb3IgbWV0aGFtcGhldGFtaW5lIHByb2R1Y3Rpb24gdGhyb3VnaCB0aGUgUDJQIG1ldGhvZCBpcyB0aGUgUDJQCkxldWNrYXJkdC1XYWxsYWNoIHJlYWN0aW9uLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIG9wZXJhdG9yIHdpbGwgYWxyZWFkeSBoYXZlIHRoZSB0d28KcHJpbWFyeSBwcmVjdXJzb3JzOiBwaGVueWxhY2V0b25lIGFuZCBOLW1ldGh5bGZvcm1hbWlkZS4gT3RoZXJ3aXNlLCBQMlAgY2FuIGJlCnN5bnRoZXNpemVkIGZyb20gcGhlbnlsYWNldGljIGFjaWQgYW5kIGFjZXRpYyBhbmh5ZHJpZGUsIGFuZCBOLW1ldGh5bGZvcm1hbWlkZSBjYW4gYmUKc3ludGhlc2l6ZWQgZnJvbSBtZXRoeWxhbWluZSBhbmQgZm9ybWljIGFjaWQuCkEgbWl4dHVyZSBvZiBQMlAgYW5kIE5tZXRoeWxmb3JtYW1pZGUgaXMgcHJlcGFyZWQsIHVzaW5nIDQgdG8gNiBtb2xlcyBvZiBOLW1ldGh5bGZvcm1hbWlkZSBmb3IgZXZlcnkgbW9sZQpvZiBwaGVueWxhY2V0b25lLiBUaGUgbWl4dHVyZSBpcyBjYXJlZnVsbHkgaGVhdGVkIHRvIGJldHdlZW4gMTA1IMK6QyBhbmQgMTEwIMK6Qywgd2hpY2gKaXMgdGhlIHRlbXBlcmF0dXJlIGF0IHdoaWNoIHRoZSByZWFjdGlvbiBzdGFydHMgdG8gb2NjdXIuIFRoZSBtaXh0dXJlIGJlZ2lucyB0byBidWJibGUsCmFuZCB0aGUgdGVtcGVyYXR1cmUgaXMga2VwdCBhcyBsb3cgYXMgcG9zc2libGUgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgdGhlIHJlYWN0aW9uLiBUaGUKcmVhY3Rpb24gbWl4dHVyZSB0YWtlcyBvbiBhbiBhbWJlciBjb2xvdXIuIFRoZSB0ZW1wZXJhdHVyZSBpcyBtb2RlcmF0ZWx5IGluY3JlYXNlZCBhZnRlcgoxLTIgaG91cnMgdG8ga2VlcCB0aGUgcmVhY3Rpb24gZ29pbmcsIHdoaWNoIGlzIG1vbml0b3JlZCB0aHJvdWdoIHRoZSBhbW91bnQgb2YgZ2FzCmZvcm1hdGlvbi4gVGhlIGJ1YmJsZXMgYmVpbmcgZm9ybWVkIGFyZSBjYXJib24gZGlveGlkZSwgYSBieS1wcm9kdWN0LCBhbmQgdGhlIGFtb3VudApvZiBnZW5lcmF0ZWQgY2FyYm9uIGRpb3hpZGUgaXMgdXNlZCBhcyBhbiBpbmRpY2F0b3Igb2YgaG93IHdlbGwgdGhlIHJlYWN0aW9uIGlzCnByb2dyZXNzaW5nLiBPdmVyIGEgdG90YWwgcGVyaW9kIG9mIDI0IHRvIDM2IGhvdXJzLCB0aGUgdGVtcGVyYXR1cmUgaXMgaW5jcmVtZW50YWxseQppbmNyZWFzZWQgdG8gMTQ1IMK6Qy4KT25jZSB0aGUgcmVhY3Rpb24gc3RvcHMsIHRoZSBtaXh0dXJlIGlzIGFsbG93ZWQgdG8gY29vbCwgYXQgd2hpY2ggcG9pbnQgdGhlIHNvbHV0aW9uIHNob3VsZApzdGlsbCBoYXZlIGFuIGFtYmVyIGNvbG91ci4gQSByZWRkaXNoIHRpbnQgbWVhbnMgdGhlIHJlYWN0aW9uIHdhcyB1bnN1Y2Nlc3NmdWwuIEF0IHRoaXMKcG9pbnQgdGhlIGNvb2sgbWF5IHJlY292ZXIgc29tZSBvZiB0aGUgdW51c2VkIE4tbWV0aHlsZm9ybWFtaWRlIGJ5IHJlYWN0aW5nIGl0IHdpdGgKc29kaXVtIGh5ZHJveGlkZSB0byBmb3JtIG1ldGh5bGFtaW5lIGdhcywgd2hpY2ggaXMgcGlwZWQgaW50byBmb3JtaWMgYWNpZCB0byByZWdlbmVyYXRlCk4tbWV0aHlsZm9ybWFtaWRlIGZvciB0aGUgbmV4dCBiYXRjaC4gQWZ0ZXIgdGhlIE4tbWV0aHlsZm9ybWFtaWRlIHJlY292ZXJ5IHByb2Nlc3MsCnRoZSByZWQgbWV0aGFtcGhldGFtaW5lIGZvcm15bCBhbWlkZSBzb2x1dGlvbiBpcyBtaXhlZCB3aXRoIGh5ZHJvY2hsb3JpYyBhY2lkIGFuZApnZW50bHkgaGVhdGVkLiBUaGUgbWl4dHVyZSB0dXJucyBibGFjayBhcyBtZXRoYW1waGV0YW1pbmUgZm9ybXlsIGFtaWRlIHJlYWN0cyB3aXRoCmh5ZHJvY2hsb3JpYyBhY2lkIHRvIHByb2R1Y2UgbWV0aGFtcGhldGFtaW5lIGh5ZHJvY2hsb3JpZGUgYW5kIGZvcm1pYyBhY2lkLiBUaGUKYmxhY2sgcmVhY3Rpb24gbWl4dHVyZSBpcyBzbG93bHkgYWRkZWQgdG8gYSBzb2x1dGlvbiBvZiBzb2RpdW0gaHlkcm94aWRlIGluIG9yZGVyIHRvCm5ldXRyYWxpemUgdGhlIGV4Y2VzcyBhY2lkIGFuZCBjb252ZXJ0IG1ldGhhbXBoZXRhbWluZSBoeWRyb2NobG9yaWRlIGludG8gZnJlZSBiYXNlLApyZXN1bHRpbmcgaW4gYSBicm93biBtZXRoYW1waGV0YW1pbmUgZnJlZSBiYXNlIGxheWVyIHRoYXQgd2lsbCBzZXBhcmF0ZSBhYm92ZSB0aGUKc29kaXVtIGh5ZHJveGlkZSBzb2x1dGlvbi4gVG9sdWVuZSBpcyB0aGVuIGFkZGVkIHRvIGV4dHJhY3QgdGhlIGZyZWUgYmFzZSwgYW5kIHRoZQptZXRoYW1waGV0YW1pbmUtdG9sdWVuZSBsYXllciBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgcmVzdCBvZiB0aGUgbWl4dHVyZSBhbmQgZGlzdGlsbGVkLAp5aWVsZGluZyBhIHNtYWxsIHZvbHVtZSBvZiBjbGVhciB0byBwYWxlIHllbGxvdyBtZXRoYW1waGV0YW1pbmUuIFRoZSBmcmVlIGJhc2UKbWV0aGFtcGhldGFtaW5lIGlzIGNvbnZlcnRlZCBpbnRvIGNyeXN0YWxsaW5lIG1ldGhhbXBoZXRhbWluZSBoeWRyb2NobG9yaWRlIHVzaW5nCmh5ZHJvZ2VuIGNobG9yaWRlIGdhcy4gVGhlIGNyeXN0YWxzIGFyZSBmaWx0ZXJlZCBhbmQgZHJpZWQuIFRhYmxlIDQgc3VtbWFyaXplcyB0aGUKMjAKCgxyZWFjdGFudHMsIHNvbHZlbnRzLCBjYXRhbHlzdHMsIGFuZCBieS1wcm9kdWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZXRob2Qgb2YKbWV0aGFtcGhldGFtaW5lIHByb2R1Y3Rpb24uClRhYmxlIDQgLSBTdW1tYXJ5IG9mIHJlYWN0YW50cywgc29sdmVudHMsIGNhdGFseXN0cywgYW5kIGJ5LXByb2R1Y3RzIGFzc29jaWF0ZWQgd2l0aCBQMlAgTGV1Y2thcmR0V2FsbGFjaCBtZXRob2QKeAoKeAoKSW5vcmdhbmljCgpPcmdhbmljCgpSZWFjdGFudHMKClNvbHZlbnRzCgpDYXRhbHlzdHMKCkJ5LXByb2R1Y3RzCgp4CgpTb2RpdW0KaHlkcm94aWRlCgp4CgpOL0EKCngKCk4vQQoKeAoKQ2FyYm9uCmRpb3hpZGUKCngKCkh5ZHJvZ2VuCmNobG9yaWRlCgp4CgpQaGVueWxhY2V0b25lCgp4CgpUb2x1ZW5lCgp4CgpOL0EKCngKCkZvcm1pYyBhY2lkCgp4CgpOTWV0aHlsZm9ybWEKbWlkZQoKeAoKRXRoeWwgZXRoZXIKCngKCkNhbXBlciBmdWVsCihoZXhhbmUsCmhlcHRhbmUsCmN5Y2xvaGV4YW5lKQoKRm9yIG1ha2luZwpwcmVjdXJzb3JzCngKClBoZW55bGFjZXRpYwphY2lkCgp4CgpBY2V0aWMKYW5oeWRyaWRlCgp4CgpNZXRoeWxhbWluZQoKeAoKRm9ybWljIGFjaWQKCjIuMi4zIFRlbXBvcmFsIENoZW1pY2FsIFNpZ25hdHVyZSBhbmQgVHlwaWNhbCBDb25jZW50cmF0aW9ucwpEYXRhIG9uIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQgY2hlbWljYWwgY29uY2VudHJhdGlvbnMgZHVyaW5nIHZhcmlvdXMgcGhhc2VzIG9mIHRoZQpQMlAgTGV1Y2thcmR0LVdhbGxhY2ggbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHNjaWVudGlmaWMgbGl0ZXJhdHVyZS4gT25lIHJlYXNvbgptYXkgYmUgdGhhdCB0aGUgcG9wdWxhcml0eSBvZiB0aGUgUDJQIHByb2Nlc3MgZGltaW5pc2hlZCBxdWlja2x5IGFmdGVyIHRoZSAxOTkw4oCZcy4KSG93ZXZlciwgYmFzZWQgb24gdGhlIGNvb2tpbmcgbWV0aG9kIGEgcXVhbGl0YXRpdmUgdGVtcG9yYWwgY2hlbWljYWwgY29uY2VudHJhdGlvbgpzaWduYXR1cmUgY2FuIGJlIGFzc3VtZWQgYXMgZGVzY3JpYmVkIGJlbG93LgpJdCBpcyBleHBlY3RlZCB0aGF0IHZhcG91cnMgb2YgdGhlIHJlYWN0YW50cywgcGhlbnlsYWNldG9uZSBhbmQgTi1tZXRoeWxmb3JtYW1pZGUsIHdpbGwKYmUgcHJlc2VudCBkdXJpbmcgdGhlIGZpcnN0IHJlYWN0aW9uIHBoYXNlLCBwYXJ0aWN1bGFybHkgc2luY2UgdGhlIHJlYWN0aW9uIG1peHR1cmUgaXMgYXQgYW4KZWxldmF0ZWQgdGVtcGVyYXR1cmUgb2YgdXAgdG8gMTQ1IMK6Qy4gQXQgMTUwIMK6QywgTi1tZXRoeWxmb3JtYW1pZGUgaXMgcXVpdGUgdm9sYXRpbGUKd2l0aCBhIHZhcG91ciBwcmVzc3VyZSBvZiAyMi42IGtQYSwgd2hpY2ggaXMgYSBmaWZ0aCBvZiBhdG1vc3BoZXJpYyBwcmVzc3VyZS4gVGhlCnJlYWN0aW9uIHZlc3NlbCBjYW5ub3QgYmUgc2VhbGVkLCBhcyB0aGUgcmVhY3Rpb24gcHJvZHVjZXMgY2FyYm9uIGRpb3hpZGUgZ2FzLiBBbHRob3VnaAp0aGUgdGVtcGVyYXR1cmVzIHVzZWQgZHVyaW5nIHRoaXMgcGhhc2UgYXJlIGZhaXJseSBoaWdoLCB0aGV5IGFyZSBiZWxvdyB0aGUgYm9pbGluZyBwb2ludHMKb2YgdGhlIHJlYWN0YW50cyAoYm9pbGluZyBwb2ludCBvZiBwaGVueWxhY2V0b25lOiAyMTYuNSDCukMsIGJvaWxpbmcgcG9pbnQgb2YgTm1ldGh5bGZvcm1hbWlkZTogMTk5LjUgwrpDKS4gQWZ0ZXIgdGhlIGluaXRpYWwgcmVhY3Rpb24sIHRoZSBjbGFuZGVzdGluZSBvcGVyYXRvciBtYXkKcmVjb3ZlciB0aGUgdW51c2VkIE4tbWV0aHlsZm9ybWFtaWRlLCBhIHByb2Nlc3MgdGhhdCB3aWxsIHByb2R1Y2UgbWV0aHlsYW1pbmUgZ2FzLgpBbHRob3VnaCB0aGUgbWV0aHlsYW1pbmUgaXMgcGlwZWQgaW50byBhbm90aGVyIGZsYXNrIGhvbGRpbmcgYW5vdGhlciByZWFjdGFudCwgZ2FzIGxlYWtzCm1heSBvY2N1ciByZXN1bHRpbmcgaW4gbG93IGJ1dCBkZXRlY3RhYmxlIGNvbmNlbnRyYXRpb25zIG9mIG1ldGh5bGFtaW5lLiBBZnRlciB0aGUKcmVjb3Zlcnkgb2YgTi1tZXRoeWxmb3JtYW1pZGUgaXMgcGVyZm9ybWVkLCB0aGUgc2Vjb25kIHJlYWN0aW9uIHBoYXNlIGludm9sdmVzIHRoZSB1c2UKb2YgaHlkcm9jaGxvcmljIGFjaWQgYW5kIGFzIGEgcmVzdWx0LCBoeWRyb2dlbiBjaGxvcmlkZSBnYXMgd2lsbCBiZWNvbWUgZGV0ZWN0YWJsZSBhdCB0aGlzCnBvaW50LiBBbiBvcmdhbmljIHNvbHZlbnQgc3VjaCBhcyB0b2x1ZW5lIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBzdGFnZSB0byBleHRyYWN0IHRoZQoyMQoKDGxpcXVpZCBtZXRoYW1waGV0YW1pbmUgZnJlZSBiYXNlLCBhbmQgYXMgYSByZXN1bHQsIG9yZ2FuaWMgc29sdmVudCB2YXBvdXJzIG1heSBiZQpkZXRlY3RhYmxlIGF0IHRoaXMgcG9pbnQuIEZpbmFsbHksIHRoZSBjcnlzdGFsbGl6YXRpb24gcGhhc2UgaW52b2x2ZXMgYnViYmxpbmcgaHlkcm9nZW4KY2hsb3JpZGUgZ2FzIHRocm91Z2ggYW4gb3JnYW5pYyBzb2x2ZW50IHN1Y2ggYXMgZXRoeWwgZXRoZXIsIHRvbHVlbmUsIG9yIG1pbmVyYWwgc3Bpcml0cyAoaS5lLgpDb2xlbWFuIGNhbXBlciBmdWVsKSwgc28gdmFwb3VycyBvZiBoeWRyb2dlbiBjaGxvcmlkZSBhbmQgdGhlIG9yZ2FuaWMgc29sdmVudCBtYXkgYmUKZGV0ZWN0YWJsZS4gVGhlIG9yZ2FuaWMgc29sdmVudCB2YXBvdXJzIG1heSBzdGlsbCBiZSBkZXRlY3RhYmxlIGFmdGVyIHRoZSBjcnlzdGFsbGl6YXRpb24KcHJvY2VzcyBzaW5jZSB0aGUgY3J5c3RhbHMgd2lsbCB1c3VhbGx5IGJlIGxlZnQgb3V0IHRvIGRyeS4KMi4yLjQgU3VtbWFyeSBvZiBUYXJnZXQgQ2hlbWljYWxzIGZvciBQMlAgTWV0aG9kCk9mIHRoZSBsaXN0IG9mIG9yZ2FuaWMgYW5kIGlub3JnYW5pYyBjaGVtaWNhbHMgbGlzdGVkIGluIFRhYmxlIDQsIGh5ZHJvZ2VuIGNobG9yaWRlIGlzIGluCmdhc2VvdXMgZm9ybSBhdCByb29tIHRlbXBlcmF0dXJlLCB0b2x1ZW5lIGFuZCBhbGwgb2YgdGhlIG9yZ2FuaWMgcmVhY3RhbnRzIGFyZSB2b2xhdGlsZQpsaXF1aWRzICh3aXRoIHZhcnlpbmcgZGVncmVlcyBvZiB2b2xhdGlsaXR5KSBhdCByb29tIHRlbXBlcmF0dXJlLiBUaGUgbGlzdCBvZiBwb3RlbnRpYWwKdGFyZ2V0cyBmb3IgdGhpcyBwcm9jZXNzIGNvbnNpc3RzIG9mOgp4CgpIeWRyb2dlbiBjaGxvcmlkZQoKeAoKQWNldGljIGFuaHlkcmlkZQoKeAoKRm9ybWljIGFjaWQKCngKCk1ldGh5bGFtaW5lCgp4CgpOLU1ldGh5bGZvcm1hbWlkZQoKeAoKUGhlbnlsYWNldG9uZQoKeAoKUGhlbnlsYWNldGljIGFjaWQKCngKClRvbHVlbmUKCjIuMyBSZWQgUGhvc3Bob3J1cy1iYXNlZCBNZXRob2RzCjIuMy4xIEJhY2tncm91bmQKRXBoZWRyaW5lL3BzZXVkb2VwaGVkcmluZS1iYXNlZCBtZXRoYW1waGV0YW1pbmUgc3ludGhlc2lzIG1ldGhvZHMgYmVjYW1lIHBvcHVsYXIKc2hvcnRseSBhZnRlciByZWd1bGF0aW9ucyBvbiBQMlAgd2VyZSBpbnRyb2R1Y2VkLiBUaGUgbW9zdCBwb3B1bGFyIG9mIHRoZXNlIG1ldGhvZHMgd2FzCnRoZSBSZWQgUGhvc3Bob3J1cyAoUmVkIFApIG1ldGhvZCBhbmQgaXRzIGRlcml2YXRpdmVzLCBwYXJ0aWN1bGFybHkgZnJvbSB0aGUgMTk4MOKAmXMgdW50aWwKdGhlIG1pZCAxOTkw4oCZcy4gVGhlIHByb2Nlc3MgaXMgYWxzbyBrbm93biBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhcyB0aGUg4oCcUmVkLCBXaGl0ZSwgYW5kCkJsdWUgUHJvY2Vzc+KAnSwgc2luY2UgaXQgaW52b2x2ZXMgcmVkIHBob3NwaG9ydXMsIHdoaXRlIGVwaGVkcmluZS9wc2V1ZG9lcGhlZHJpbmUsIGFuZApibHVlIGlvZGluZSBbMTBdLiBBIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0aGUgUmVkIFAgc3ludGhlc2lzIHJvdXRlIGlzIGRlcGljdGVkIGluIEZpZ3VyZSA0LgpTZXZlcmFsIHZhcmlhbnRzIG9mIHRoaXMgbWV0aG9kIGhhdmUgYmVlbiB1c2VkLCBmb3IgZXhhbXBsZSBpb2RpbmUgY3J5c3RhbHMgY2FuIGJlCnN1YnN0aXR1dGVkIGZvciBoeWRyb2lvZGljIGFjaWQuIFJlZCBwaG9zcGhvcnVzIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSBzdHJpa2UgcGFkcyBvbgptYXRjaGJveGVzICg0MCUgcmVkIHBob3NwaG9ydXMpIFs2XS4gU3RhcnRpbmcgaW4gdGhlIG1pZC0xOTkw4oCZcywgdGhlIOKAnEh5cG/igJ0gbWV0aG9kLApzdWJzdGl0dXRpbmcgaHlwb3Bob3NwaG9yb3VzIGFjaWQgZm9yIHJlZCBwaG9zcGhvcnVzLCBoYXMgYmVjb21lIHBvcHVsYXIgWzExXS4KQW5vdGhlciB2YXJpYXRpb24sIGludm9sdmluZyB0aGUgc3Vic3RpdHV0aW9uIG9mIHBob3NwaG9yb3VzIGZsYWtlcyBmb3IgcmVkIHBob3NwaG9ydXMKaGFzIGFsc28gZ2FpbmVkIHBvcHVsYXJpdHkuIFBob3NwaG9yb3VzIGZsYWtlcyBhcmUgcmVhZGlseSBhY2Nlc3NpYmxlIGZyb20gYWdyaWN1bHR1cmFsCmZlcnRpbGl6ZXJzIFsxMV0uIENsYW5kZXN0aW5lIG9wZXJhdG9ycyBwcmVmZXIgdGhlIFJlZCBQIG1ldGhvZCBiZWNhdXNlIGl0IGlzIHJlbGF0aXZlbHkKc2ltcGxlIHRvIHBlcmZvcm0sIGJ1dCBwcmVjYXV0aW9ucyBzdWNoIGFzIHVzaW5nIHB1cmUgZXBoZWRyaW5lIG11c3QgYmUgZm9sbG93ZWQgb3IgZWxzZQp0aGUgcHJvZHVjdCB3aWxsIGJlIHVzZWxlc3MuIFBoYXJtYWNldXRpY2FsIGNvbXBhbmllcyBhZGQgYWRkaXRpb25hbCBmaWxsZXJzIHRvIHRoZWlyCnByb2R1Y3RzIHRvIGludGVyZmVyZSB3aXRoIHRoZSBleHRyYWN0aW9uIG9mIGVwaGVkcmluZS4gRm9yIHRoZSBSZWQgUC1IeWRyb2lvZGljIGFjaWQKbWV0aG9kLCB0aGUgbWFqb3JpdHkgb2YgdGhlIHByb2R1Y3QgY2FuIGJlIG9idGFpbmVkIGluIDEwIGhvdXJzLCA3NSUgaXMgY29tcGxldGUgd2l0aGluCjE2IGhvdXJzLCBhbmQgdGhlIHByb2Nlc3MgaXMgZW50aXJlbHkgY29tcGxldGUgd2l0aGluIDI0IGhvdXJzIFs2XS4KCjIyCgoMRmlndXJlIDQgLSBSZWQgUCBtZXRob2QKCjIuMy4yIFJlYWN0aW9uClRvIHN0YXJ0LCBlcGhlZHJpbmUgaHlkcm9jaGxvcmlkZSwgcmVkIHBob3NwaG9ydXMsIGFuZCBoeWRyb2lvZGljIGFjaWQgYXJlIGFkZGVkIHRvIGEKZmxhc2suIEh5ZHJvaW9kaWMgYWNpZCBjYW4gYmUgbWFkZSBieSBhZGRpbmcgaW9kaW5lIGNyeXN0YWxzIHRvIHJlZCBwaG9zcGhvcnVzCnN1c3BlbmRlZCBpbiB3YXRlci4gQSBieS1wcm9kdWN0IGZyb20gaW4gc2l0dSBoeWRyb2lvZGljIGFjaWQgcHJvZHVjdGlvbiBpcyBwaG9zcGhpbmUsIGEKdG94aWMgZ2FzLiBUaGUgbWl4dHVyZSBpcyBib2lsZWQgdW5kZXIgcmVmbHV4IGZvciBvbmUgZGF5LCBhbmQgdGhlIHByb2dyZXNzIG9mIHRoZSByZWFjdGlvbgpjYW4gYmUgbW9uaXRvcmVkIGJ5IG9ic2VydmluZyB0aGUgY29uc3VtcHRpb24gb2YgcmVkIHBob3NwaG9ydXMuIEFmdGVyIHRoZSBtaXh0dXJlIGlzCmNvb2xlZCBhbmQgZGlsdXRlZCB3aXRoIHdhdGVyLCByZWQgcGhvc3Bob3J1cyBpcyBmaWx0ZXJlZCBvdXQgdXNpbmcgY29udmVudGlvbmFsIGNvZmZlZQpmaWx0ZXJzIG9yIGVxdWl2YWxlbnQuIFRoZSBmaWx0ZXJlZCBzb2x1dGlvbiBzaG91bGQgYmUgZ29sZGVuIGluIGNvbG9yLiBJZiB0aGUgc29sdXRpb24gaXMKcmVkZGlzaCBpbiBjb2xvciwgdGhlcmUgbWF5IGJlIHJlc2lkdWFsIGlvZGluZSBpbiB0aGUgc29sdXRpb24sIHdoaWNoIGNhbiBiZSByZWR1Y2VkIHRvCmlvZGlkZSBieSBhZGRpbmcgc29kaXVtIGJpc3VsZml0ZSBvciBzb2RpdW0gdGhpb3N1bGZhdGUuIE5leHQsIHRoZSBzb2x1dGlvbiBpcyBtYWRlCnN0cm9uZ2x5IGFsa2FsaW5lIGJ5IGFkZGluZyBseWUgb3Igc29kaXVtIGh5ZHJveGlkZS4gQSBsYXllciBvZiBmcmVlIGJhc2UKbWV0aGFtcGhldGFtaW5lIGZvcm1zLCBhbmQgd2lsbCBzZXBhcmF0ZSB0byB0aGUgdG9wIG9mIHRoZSBhcXVlb3VzIHNvbHV0aW9uLiBUbyBleHRyYWN0CnRoZSBmcmVlIGJhc2UgbWV0aGFtcGhldGFtaW5lLCB0b2x1ZW5lIGlzIGFkZGVkIGFuZCB0aGUgbWV0aGFtcGhldGFtaW5lLXRvbHVlbmUKc29sdXRpb24gaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlc3Qgb2YgdGhlIG1peHR1cmUuIEh5ZHJvZ2VuIGNobG9yaWRlIGlzIGJ1YmJsZWQgdGhyb3VnaAp0aGUgbWV0aGFtcGhldGFtaW5lLXRvbHVlbmUgc29sdXRpb24gdG8gY3J5c3RhbGxpemUgdGhlIGZyZWUgYmFzZSBtZXRoYW1waGV0YW1pbmUgaW50bwp0aGUgaHlkcm9jaGxvcmlkZSBmb3JtIG9mIG1ldGhhbXBoZXRhbWluZS4gVGFibGUgNSBzdW1tYXJpemVzIHRoZSByZWFjdGFudHMsIHNvbHZlbnRzLApjYXRhbHlzdHMsIGFuZCBieS1wcm9kdWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZXRob2Qgb2YgbWV0aGFtcGhldGFtaW5lIHN5bnRoZXNpcy4KCjIzCgoMVGFibGUgNSAtIFN1bW1hcnkgb2YgcmVhY3RhbnRzLCBzb2x2ZW50cywgY2F0YWx5c3RzLCBhbmQgYnktcHJvZHVjdHMgYXNzb2NpYXRlZCB3aXRoIFJlZCBQIG1ldGhvZAp4Cgp4CgpJbm9yZ2FuaWMKCk9yZ2FuaWMKClJlYWN0YW50cwoKU29sdmVudHMKCkNhdGFseXN0cwoKQnktcHJvZHVjdHMKCngKCkh5ZHJvaW9kaWMgYWNpZAoKeAoKeAoKTi9BCgp4CgpQaG9zcGhpbmUKCngKCklvZGluZQoKSHlkcm9nZW4KY2hsb3JpZGUKCngKClJlZCBwaG9zcGhvcnVzCgp4CgpTb2RpdW0gYmlzdWxmaXRlCgp4CgpTb2RpdW0gdGhpb3N1bGZhdGUKCngKClNvZGl1bSBoeWRyb3hpZGUKCngKCkVwaGVkcmluZS9Qc2V1ZG9lcGhlZHJpbmUKCngKClRvbHVlbmUKCngKCk4vQQoKeAoKTi9BCgoyLjMuMyBUZW1wb3JhbCBDaGVtaWNhbCBTaWduYXR1cmUgYW5kIFR5cGljYWwgQ29uY2VudHJhdGlvbnMKQSBzdHVkeSBjb25kdWN0ZWQgYnkgTWFydHlueSBldCBhbC4gZXhhbWluZWQgYWlyYm9ybmUgY29uY2VudHJhdGlvbnMgb2YKbWV0aGFtcGhldGFtaW5lLCBWT0PigJlzLCBpb2RpbmUsIGFuZCBoeWRyb2NobG9yaWMgYWNpZCBbMTJdLiBUaGUgUmVkIFAgYW5kIGlvZGluZQptZXRob2Qgd2FzIHVzZWQgdG8gcHJvZHVjZSBtZXRoYW1waGV0YW1pbmUuIER1cmluZyB0aGUgY29udHJvbGxlZCBjb29rLCB0aGUgaGlnaGVzdAptZWFzdXJlZCBjb25jZW50cmF0aW9uIGZvciBoeWRyb2dlbiBjaGxvcmlkZSB3YXMgMC40MiBwcG0gaW4gdGhlIGNvb2sgYXJlYS4gUHJpb3IKZXhwZXJpbWVudHMgYnkgdGhlIERFQSBhbmQgTmF0aW9uYWwgSmV3aXNoIE1lZGljYWwgQ2VudGVyIGhhdmUgcmVwb3J0ZWQgdXAgdG8gMTUwCnBwbSBwZWFrIGR1cmluZyB0aGUgc2FsdGluZyBvdXQgKGNyeXN0YWxsaXphdGlvbikgcGhhc2UuIFRoZSBhdmVyYWdlIGNvbmNlbnRyYXRpb24gb2YKaW9kaW5lIG1lYXN1cmVkIGR1cmluZyB0aGUgY29vayB3YXMgMC4xMiBwcG0sIGFsdGhvdWdoIGl0IGlzIGxpa2VseSB0aGF0IHBlYWsKY29uY2VudHJhdGlvbnMgd2lsbCBiZSBoaWdoZXIuIFRoZSBleHRyYWN0aW9uIHNvbHZlbnQgdXNlZCBjb25zaXN0ZWQgb2YgaGV4YW5lLCBoZXB0YW5lLAphbmQgY3ljbG9oZXhhbmUsIGFuZCB0aGUgbWF4aW11bSBhdmVyYWdlIGNvbmNlbnRyYXRpb24gcmVhY2hlZCBhIHBlYWsgb2YgMjgwIHBwYiBmb3IKZWFjaCBWT0MuCkFub3RoZXIgc3R1ZHkgYnkgTWFydHlueSBldCBhbC4gZm9jdXNlZCBvbiB0d28gY29va3M6IGNvb2sgIzEgdXNlZCBoeXBvcGhvc3Bob3JvdXMKYWNpZCBpbiB0aGUgZXBoZWRyaW5lL3BzZXVkb2VwaGVkcmluZSByZWR1Y3Rpb24gbWV0aG9kLCBhbmQgY29vayAjMiB1c2VkIHBob3NwaG9yb3VzCmZsYWtlcy4gTWF4aW11bSBwaG9zcGhpbmUgbGV2ZWxzIHdlcmUgZGV0ZWN0ZWQgZHVyaW5nIHRoZSBzYWx0aW5nIG91dCBwaGFzZSBhbmQgbm90CnRoZSBjb29raW5nIHBoYXNlLCBhbmQgd2VyZSAxMyBwcG0gZm9yIGNvb2sgIzEgYW5kIDAuNiBwcG0gZm9yIGNvb2sgIzIuIEFpcmJvcm5lCmlvZGluZSBsZXZlbHMgd2VyZSBub3QgZGV0ZWN0ZWQgaW4gY29vayAjMiwgYnV0IGZvciBjb29rICMxIHRoZSBpb2RpbmUgY29uY2VudHJhdGlvbiB3YXMKMC4wMDUgcHBtIGR1cmluZyB0aGUgY29va2luZyBwaGFzZSBhbmQgMC4wMDQgcHBtIGR1cmluZyB0aGUgc2FsdGluZyBvdXQgcGhhc2UuIFRoZQptZWFzdXJlZCBjb25jZW50cmF0aW9ucyBvZiBoeWRyb2dlbiBjaGxvcmlkZSB3ZXJlIHNpZ25pZmljYW50bHkgaGlnaGVyIGR1cmluZyB0aGUKc2FsdGluZyBvdXQgcGhhc2UgYXMgY29tcGFyZWQgdG8gdGhlIGNvb2tpbmcgcGhhc2UuIEZvciBleGFtcGxlLCBpbiBjb29rICMyIHRoZSBhdmVyYWdlCmNvbmNlbnRyYXRpb24gZHVyaW5nIHNhbHRpbmcgb3V0IHdhcyAzLjEgcHBtLCBhbmQgYW4gYXZlcmFnZSBjb25jZW50cmF0aW9uIG9mIDAuMTMgcHBtCndhcyBtZWFzdXJlZCBkdXJpbmcgdGhlIGNvb2tpbmcgcGhhc2UuIFNpbWlsYXIgcmVzdWx0cyB3ZXJlIG1lYXN1cmVkIGR1cmluZyBjb29rICMxLgoyLjMuNCBTdW1tYXJ5IG9mIFRhcmdldCBDaGVtaWNhbHMgZm9yIFJlZCBQIE1ldGhvZApPZiB0aGUgbGlzdCBvZiBvcmdhbmljIGFuZCBpbm9yZ2FuaWMgY2hlbWljYWxzIGxpc3RlZCBpbiBUYWJsZSA1LCBoeWRyb2dlbiBjaGxvcmlkZSwKaHlkcm9nZW4gaW9kaWRlLCBhbmQgcGhvc3BoaW5lIGFyZSBpbiBnYXNlb3VzIGZvcm0gYXQgcm9vbSB0ZW1wZXJhdHVyZSwgYW5kIHRvbHVlbmUgaXMKYSB2b2xhdGlsZSBsaXF1aWQgYXQgcm9vbSB0ZW1wZXJhdHVyZS4gSW9kaW5lIHN1YmxpbWVzIHNsb3dseSBhdCByb29tIHRlbXBlcmF0dXJlLiBUaGUKbGlzdCBvZiBwb3RlbnRpYWwgdGFyZ2V0cyBmb3IgdGhpcyBwcm9jZXNzIGNvbnNpc3RzIG9mOgp4CgpIeWRyb2dlbiBjaGxvcmlkZQoKeAoKSHlkcm9nZW4gaW9kaWRlCgp4CgpJb2RpbmUKCjI0CgoMeAoKUGhvc3BoaW5lCgp4CgpUb2x1ZW5lCgoyLjQgT3RoZXIgTWV0aG9kcwpNYW55IG90aGVyIG1hbnVmYWN0dXJpbmcgbWV0aG9kcyBleGlzdCB0byBwcm9kdWNlIG1ldGhhbXBoZXRhbWluZSwgYWx0aG91Z2ggdGhlCnRocmVlIG1ldGhvZHMgb3V0bGluZWQgaGVyZSAoQmlyY2gsIFAyUCwgUmVkIFApIGFyZSB0aGUgbW9zdCBjb21tb24uIFRoZSBvdGhlcgptYW51ZmFjdHVyaW5nIG1ldGhvZHMgd2lsbCBiZSBzaW1wbHkgbWVudGlvbmVkIGhlcmUgZm9yIHJlZmVyZW5jZSwgYnV0IHNpbmNlIHRoZXkgYXJlCnVuY29tbW9uLCBhIGxpc3Qgb2YgdGFyZ2V0IGNoZW1pY2FscyBmb3IgdGhlc2UgbWV0aG9kcyB3aWxsIG5vdCBiZSBjcmVhdGVkLiBXaXRoCmVwaGVkcmluZS9wc2V1ZG9lcGhlZHJpbmUgYXMgcHJlY3Vyc29ycywgdGhlcmUgYXJlIHR3byBtYWluIHdheXMgdG8gb2J0YWluCm1ldGhhbXBoZXRhbWluZTogZGlyZWN0IHJlZHVjdGlvbiBhbmQgaW5kaXJlY3QgcmVkdWN0aW9uLiBUaGUgQmlyY2ggcmVkdWN0aW9uIGFuZCBSZWQKUCBtZXRob2RzIGFyZSBkaXJlY3QgcmVkdWN0aW9uIHRlY2huaXF1ZXMgZm9yIGluc3RhbmNlLiBEaXJlY3QgcmVkdWN0aW9uIG1ldGhvZHMgYXJlCmVzc2VudGlhbGx5IG9uZSBzdGVwIHByb2Nlc3Nlcy4gT3RoZXIgZGlyZWN0IHJlZHVjdGlvbiBtZXRob2RzIGluY2x1ZGUgdGhlIFdvbGZmLUtpc2huZXIKbWV0aG9kLCB3aGljaCB1c2VzIGh5ZHJhemluZSBoeWRyYXRlIGFzIHRoZSByZWR1Y2luZyBhZ2VudCwgYW5kIHRoZSBaaW5jIHJlZHVjdGlvbgptZXRob2QsIHdoaWNoIGludm9sdmVzIHRoZSB1c2Ugb2YgemluYyBtZXRhbCBhbmQgZm9ybWljIGFjaWQuCkluZGlyZWN0IHJlZHVjdGlvbiB1c2VzIGEgdHdvLXN0ZXAgcHJvY2VzcyB3aGVyZWJ5IHRoZSBoeWRyb3h5bCBncm91cCBvbiB0aGUKZXBoZWRyaW5lL3BzZXVkb2VwaGVkcmluZSBtb2xlY3VsZSBpcyBmaXJzdCByZXBsYWNlZCBieSBhIGNobG9yaW5lIG9yIGJyb21pbmUgYXRvbS4KVGhlIGNobG9yaW5lL2Jyb21pbmUgYXRvbSBpcyBzdWJzZXF1ZW50bHkgcmVwbGFjZWQgYnkgYSBoeWRyb2dlbiBhdG9tIHRvIHlpZWxkCm1ldGhhbXBoZXRhbWluZSBbNl0uIENvbXBvdW5kcyBzdWNoIGFzIHRoaW9ueWwgY2hsb3JpZGUgKFNPQ2wyKSwgcGhvc3Bob3J1cwpwZW50YWNobG9yaWRlIChQQ2w1KSwgcGhvc3Bob3J1cyB0cmljaGxvcmlkZSAoUENsMyksIHBob3NwaG9ydXMgcGVudGFicm9taWRlIChQQnI1KSwKYW5kIHBob3NwaG9ydXMgdHJpYnJvbWlkZSAoUEJyMykgY2FuIGFsbCBiZSB1c2VkIHRvIGFjY29tcGxpc2ggdGhlIGZpcnN0IHN0ZXAuIFRoZQpzZWNvbmQgc3RlcCwgcmVwbGFjaW5nIHRoZSBjaGxvcmluZS9icm9taW5lIHdpdGggaHlkcm9nZW4sIGNhbiBiZSBhY2NvbXBsaXNoZWQgdmlhCnNldmVyYWwgcm91dGVzLCBzdWNoIGFzIHRoZSB1c2Ugb2YgbGl0aGl1bSBhbHVtaW51bSBoeWRyaWRlIG9yIHZpYSBjYXRhbHl0aWMKaHlkcm9nZW5hdGlvbiAodGhlIGNhdGFseXN0IGNhbiBiZSBSYW5leSBuaWNrZWwsIHBsYXRpbnVtLCBwYWxsYWRpdW0sIGV0Yy4pLiBUaGUgRW1kZQptZXRob2QgaXMgYW4gZXhhbXBsZSBvZiBpbmRpcmVjdCByZWR1Y3Rpb247IGVwaGVkcmluZS9wc2V1ZG9lcGhlZHJpbmUgaXMgZmlyc3QgY29udmVydGVkCmludG8gY2hsb3JvZXBoZWRyaW5lIHVzaW5nIHRoaW9ueWwgY2hsb3JpZGUsIHRoZW4gaW50byBtZXRoYW1waGV0YW1pbmUgdmlhIGNhdGFseXRpYwpoeWRyb2dlbmF0aW9uLgoKMy4gSWxsZWdhbCBDaGVtaWNhbCBXYXN0ZSBEdW1wcwpNZXRoYW1waGV0YW1pbmUgbGFicyB0eXBpY2FsbHkgcHJvZHVjZSA1IHVuaXRzIG9mIHRveGljIHdhc3RlIGZvciBldmVyeSB1bml0IG9mCm1ldGhhbXBoZXRhbWluZSBwcm9kdWNlZCBbN10uIENoZW1pY2FsIGFuZCBlcXVpcG1lbnQgd2FzdGVzIGFyZSBvZnRlbiBoYXBoYXphcmRseQpkaXNwb3NlZCBvZiBpbiBwdWJsaWMgc3BhY2VzLCByYW5naW5nIGZyb20gcGFya3MgdG8gd2F0ZXJ3YXlzLCBwb3NpbmcgYSBkYW5nZXIgdG8gYm90aApwZW9wbGUgYW5kIHRoZSBlbnZpcm9ubWVudC4gRG9jdW1lbnRhdGlvbiBvZiB0aGVzZSBpbGxlZ2FsIHdhc3RlIGR1bXBzIGlzIHJhcmUgaW4gdGhlCmxpdGVyYXR1cmUsIGFuZCB3ZSB3ZXJlIG5vdCBhYmxlIHRvIHZpc2l0IHN1Y2ggd2FzdGUgZHVtcHMuIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQKd2l0aGluIHRoaXMgc2VjdGlvbiBpcyBkZXJpdmVkIGZyb20gYSBwcmVzZW50YXRpb24gYnkgdGhlIFN1cnJleSBGaXJlIERlcGFydG1lbnQsIHdob3NlCkhhemFyZG91cyBNYXRlcmlhbHMgKEhhek1hdCkgdGVhbSBoYW5kbGVzIHdhc3RlIGR1bXAgY2xlYW4tdXAgWzEzXS4gVW5mb3J0dW5hdGVseSwKZGF0YSBvbiBjaGVtaWNhbCBjb25jZW50cmF0aW9ucyBwcmVzZW50IGF0IHdhc3RlIGR1bXBzIHdhcyBub3QgaW5jbHVkZWQgaW4gdGhlCnByZXNlbnRhdGlvbi4KCjMuMSBMb2NhdGlvbgpDb21tb24gd2FzdGUgZHVtcCBzaXRlcyBpbmNsdWRlOgp4CgpEaXRjaGVzIGJ5IHRoZSBzaWRlIG9mIHRoZSByb2FkCgp4CgpWYWNhbnQgbG90cwoKeAoKTmV3IGhvdXNpbmcgZGV2ZWxvcG1lbnRzCgoyNQoKDHgKCkZpZWxkcwoKeAoKUGFya3MKCngKCldhdGVyd2F5cwoKRmlndXJlIDUgLSBNZXRoYW1waGV0YW1pbmUgcHJvZHVjdGlvbiB3YXN0ZSBkdW1wLCA0IGJhcnJlbHMgYW5kIGJhZ3MgY29udGFpbmluZyBnYXJiYWdlLiBEaXRjaAppbiB0aGUgMTg1MDAtYmxvY2sgb2YgMjh0aCBBdmVudWUsIFN1cnJleSwgQkMsIENhbmFkYSBbMTNdCgpDbGFuZGVzdGluZSBsYWIgb3BlcmF0b3JzIGFyZSBmYWlybHkgaW5kaXNjcmltaW5hdGUgYWJvdXQgd2hlcmUgdGhlIHdhc3RlcyBhcmUgZHVtcGVkLCBhcwpsb25nIGFzIHRoZSBsb2NhdGlvbiBpcyBpc29sYXRlZCB5ZXQgYWNjZXNzaWJsZSB3aXRoIGEgdmVoaWNsZS4KCjI2CgoMRmlndXJlIDYgLSBFeGFtcGxlIG9mIGEgcG9ydGFibGUgY29udGFpbmVyIGR1bXAgc2l0ZSBbMTNdCgozLjIgQ2hhcmFjdGVyaXN0aWNzClRoZXJlIGFyZSBzZXZlcmFsIHN0cm9uZyBpbmRpY2F0b3JzIHRoYXQgaWRlbnRpZnkgYSBjb2xsZWN0aW9uIG9mIGdhcmJhZ2UgYXMgYSBjbGFuZGVzdGluZQpkcnVnIGxhYiB3YXN0ZSBkdW1wLiBGb3IgaW5zdGFuY2U6CngKCkluZHVzdHJpYWwgY2hlbWljYWwgY29udGFpbmVycyAocGxhc3RpYyBvciBtZXRhbCkgYXJlIHByZXNlbnQKCngKCkNoZW1pY2FsIG5hbWUsIFdITUlTLCBvciBIYXpNYXQgbGFiZWxzIGFyZSB2aXNpYmxlCgp4CgpMYWJlbHMgYXBwZWFyIHRvIGJlIGludGVudGlvbmFsbHkgcmVtb3ZlZCBvciBwYWludGVkIG92ZXIKCngKCkNoZW1pY2FscyBjb21lIGZyb20gYW4gaW5kdXN0cmlhbCBvciBjaGVtaWNhbCBzdXBwbGllciwgb3IgaG9tZSBoYXJkd2FyZSBzdG9yZQoKeAoKQWJub3JtYWwgdHViZXMvaG9zZXMgcHJvdHJ1ZGUgZnJvbSBjb250YWluZXJzCgp4CgpPYmplY3RzIGFyZSBoZWF2aWx5IHN0YWluZWQKCngKCkxhYiBlcXVpcG1lbnQgb3IgZ2xhc3N3YXJlIGlzIHByZXNlbnQKCkNvbnRhaW5lcnMgb2YgdGhlIGZvbGxvd2luZyBjaGVtaWNhbHMsIG1hbnkgb2YgdGhlbSBhdmFpbGFibGUgYXQgdGhlIGxvY2FsIGhhcmR3YXJlIHN0b3JlLAptYXkgaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIGEgY2xhbmRlc3RpbmUgbGFiIHdhc3RlIGR1bXA6CngKCkFjZXRvbmUKCngKClRvbHVlbmUKCngKClBhaW50IHRoaW5uZXIKCngKCkNhbXAgZnVlbAoKeAoKRXRoZXIgKHN0YXJ0aW5nIGZsdWlkKQoKeAoKRGVuYXR1cmVkIGFsY29ob2wKCjI3CgoMeAoKTXVyaWF0aWMgYWNpZAoKeAoKSW9kaW5lIHRpbmN0dXJlCgp4CgpEcmFpbiBjbGVhbmVyCgp4CgpSdWJiaW5nIGFsY29ob2wKCkxpa2V3aXNlLCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGZvbGxvd2luZyBpdGVtcyBtYXkgaW5kaWNhdGUgdGhhdCBhIHdhc3RlIGR1bXAgaXMgcHJlc2VudDoKeAoKU3RhaW5lZCBjb2ZmZWUgZmlsdGVycwoKeAoKR2xhc3N3YXJlCgp4CgpNYXNvbiBqYXJzCgp4CgpCdWNrZXRzCgpDaGFyYWN0ZXJpc3RpY3Mgb2Ygd2FzdGUgZHVtcHMgdmFyeSB0cmVtZW5kb3VzbHkuIEFzIG1lbnRpb25lZCBieSBEZXB1dHkgRmlyZSBDaGllZgpKaW0gQm9uZCBvZiB0aGUgU3VycmV5IEZpcmUgU2VydmljZSwgc29tZSB3YXN0ZSBkdW1wcyB3aWxsIGZlYXR1cmUgbGlxdWlkIGFuZCBzb2xpZAp3YXN0ZXMgZnVsbHkgc2VhbGVkIGluIGluZHVzdHJpYWwgZHJ1bSBjb250YWluZXJzLCB3aGlsZSBvdGhlciBkdW1wcyB3aWxsIGNvbnNpc3Qgb2YKZ2FyYmFnZSBiYWdzIGNvbnRhaW5pbmcgY29mZmVlIGZpbHRlcnMsIGJyb2tlbiBnbGFzc3dhcmUsIGV0Yy4gT3RoZXIgZmFjdG9ycyB0aGF0IGFmZmVjdCB0aGUKY2hhcmFjdGVyaXN0aWNzIG9mIHdhc3RlIGR1bXAgc2l0ZXMgaW5jbHVkZSB0aGUgbWFudWZhY3R1cmluZyBwcm9jZXNzIHVzZWQgKGV2ZW4gZm9yIHRoZQpzYW1lIHByb2Nlc3MgZGlmZmVyZW50IGNoZW1pY2FscyBtYXkgYmUgc3Vic3RpdHV0ZWQpLCB0aGUgaW5kaWZmZXJlbmNlIG9mIHRoZSBsYWIKb3BlcmF0b3JzLCBhbmQgZXZlbiB0aGUgY3VycmVudCBhdmFpbGFiaWxpdHkgb2YgY29udGFpbmVycy4KCjQuIFN1bW1hcnkgb2YgVGFyZ2V0IENoZW1pY2FscwpCYXNlZCBvbiB0aGUgbGlzdCBvZiBkZXRlY3RhYmxlIGdhc2VzIGFuZCB2b2xhdGlsZSBsaXF1aWRzIGdpdmVuIGF0IHRoZSBlbmQgb2YgZWFjaAptZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBwcm9jZXNzIGluIHRoaXMgc2VjdGlvbiwgYmVsb3cgaXMgYSB0YWJsZSBjb250YWluaW5nIHRoZQp0YXJnZXQgbGlzdCBvZiBjaGVtaWNhbHMsIGNsYXNzaWZpZWQgYnkgbWV0aGFtcGhldGFtaW5lIG1hbnVmYWN0dXJpbmcgcHJvY2VzcyAoVGFibGUgNikuCgoyOAoKDFRhYmxlIDYgLSBMaXN0IG9mIHRhcmdldCBjaGVtaWNhbHMsIGNsYXNzaWZpZWQgYnkgbWV0aGFtcGhldGFtaW5lIG1hbnVmYWN0dXJpbmcgcHJvY2VzcwpCaXJjaCBSZWR1Y3Rpb24KQW1tb25pYQoKWAoKSHlkcm9nZW4gQ2hsb3JpZGUKClgKClAyUAoKUmVkIFAKClgKClgKCkh5ZHJvZ2VuIElvZGlkZQoKWAoKUGhvc3BoaW5lCgpYCgpJb2RpbmUKClgKCkFjZXRpYyBBbmh5ZHJpZGUKClgKCkZvcm1pYyBBY2lkCgpYCgpIZXhhbmUKClgKCkhlcHRhbmUKClgKCkN5Y2xvaGV4YW5lCgpYCgpNZXRoeWxhbWluZQoKWAoKTi1tZXRoeWxmb3JtYW1pZGUKClgKClBoZW55bGFjZXRvbmUKClgKClBoZW55bGFjZXRpYyBhY2lkCgpYCgpUZXRyYWh5ZHJvZnVyYW4KClgKClRvbHVlbmUKClgKClgKClgKCjUuIEdlbmVyYWwgSW5mb3JtYXRpb24gb24gTGVnaXRpbWF0ZSBVc2VzIG9mIFRhcmdldCBDaGVtaWNhbHMKTW9zdCBvZiB0aGUgY2hlbWljYWxzIHVzZWQgaW4gbWV0aGFtcGhldGFtaW5lIHByb2R1Y3Rpb24gYXJlLCBvciBjYW4gYmUgZXh0cmFjdGVkIGZyb20KY29tbW9uIGhvdXNlaG9sZCBjaGVtaWNhbHMuIEEgc3VtbWFyeSBvZiBsZWdpdGltYXRlIHVzZXMgb2YgdGhlc2UgY2hlbWljYWxzIGlzCnByb3ZpZGVkIGluIGEgY2xhbmRlc3RpbmUgbWV0aGFtcGhldGFtaW5lIGNvb2tib29rLCB3aGljaCBhbHNvIGluY2x1ZGVzIGEgc2VjdGlvbiBvbgpzdHJhdGVnaWVzIHRvIGFjcXVpcmUgdGhlc2UgY2hlbWljYWxzIGluIGxhcmdlIHF1YW50aXRpZXMgYW5kIGV2YWRlIHBvbGljZSBbNl0uIEJlbG93IGlzIGEKc2VyaWVzIG9mIHRhYmxlcyBkZXRhaWxpbmcgdGhlIGxlZ2l0aW1hdGUgdXNlcyBvZiB0aGUgdGFyZ2V0IGNoZW1pY2Fscywgb3JnYW5pemVkIGJ5Cm1ldGhhbXBoZXRhbWluZSBzeW50aGVzaXMgbWV0aG9kLgoKMjkKCgw1LjEgQ29tbW9uIENoZW1pY2FscyBmb3IgYWxsIE1ldGhvZHMKVGFibGUgNyAtIFN1bW1hcnkgb2YgbGVnaXRpbWF0ZSB1c2VzIG9mIGNoZW1pY2FscyB1c2VkIGluIG5lYXJseSBhbGwgbWV0aGFtcGhldGFtaW5lCm1hbnVmYWN0dXJpbmcgcHJvY2Vzc2VzCkNoZW1pY2FsCgpMZWdpdGltYXRlIFVzZQoKSHlkcm9nZW4gQ2hsb3JpZGUKCkhvdXNlaG9sZAp4CgpUb2lsZXQgYm93bCBjbGVhbmVyCgpJbmR1c3RyaWFsCgpUb2x1ZW5lCgp4CgpDaGVtaWNhbCBpbnRlcm1lZGlhdGUgaW4gbWFueSBjaGVtaWNhbCByZWFjdGlvbnMKCngKCldvb2wtY290dG9uIHNlcGFyYXRpb24KCkhvdXNlaG9sZAp4CgpQYWludCB0aGlubmVyCgp4CgpTb2x2ZW50IGZvciBhZGhlc2l2ZXMsIHNpbGljb25lIHNlYWxhbnRzLCBldGMuCgp4CgpPY3RhbmUgYm9vc3RlciBpbiBnYXNvbGluZSBmdWVscwoKSW5kdXN0cmlhbAp4CgpNZXRhbCBkZWdyZWFzZXIKCngKCk1hbnVmYWN0dXJlIG9mIGluc2VjdGljaWRlcwoKNS4yIEJpcmNoIFJlZHVjdGlvbiBNZXRob2QKVGFibGUgOCAtIFN1bW1hcnkgb2YgbGVnaXRpbWF0ZSB1c2VzIG9mIGNoZW1pY2FscyBzcGVjaWZpYyB0byB0aGUgQmlyY2ggbWFudWZhY3R1cmluZyBwcm9jZXNzCkNoZW1pY2FsCgpMZWdpdGltYXRlIFVzZQoKQW1tb25pYQoKSG91c2Vob2xkCngKCldhdGVyIGRpc2luZmVjdGFudCAoYWRkZWQgd2l0aCBjaGxvcmluZSkKCkluZHVzdHJpYWwKCkhleGFuZQoKeAoKUHJvZHVjdGlvbiBvZiBuaXRyaWMgYWNpZCBmb3IgZmVydGlsaXplcnMgYW5kIGV4cGxvc2l2ZXMKCngKCkFsdGVybmF0aXZlIGZ1ZWwKCkhvdXNlaG9sZAp4CgpDYW1wZXIgZnVlbAoKeAoKQ29uc3RpdHVlbnQgb2YgZ2Fzb2xpbmUKCkluZHVzdHJpYWwKCkhlcHRhbmUKCngKCkdlbmVyYWwgcHVycG9zZSBub24tcG9sYXIgc29sdmVudAoKeAoKQ29uc3RpdHVlbnQgb2YgZ2x1ZXMgdXNlZCBmb3Igc2hvZXMsIGxlYXRoZXIgcHJvZHVjdHMsIHJvb2ZpbmcKCkhvdXNlaG9sZAp4CgpDYW1wZXIgZnVlbAoKeAoKUnViYmVyIGNlbWVudCBzb2x2ZW50CgpJbmR1c3RyaWFsCgozMAoKDHgKQ3ljbG9oZXhhbmUKCkdlbmVyYWwgcHVycG9zZSBub24tcG9sYXIgc29sdmVudAoKSG91c2Vob2xkCngKCkNhbXBlciBmdWVsCgpJbmR1c3RyaWFsCgpUZXRyYWh5ZHJvZnVyYW4KCngKCkdlbmVyYWwgbm9uLXBvbGFyIHNvbHZlbnQKCngKClVzZWQgaW4gcHJvZHVjdGlvbiBvZiBpbnRlcm1lZGlhdGVzIHVzZWQgaW4gbnlsb24gcHJvZHVjdGlvbgoKSW5kdXN0cmlhbAp4CgpHZW5lcmFsIG1vZGVyYXRlbHkgcG9sYXIgc29sdmVudCB1c2VkIHRvIGRpc3NvbHZlIHdpZGUgcmFuZ2Ugb2YKbm9ucG9sYXIvcG9sYXIgY29tcG91bmRzCgp4CgpVc2VkIGluIHBvbHltZXIgc2NpZW5jZQoKeAoKTWV0YWwgZGVncmVhc2VyCgo1LjMgUDJQLWJhc2VkIE1ldGhvZHMKVGFibGUgOSAtIFN1bW1hcnkgb2YgbGVnaXRpbWF0ZSB1c2VzIG9mIGNoZW1pY2FscyBzcGVjaWZpYyB0byBQMlAtYmFzZWQgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMKQ2hlbWljYWwKCkxlZ2l0aW1hdGUgVXNlCgpBY2V0aWMgYW5oeWRyaWRlCgpJbmR1c3RyaWFsCgpGb3JtaWMgYWNpZAoKeAoKTWFudWZhY3R1cmUgb2YgcGhvdG9ncmFwaGljIGZpbG0KCngKCkRlaHlkcmF0aW5nIGFnZW50CgpJbmR1c3RyaWFsCngKCk1ldGh5bGFtaW5lCgpJbmR1c3RyaWFsCngKCk4tbWV0aHlsZm9ybWFtaWRlCgpQcmVzZXJ2YXRpdmUgYW5kIGFudGliYWN0ZXJpYWwgYWdlbnQgaW4gbGl2ZXN0b2NrIGZlZWQKClByb2R1Y3Rpb24gb2YgaW5zZWN0aWNpZGVzLCBleHBsb3NpdmVzCgpJbmR1c3RyaWFsCngKClVzZWQgaW4gZHJ1ZywgZHllLCBmbGF2b3VyLCBwbGF0aW5nIGFuZCBlbGVjdHJvbHlzaXMgaW5kdXN0cmllcwoKUGhlbnlsYWNldG9uZQoKeAoKTm8gbWFqb3IgbGVnaXRpbWF0ZSB1c2UKClBoZW55bGFjZXRpYyBhY2lkCgpJbmR1c3RyaWFsCngKCk1hbnVmYWN0dXJlIG9mIHBlcmZ1bWVzLCBoZXJiaWNpZGVzLCBwZW5pY2lsbGluLCBmbGF2b3VyaW5nIGFnZW50cwoKMzEKCgw1LjQgUmVkIFBob3NwaG9ydXMtYmFzZWQgTWV0aG9kcwpUYWJsZSAxMCAtIFN1bW1hcnkgb2YgbGVnaXRpbWF0ZSB1c2VzIG9mIGNoZW1pY2FscyBzcGVjaWZpYyB0byBSZWQgUC1iYXNlZCBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcwpDaGVtaWNhbAoKTGVnaXRpbWF0ZSBVc2UKCkh5ZHJvZ2VuIElvZGlkZQoKSW5kdXN0cmlhbAoKSW9kaW5lCgp4CgpEaXNpbmZlY3RhbnQKCngKCkNoZW1pY2FsIHJlYWdlbnQKCkluZHVzdHJpYWwKeAoKUGhvc3BoaW5lCgpNYW51ZmFjdHVyZSBvZiBpb2RpbmUgY29tcG91bmRzIGFuZCBhbnRpc2VwdGljcwoKSW5kdXN0cmlhbAp4CgpGdW1pZ2FudAoKeAoKRG9wYW50IGluIHNlbWljb25kdWN0b3IgaW5kdXN0cnkKCjMyCgoMUGFydCBCOiBDaGVtaWNhbCBTZW5zaW5nIFRlY2hub2xvZ2llcwpUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZvY3VzIG9uIGFuYWx5emluZyBzZW5zaW5nIHRlY2hub2xvZ2llcyB0aGF0IGFyZSBjdXJyZW50bHkKY29tbWVyY2lhbGx5IGF2YWlsYWJsZSBhbmQvb3IgYXJlIGRlc2NyaWJlZCBpbiByZXNlYXJjaCBsaXRlcmF0dXJlLiBUaGUgb2JqZWN0aXZlIG9mIHRoZQpmb2xsb3dpbmcgc2VjdGlvbiBpcyB0byBwcm92aWRlIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgY2hlbWljYWwKc2Vuc2luZyB0ZWNobm9sb2dpZXMgYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiB0aG9zZSB0ZWNobm9sb2dpZXMgd2l0aCByZXNwZWN0IHRvIHRoZSB0YXJnZXQKYW5hbHl0ZXMgYW5kIHRoZSBwcm9wb3NlZCBhcHBsaWNhdGlvbi4gRWFjaCBzZW5zaW5nIHRlY2hub2xvZ3kgd2lsbCBiZSB0cmVhdGVkCmluZGl2aWR1YWxseS4gVGhlIGZvY3VzIHdpbGwgYmUgb24gc2Vuc29ycyBjYXBhYmxlIG9mIGRldGVjdGluZyB0aGUgdGFyZ2V0IGFuYWx5dGVzLgpDb21tZXJjaWFsbHkgYXZhaWxhYmxlIHNlbnNvciB0ZWNobm9sb2dpZXMgYW5kIHB1Ymxpc2hlZCByZXNlYXJjaCBkZXZpY2VzIHdpbGwgYmUKaW52ZXN0aWdhdGVkIHdpdGggcmVzcGVjdCB0byBkZXRlY3Rpb24gbGltaXRzLCBzZW5zaXRpdml0eSwgcmVzcG9uc2UgdGltZSwgc2VsZWN0aXZpdHksIHNpemUsCmFuZCBjb3N0LiBUaGUgc2VjdGlvbiB3aWxsIGJlIGNvbmNsdWRlZCB3aXRoIGEgc3VtbWFyeSBvZiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlCnNlbnNpbmcgdGVjaG5vbG9naWVzIGZvciBhbGwgdGFyZ2V0IGFuYWx5dGVzLgoKU2Vuc29yIEFycmF5cwpTaW11bHRhbmVvdXMgZGV0ZWN0aW9uIG9mIHNldmVyYWwgY2hlbWljYWwgY29tcG91bmRzIGNhbiBiZSBwZXJmb3JtZWQgd2l0aCBlaXRoZXIKaW5kaXZpZHVhbCBoaWdobHkgc2VsZWN0aXZlIHNlbnNvcnMgb3IgYXJyYXlzIG9mIGNyb3NzLXNlbnNpdGl2ZSBzZW5zb3JzIHdoZXJlIHRoZQppbmRpdmlkdWFsIHNlbnNvcnMgYXJlIHNlbnNpdGl2ZSB0byBtdWx0aXBsZSBhbmFseXRlcyBpbiBhIGRpc3RpbmN0IG1hbm5lci4gU2Vuc29yIGFycmF5cwpjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgaG9tb2dlbm91cyBvciBoZXRlcm9nZW5lb3VzIHNlbnNpbmcgdGVjaG5vbG9naWVzLiBJZiBzZW5zb3IKYXJyYXlzIGFyZSB1c2VkLCB0aGVuIGNoZW1vbWV0cmljIGRhdGEgcHJvY2Vzc2luZywgYmFzZWQgb24gc3RhdGlzdGljYWwgcGF0dGVybgpyZWNvZ25pdGlvbiB0ZWNobmlxdWVzLCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSB1bmlxdWUgc2lnbmF0dXJlIGluIHRoZSBqb2ludCByZXNwb25zZSBvZiBhbGwKc2Vuc29ycyBpbiB0aGUgYXJyYXkgWzE0XS4KCjEuIEVsZWN0cm9jaGVtaWNhbCBTZW5zb3JzCjEuMSBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBvZiBFbGVjdHJvY2hlbWljYWwgR2FzIFNlbnNvcnMKRWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMgYXJlIGJhc2VkIG9uIHRoZSBjaGVtaWNhbCByZWFjdGlvbnMgYW5kIGVsZWN0cm9uaWMgY2hhcmdlCnRyYW5zZmVyIHRoYXQgb2NjdXIgYXQgdGhlIGludGVyZmFjZSBvZiBhbiBlbGVjdHJvbiBjb25kdWN0b3IgKHR5cGljYWxseSBhIG1ldGFsbGljIGVsZWN0cm9kZSkKYW5kIGFuIGlvbmljIGNvbmR1Y3RvciAoYSBsaXF1aWQgb3Igc29saWQgZWxlY3Ryb2x5dGUpIFsxNV0uIEVsZWN0cm9jaGVtaWNhbCBjZWxscyBjYW4gYmUKZGl2aWRlZCBpbnRvIHR3byBiYXNpYyBncm91cHM6IHRob3NlIHRoYXQgcHJvZHVjZSBjdXJyZW50IGFzIGEgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIG9mCmNoZW1pY2FsIHRvIGVsZWN0cmljYWwgZW5lcmd5IChnYWx2YW5pYyBjZWxscykgYW5kIHRob3NlIHRoYXQgcmVxdWlyZSBhbiBleHRlcm5hbCBjdXJyZW50IHRvCnByb2R1Y2UgY2hlbWljYWwgY2hhbmdlcywgdGh1cyBjb252ZXJ0aW5nIGVsZWN0cmljYWwgdG8gY2hlbWljYWwgZW5lcmd5IChlbGVjdHJvbHlzaXMKY2VsbHMpLiBFbGVjdHJvY2hlbWljYWwgc2Vuc29ycyBtYXkgYmVsb25nIHRvIGVpdGhlciBjYXRlZ29yeS4KRWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMgY2FuIGFsc28gYmUgY2xhc3NpZmllZCBpbnRvIHRoZSBmb2xsb3dpbmcgdGhyZWUgY2F0ZWdvcmllczoKcG90ZW50aW9tZXRyaWMgKGNoYW5nZSBpbiB2b2x0YWdlKSwgYW1wZXJvbWV0cmljIChjaGFuZ2UgaW4gY3VycmVudCksIGFuZAppbXBlZGFuY2UvYWRtaXR0YW5jZSAoY2hhbmdlIGluIHJlc2lzdGFuY2UpIGJhc2VkIGRldmljZXMgWzE2XS4gTW9zdCBjb21tZXJjaWFsCmVsZWN0cm9jaGVtaWNhbCBzZW5zb3JzIGFyZSBhbXBlcm9tZXRyaWMsIGFuZCBhIHR5cGljYWwgZ2FzIHNlbnNvciB3aWxsIGNvbnNpc3Qgb2YgdGhlCnNlbnNpbmcvd29ya2luZyBlbGVjdHJvZGUgd2hlcmUgdGhlIHJlYWN0aW9uIG9mIGludGVyZXN0IGlzIHRha2luZyBwbGFjZSwgYSBsaXF1aWQKZWxlY3Ryb2x5dGUgc29sdXRpb24sIGFuZCBhIGNvdW50ZXIgZWxlY3Ryb2RlIHRvIGNvbXBsZXRlIHRoZSBlbGVjdHJpY2FsIGNpcmN1aXQsIGFzIHNob3duIGluCkZpZ3VyZSA3LiBGaWd1cmUgOCBzaG93cyBhIHBpY3R1cmUgb2YgYSB0eXBpY2FsIGNvbW1lcmNpYWwgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvci4KRWxlY3Ryb2NoZW1pY2FsIGdhcyBzZW5zb3JzIHR5cGljYWxseSBpbmNsdWRlIGEgc21hbGwgY2FwaWxsYXJ5LXR5cGUgb3BlbmluZyBmb3IgdGhlCmFuYWx5dGUgZ2FzIHRvIGRpZmZ1c2UgdGhyb3VnaCwgYXMgd2VsbCBhcyBhIGh5ZHJvcGhvYmljIG1lbWJyYW5lOyB0aGlzIGRlc2lnbiBpcyB1c2VkIHRvCnByZXZlbnQgdGhlIGxpcXVpZCBlbGVjdHJvbHl0ZSBmcm9tIGxlYWtpbmcgb3V0IG9mIHRoZSBzZW5zb3IgWzE3XS4gVGhlIGdhcyB0aGF0IGRpZmZ1c2VzCnRocm91Z2ggdGhlIG1lbWJyYW5lIHJlYWN0cyBhdCB0aGUgc3VyZmFjZSBvZiB0aGUgc2Vuc2luZyBlbGVjdHJvZGUsIGFuZCBpcyBjYXRhbHl6ZWQgYnkKdGhlIGVsZWN0cm9kZSBtYXRlcmlhbCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIHB1cnBvc2UgWzE3XS4gQW4gZXh0ZXJuYWwKZHJpdmluZyB2b2x0YWdlIGlzIGFwcGxpZWQgdG8gdGhlIGNlbGwsIGFuZCB0aGUgcmVzdWx0aW5nIGVsZWN0cmljYWwgY3VycmVudCBpcyBwcm9wb3J0aW9uYWwgdG8KMzMKCgx0aGUgY29uY2VudHJhdGlvbiBvZiBhbmFseXRlIGdhcy4gQSB0aGlyZCBlbGVjdHJvZGUsIHRoZSByZWZlcmVuY2UgZWxlY3Ryb2RlLCBpcyBsb2NhdGVkIGluCnByb3hpbWl0eSB0byB0aGUgc2Vuc2luZyBlbGVjdHJvZGUuIEl0IGhhcyBhIGZpeGVkIGFic29sdXRlIGVsZWN0cmljIHBvdGVudGlhbCBhbmQgZW5hYmxlcwp0aGUgc2Vuc29yIHRvIG1haW50YWluIGEgc3RhYmxlIHBvdGVudGlhbCBhdCB0aGUgc2Vuc2luZyBlbGVjdHJvZGUsIGJ5IG1haW50YWluaW5nIGEKY29uc3RhbnQgdm9sdGFnZSBiZXR3ZWVuIHRoZSBzZW5zaW5nIGFuZCByZWZlcmVuY2UgZWxlY3Ryb2Rlcy4KCkZpZ3VyZSA3IC0gU2NoZW1hdGljIG9mIGEgdHlwaWNhbCBlbGVjdHJvY2hlbWljYWwgZ2FzIHNlbnNvciBbMTddCgpGaWd1cmUgOCAtIENvbW1lcmNpYWwgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvciAoRHLDpGdlclNlbnNvcikuIFRoZSBkaWFtZXRlciBvZiB0aGUgc2Vuc29yIGJvZHkgaXMKYXBwcm94aW1hdGVseSA1MCBtbS4KCjEuMiBDb21tZXJjaWFsIEVsZWN0cm9jaGVtaWNhbCBHYXMgU2Vuc29ycwpUaGUgZmlyc3QgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMgZGF0ZXMgYmFjayB0byB0aGUgMTk1MOKAmXMgYW5kIHdlcmUgdXNlZCBmb3Igb3h5Z2VuCm1vbml0b3JpbmcgWzE4XS4gVGhyb3VnaCBzZXZlcmFsIGRlY2FkZXMgb2YgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50LCBlbGVjdHJvY2hlbWljYWwKc2Vuc29ycyBoYXZlIGJlZW4gcHJvdmVuIGFzIGEgbWF0dXJlIGFuZCBzdWNjZXNzZnVsbHkgY29tbWVyY2lhbGl6ZWQgdGVjaG5vbG9neS4KQW1wZXJvbWV0cmljIGVsZWN0cm9jaGVtaWNhbCBnYXMgc2Vuc29ycyBhcmUgb2Z0ZW4gdXNlZCB0byBkZXRlY3QgdG94aWMgaW5kdXN0cmlhbApjaGVtaWNhbHMgKFRJQ+KAmXMpIGR1ZSB0byB0aGVpciBzbWFsbCBzaXplLCBsb3cgcG93ZXIgcmVxdWlyZW1lbnRzLCBhbmQgZ29vZApwZXJmb3JtYW5jZS9jb3N0IHRyYWRlLW9mZiBbMTZdLiBBbW1vbmlhLCBoeWRyb2dlbiBjaGxvcmlkZSwgYW5kIHBob3NwaGluZSBhcmUgYW1vbmcKdGhlIHRveGljIGdhc2VzIHRoYXQgYXJlIGRldGVjdGFibGUgdXNpbmcgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMuIENvbW1lcmNpYWwgY29tcGFuaWVzCm9mZmVyaW5nIGVsZWN0cm9jaGVtaWNhbCBzZW5zb3IgcHJvZHVjdHMgYXJlIGxpc3RlZCBpbiBUYWJsZSAxMS4KCjM0CgoMVGFibGUgMTEgLSBDb21wYW5pZXMgc2VsbGluZyBlbGVjdHJvY2hlbWljYWwgZ2FzIHNlbnNvcnMKQ29tcGFueQoKUHJvZHVjdChzKQoKeAoKQWlyc2Vuc2UgQW5hbHl0aWNzCgp4CgpHREEgMgoKeAoKQlcgVGVjaG5vbG9naWVzIChIb25leXdlbGwgSW50ZXJuYXRpb25hbCkKCngKCkdhc0FsZXJ0IEV4dHJlbWUKCngKCkdhc0FsZXJ0IE1pY3JvIDUKCngKCkNpdHkgVGVjaG5vbG9neSBMdGQuCgp4CgpTZW5zb3JpYwoKeAoKQ3Jvd2NvbiAoSGFsbWEgcGxjKQoKeAoKVFhnYXJkLUlTKwoKeAoKWGdhcmQKCngKCkRyw6RnZXJ3ZXJrIEFHCgp4CgpEcsOkZ2VyU2Vuc29ycwoKeAoKRU5NRVQKCngKClNEUy05N0QKCngKClRhcmdldAoKeAoKVFgtMjAwMAoKeAoKRUMtRjktTkgzCgp4CgpFQwoKeAoKQUxUQUlSIFBybwoKeAoKU0FGRVNJVEUgU2VudHJ5Cgp4CngKCk1hbm5pbmcgU3lzdGVtcyAoSG9uZXl3ZWxsIEludGVybmF0aW9uYWwpCgpNaW5lIFNhZmV0eSBBcHBsaWFuY2VzCgp4CgpSQUUgU3lzdGVtcwoKeAoKQXJlYVJBRQoKeAoKU2Vuc2lkeW5lIChTaWVnZWwtUm9iZXJ0IEluYy4pCgp4CgpTZW5zQWxlcnQgUGx1cwoKeAoKU2Vuc0FsZXJ0Cgp4CgpGcmVlZG9tIDUwMDAKCngKCk1pbmkgU0EKCngKClNlbnRpbmVsIElJCgp4CgpUeWNvIFNjb3R0IEluc3RydW1lbnRzCgoxLjMgUmVjZW50IFJlc2VhcmNoIG9uIEVsZWN0cm9jaGVtaWNhbCBHYXMgU2Vuc29ycwpBbHRob3VnaCBlbGVjdHJvY2hlbWljYWwgc2Vuc29ycyBhcmUgYSBjb21tZXJjaWFsbHkgbWF0dXJlIHRlY2hub2xvZ3ksIHJlc2VhcmNoCmlubm92YXRpb25zIGFyZSBzdGlsbCB0YWtpbmcgcGxhY2UuIE5ha2FubyBhbmQgT2dhd2EgdXNlZCB0aGluIGdvbGQtZmlsbSBlbGVjdHJvZGVzIHRvCmltcHJvdmUgdGhlIHNlbnNpdGl2aXR5IG9mIGFuIGVsZWN0cm9jaGVtaWNhbCBnYXMgc2Vuc29yIGZvciBkZXRlY3RpbmcgcGhvc3BoaW5lOyB0aGUKcmVwb3J0ZWQgZGV0ZWN0aW9uIGxpbWl0IHdhcyAwLjAxIHBwbSBbMTldLiBOYWdhc2hpbWEgYW5kIFN1enVraSBjcmVhdGVkIGEgc2Vuc29yIHdpdGgKc2lsdmVyIGFuZCBwbGF0aW51bSBtZXNoIGVsZWN0cm9kZXMgYW5kIGEgc2lsdmVyIGlvZGlkZSBkaXNrIGFjdGluZyBhcyBhIHNvbGlkIGVsZWN0cm9seXRlClsyMF0uIFRoZSBlbGVjdHJvY2hlbWljYWwgc2Vuc29yIHdhcyBhYmxlIHRvIGRldGVjdCBpb2RpbmUgdmFwb3VyIGRvd24gdG8gMC4xIHBwYiB3aXRoIGEKcmVzcG9uc2UgdGltZSBvZiAzIG1pbnV0ZXMuClZhcmlvdXMgcmVzZWFyY2hlcnMgaW4gdGhlIGZpZWxkIGhhdmUgaW52ZXN0aWdhdGVkIG1pbmlhdHVyaXphdGlvbiBvZiBnYXMgc2Vuc29ycyBpbiBvcmRlcgp0byBmdXJ0aGVyIHJlZHVjZSB0aGUgd2VpZ2h0LCB2b2x1bWUsIGFuZCBlbmVyZ3kgY29uc3VtcHRpb24gb2Ygc2Vuc29ycy4gVGhlIHNlbnNvciBjYW4KYmUgYXNzZW1ibGVkIG9udG8gYSBzbWFsbCBjaGlwIG9yIGJlIGludGVncmF0ZWQgaW50byBhIGNvbXBsZXRlIG1pbmkgYW5hbHl0aWNhbAppbnN0cnVtZW50IHVzaW5nIG1pY3JvZmFicmljYXRpb24gdGVjaG5pcXVlcyB0byBmb3JtYSBtaWNybyB0b3RhbC1hbmFseXNpcyBzeXN0ZW0KKM68VEFTKS4gTGF1cXVlIGV0IGFsLiBmYWJyaWNhdGVkIGVsZWN0cm9jaGVtaWNhbCBtaWNyb3NlbnNvcnMgYnkgc3B1dHRlcmluZyB0aGluIGZpbG1zCm9mIEN1QnIgb24gaW50ZXItZGlnaXRhdGVkIGNvcHBlciBlbGVjdHJvZGVzIFsyMV0uIFRoZSBkZXRlY3Rpb24gbGltaXQgZm9yIHRoaXMgdGVjaG5vbG9neQp3YXMgc3RhdGVkIHRvIGJlIGJlbG93IDEwIHBwbSBmb3IgYW1tb25pYSBbMjJdLgoKMzUKCgxSZXNlYXJjaGVycyBoYXZlIGFsc28gZXhwbG9yZWQgYXJyYXktYmFzZWQgZWxlY3Ryb2NoZW1pY2FsIHNlbnNpbmcsIGluIGFuIGF0dGVtcHQgdG8KYnVpbGQgc2Vuc29ycyB0aGF0IGFyZSBjYXBhYmxlIG9mIGRldGVjdGluZyBhIGxhcmdlciByYW5nZSBvZiBjaGVtaWNhbHMuIEZvciBleGFtcGxlLApTdGV0dGVyIGV0IGFsLiBoYXZlIHVzZWQgYW4gYXJyYXkgb2YgZm91ciBkaWZmZXJlbnQgZWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMgdGhhdCBjYW4gYmUKb3BlcmF0ZWQgaW4gZm91ciBkaWZmZXJlbnQgbW9kZXMgZGVwZW5kaW5nIG9uIHRoZWlyIHJlc3BlY3RpdmUgaGVhdGVyIGZpbGFtZW50IChwbGF0aW51bQpvciByaG9kaXVtKSBhbmQgaXRzIG9wZXJhdGluZyB0ZW1wZXJhdHVyZSwgZm9yIGRldGVjdGluZyBoYXphcmRvdXMgZ2FzZXMgc3VjaCBhcwphbW1vbmlhLCBiZW56ZW5lLCBhY2V0b25lLCBweXJpZGluZSwgZXRjLiBbMjNdLiBSZXBvcnRlZCBkZXRlY3Rpb24gbGltaXRzIHJhbmdlZCBmcm9tCjIwLTMwMCBwcG0gZm9yIGFsbCBvZiB0aGUgb3JnYW5pYyB2YXBvdXJzLgoKMS40IFByb3BlcnRpZXMgb2YgRWxlY3Ryb2NoZW1pY2FsIFNlbnNvcnMKRWxlY3Ryb2NoZW1pY2FsIHNlbnNvcnMgYXJlIG1pbGRseSBwcm9uZSB0byBjcm9zcy1pbnRlcmZlcmVuY2UgZnJvbSBvdGhlciBnYXNlcyBhbmQgYXJlCmdlbmVyYWxseSBzcGVjaWZpYyBmb3IgYSBwYXJ0aWN1bGFyIGdhcyBvciB2YXBvdXIuIEluIGFkZGl0aW9uLCB0aGV5IGRvIG5vdCBnZXQgcG9pc29uZWQsCmFuZCBjYW4gbW9uaXRvciBhdCBvciBiZWxvdyBwcG0gbGV2ZWxzIFsyNF0uIEhvd2V2ZXIsIGVsZWN0cm9jaGVtaWNhbCBzZW5zb3JzIGFyZQp0eXBpY2FsbHkgYXZhaWxhYmxlIG9ubHkgZm9yIHRveGljIGdhc2VzIGFuZCBveHlnZW4sIGFuZCBub3Qgb3JnYW5pYyBjb21wb3VuZHMuIEFzIHdlbGwsCnRoZSBtZW1icmFuZSBwcm90ZWN0aW5nIHRoZSBpbnNpZGUgb2YgdGhlIHNlbnNvciBpcyBwcm9uZSB0byBkZWdyYWRhdGlvbiBvdmVyIHRpbWUgWzI0XS4KCjIuIEdyYXZpbWV0cmljIFNlbnNvcnMgKFN1cmZhY2UgQWNvdXN0aWMgV2F2ZSwgQnVsayBBY291c3RpYwpXYXZlLCBhbmQgRmxleHVyYWwgUGxhdGUgV2F2ZSBEZXZpY2VzICkKMi4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIEdyYXZpbWV0cmljIEdhcyBTZW5zb3JzCkFjb3VzdGljIHdhdmVzIGFyZSBzdHJhaW4gd2F2ZXMgdGhhdCBwcm9wYWdhdGUgYXQgdGhlIHNwZWVkIG9mIHNvdW5kIGluIHNvbGlkcy4gRHVlIHRvIHRoZQpoaWdoIHF1YWxpdHkgZmFjdG9yIG9mIHRoZSBwcm9wYWdhdGlvbiBtZWRpdW0sIHRoZSB3YXZlcyB0cmF2ZWwgd2l0aCB2ZXJ5IGxpdHRsZSBlbmVyZ3kKbG9zcy4gT25lIG9mIHRoZSB0d28gbW9zdCBjb21tb24gY29uZmlndXJhdGlvbnMgYXBwbGllZCB0byBzZW5zaW5nIGlzIHRoZSB0aGlja25lc3NzaGVhciBtb2RlIChUU00pIHJlc29uYXRvcnMsIG9yIGJ1bGsgYWNvdXN0aWMgd2F2ZSAoQkFXKSBhcyB1c2VkIGluIHRoZSBxdWFydHogY3J5c3RhbAptaWNyb2JhbGFuY2UgKFFDTSksIHdoZXJlIHRoZSB3YXZlIHByb3BhZ2F0ZXMgdGhyb3VnaCB0aGUgYnVsayBvZiB0aGUgbWF0ZXJpYWwuIFRoZQpzZWNvbmQgbW9zdCBjb21tb24gcHJpbmNpcGxlIGlzIHRoZSBzdXJmYWNlIGFjb3VzdGljIHdhdmUgKFNBVykgcmVzb25hdG9yLCB3aGVyZSB0aGUKYWNvdXN0aWMgd2F2ZSB0cmF2ZWxzIG9ubHkgYWxvbmcgdGhlIHN1cmZhY2UsIGRvd24gdG8gYSBkZXB0aCBvZiBhYm91dCBvbmUgYWNvdXN0aWMKd2F2ZWxlbmd0aCBpbnRvIHRoZSBjcnlzdGFsIFsyNV0uIEZpZ3VyZSA5IHNob3dzIHRoZSBvcGVyYXRpb24gcHJpbmNpcGxlIG9mIGEgU0FXIHNlbnNvci4KQSB0aGlyZCBhbmQgbGVzcyBjb21tb24gdHlwZSBvZiBhY291c3RpYyBzZW5zb3IgdXNlcyBmbGV4dXJhbCBwbGF0ZSB3YXZlcyAoRlBXKS4gRlBXCmRldmljZXMgcmVseSBvbiBMYW1iIHdhdmUgcHJvcGFnYXRpb24gaW4gYSB0aGluIG1lbWJyYW5lIFsyNl0uCkluIG1hbnkgY2FzZXMsIGVzcGVjaWFsbHkgZm9yIFNBVyBzZW5zb3JzLCB0aGUgYWNvdXN0aWMgd2F2ZSBkZXZpY2UgaXMgZXNzZW50aWFsbHkgdXNlZAp0byBmb3JtIGEgc3RhYmxlIG9zY2lsbGF0aW5nIGNpcmN1aXQgd2hpY2ggY29uc2lzdCBvZiB0aHJlZSBrZXkgc2VjdGlvbnM6IGVsZWN0cmljYWwgdG8KbWVjaGFuaWNhbCB3YXZlIGNvbnZlcnNpb24sIG1lY2hhbmljYWwgdHJhbnNtaXNzaW9uIGxpbmUsIGFuZCBtZWNoYW5pY2FsIHRvIGVsZWN0cmljYWwKY29udmVyc2lvbi4gQXQgdGhlIHRyYW5zbWlzc2lvbiBsaW5lLCBlbmVyZ3kgaXMgdHJhbnNtaXR0ZWQgZXhjbHVzaXZlbHkgYXMgYWNvdXN0aWMgd2F2ZXMuCkluIG1vc3QgY2FzZXMsIHRoZSBjb25maW5lZCBhY291c3RpYyB3YXZlIGlzIGdlbmVyYXRlZCB1c2luZyB0aGUgcGllem9lbGVjdHJpYyBlZmZlY3QsCnJlcXVpcmluZyBhIHBpZXpvZWxlY3RyaWMgc3Vic3RyYXRlLiBNYWduZXRvc3RyaWN0aXZlIG1hdGVyaWFscyBjYW4gYWxzbyBiZSB1c2VkLCBhbHRob3VnaAp0aGV5IGFyZSBmYXIgbGVzcyBjb21tb24gd2hlbiBjb21wYXJlZCB0byBwaWV6b2VsZWN0cmljIGRldmljZXMgYW5kIHRoZXJlZm9yZSB3aWxsIG5vdApiZSBkZXNjcmliZWQgaW4gdGhpcyByZXBvcnQuIFBpZXpvZWxlY3RyaWMgY3J5c3RhbHMgYW5kIGNlcmFtaWNzIGFyZSBtYXRlcmlhbHMgdGhhdCBnZW5lcmF0ZQphbiBlbGVjdHJpYyBjaGFyZ2UgaW4gcmVzcG9uc2UgdG8gYXBwbGllZCBtZWNoYW5pY2FsIHN0cmVzcy4gVGhlIGVmZmVjdCBjYW4gYmUgcmV2ZXJzZWQ7CmFuIGV4dGVybmFsIGFwcGxpZWQgdm9sdGFnZSB3aWxsIHJlc3VsdCBpbiBtZWNoYW5pY2FsIGRlZm9ybWF0aW9uIG9mIHRoZSBwaWV6b2VsZWN0cmljCm1hdGVyaWFsLiBVdGlsaXppbmcgdGhpcyBlZmZlY3QsIGFuIGlucHV0IHRyYW5zZHVjZXIsIG9mdGVuIGluIGZvcm0gb2YgYW4gaW50ZXJkaWdpdGFsCnRyYW5zZHVjZXIgKElEVCksIHdpbGwgY29udmVydCBhbiBlbGVjdHJpY2FsIHNpZ25hbCAoYXQgYSBmcmVxdWVuY3kgbmVhciB0aGUgcmVzb25hbnQKZnJlcXVlbmN5IG9mIHRoZSBtZWNoYW5pY2FsIHN5c3RlbSkgaW50byBhIG1lY2hhbmljYWwsIGFjb3VzdGljIHdhdmUsIHdoaWNoIHByb3BhZ2F0ZXMKb3Zlci90aHJvdWdoIHRoZSBzdWJzdHJhdGUgdG8gdGhlIG91dHB1dCB0cmFuc2R1Y2VyLiBBdCB0aGUgb3V0cHV0IHRyYW5zZHVjZXIsIHRoZQptZWNoYW5pY2FsIHdhdmUgaXMgY29udmVydGVkIGJhY2sgaW50byBhbiBlbGVjdHJpY2FsIHNpZ25hbC4KCjM2CgoMRmlndXJlIDkgLSBPcGVyYXRpb24gcHJpbmNpcGxlIG9mIGEgU0FXIHNlbnNvciBbMjddCgpBIFNBVyBjaGVtaWNhbCBzZW5zb3IgY2FuIGJlIGZvcm1lZCBieSBjb2F0aW5nIHRoZSBzdWJzdHJhdGUgYmV0d2VlbiB0aGUgdHJhbnNkdWNlcnMKd2l0aCBhIGxheWVyIHRoYXQgaXMgc2Vuc2l0aXZlIHRvIHRoZSBkZXNpcmVkIGFuYWx5dGUocykuIEZvciBleGFtcGxlLCBpZiB0aGUgc2Vuc2luZyBsYXllcgpjb250YWlucyBtYXRlcmlhbCB0aGF0IGFic29yYnMgb3JnYW5pYyBtb2xlY3VsZXMgZnJvbSB0aGUgZ2FzIHBoYXNlLCB0aGUgbWFzcyBvZiB0aGUKYWJzb3JiZWQgbW9sZWN1bGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN1cmZhY2Ugb2YgdGhlIGRldmljZS4gVGhpcyBhZGRlZCBtYXNzIHdpbGwKcHJvZHVjZSBhIG1lYXN1cmFibGUgY2hhbmdlIGluIHRoZSByZXNvbmFudCBmcmVxdWVuY3kgb2YgdGhlIHNlbnNvci4gVGhlIHNlbGVjdGl2aXR5IG9mCnRoZSBzZW5zb3IgaXMgaGlnaGx5IGRlcGVuZGFudCBvbiB0aGUgc2VsZWN0aXZpdHkgb2YgdGhlIHNlbnNpbmcgbGF5ZXIuIEhvd2V2ZXIsIHRoZQpzZW5zaXRpdml0eSBvZiB0aGUgU0FXIHNlbnNvciBpcyB2ZXJ5IGhpZ2ggc2luY2UgZnJlcXVlbmN5IG1lYXN1cmVtZW50cyBjYW4gYmUgbWFkZQp3aXRoIHZlcnkgaGlnaCBwcmVjaXNpb24gdXNpbmcgbG9jay1pbiB0ZWNobmlxdWVzLiBUaGUgY2hhbGxlbmdlIHdpdGggdGhlc2Ugc2Vuc29ycyBpcyB0aGUKY2hvaWNlIG9mIHRoZSBhcHByb3ByaWF0ZSBjaGVtaXN0cnkgZm9yIHRoZSBzZW5zaW5nIGxheWVyIGluIG9yZGVyIHRvIGFjaGlldmUgdGhlIHJlcXVpcmVkCnNlbGVjdGl2aXR5LiBBIHRvcC1kb3duIHZpZXcgb2YgYSBTQVcgc2Vuc29yIGlzIHNob3duIGluIEZpZ3VyZSAxMC4KCjM3CgoMRmlndXJlIDEwIC0gVG9wLWRvd24gdmlldyBvZiBhIFNBVyBjaGVtaWNhbCBzZW5zb3IsIHBpZXpvZWxlY3RyaWMgc3Vic3RyYXRlIGlzIHR5cGljYWxseSBxdWFydHogYnV0CmNhbiBiZSBvdGhlciBtYXRlcmlhbHMgWzI0XQoKMi4yIENvbW1lcmNpYWwgR3JhdmltZXRyaWMgR2FzIFNlbnNvcnMKQXQgdGhlIHByZXNlbnQsIG9ubHkgdHdvIGNvbXBhbmllcyBvZmZlciBjb21tZXJjaWFsIFNBVy1iYXNlZCBnYXMgc2Vuc2luZyB1bml0cywgYXMKc2hvd24gaW4gVGFibGUgMTIuClRhYmxlIDEyIC0gQ29tcGFuaWVzIHNlbGxpbmcgZ3JhdmltZXRyaWMgZ2FzIHNlbnNvcnMKQ29tcGFueQoKUHJvZHVjdChzKQoKRWxlY3Ryb25pYyBTZW5zb3IgVGVjaG5vbG9neQoKeAoKTW9kZWwgNDIwMCBabm9zZQoKeAoKTW9kZWwgNzEwMAoKeAoKSEFaTUFUQ0FECgp4CgpTQVcgTWluaUNBRCBta0lJCgpNaWNyb3NlbnNvciBTeXN0ZW1zIEluYy4gKE1pbmUgU2FmZXR5IEFwcGxpYW5jZXMpCgoyLjMgUmVjZW50IFJlc2VhcmNoIG9uIEdyYXZpbWV0cmljIEdhcyBTZW5zb3JzClNoZW4gZXQgYWwuIGZhYnJpY2F0ZWQgWVgtTGlOYk8zIFNBVyBjaGVtaWNhbCBzZW5zb3JzIHdpdGggTC1nbHV0YW1pYyBhY2lkCmh5ZHJvY2hsb3JpZGUgc2Vuc2luZyBmaWxtczsgdGhlIGxvd2VzdCBkZXRlY3Rpb24gbGltaXQgZm9yIGFtbW9uaWEgaXMgcmVwb3J0ZWQgdG8gYmUgMC41NgpwcG0gWzI4XS4gVGhlIGNoYWxsZW5nZSB3aXRoIHRoaXMgc2Vuc29yIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9uZy10ZXJtIHN0YWJpbGl0eSwgYXMgdGhlCm1lYXN1cmVkIHZhbHVlcyBkcmlmdCBhdCBhIHJhdGUgb2YgLTAuMDEgcHBtIHBlciBkYXkgYXQgcm9vbSB0ZW1wZXJhdHVyZS4gUGVuemEgZXQgYWwuCnVzZWQgY2FyYm9uIG5hbm90dWJlIGNvYXRlZCBTQVcgc2Vuc29ycyB0byBkZXRlY3QgZXRoYW5vbCwgZXRoeWxhY2V0YXRlLCBhbmQgdG9sdWVuZQpbMjldLiBFdGhhbm9sIGFuZCB0b2x1ZW5lIHdlcmUgZGV0ZWN0ZWQgYXQgbGV2ZWxzIGFzIGxvdyBhcyAxIHBwbS4gVGhlIHJlc2VhcmNoZXJzIGFsc28KZm91bmQgdGhhdCB0aGUgc2VsZWN0aXZpdHkgdG8gdm9sYXRpbGUgb3JnYW5pYyBjb21wb3VuZHMgKFZPQ+KAmXMpIGNhbiBiZSB0dW5lZCBieSB0aGUKY2hvaWNlIG9mIG9yZ2FuaWMgc29sdmVudCB1c2VkIHRvIGRpc3BlcnNlIHRoZSBjYXJib24gbmFub3R1YmVzIG9udG8gdGhlIFNBVyBzZW5zb3JzLgpMaSBldCBhbC4gYXBwbGllZCBjeWNsb2RleHRyaW4gdGhpbiBmaWxtcyB0byBTQVcgc2Vuc29ycyB1c2luZyBzZWxmLWFzc2VtYmxlZCBtb25vbGF5ZXJzCmFuZCBzb2wtZ2VsIHRlY2huaXF1ZXMsIHRoaXMgdGVjaG5pcXVlIHBlcm1pdHRlZCB0aGUgZGV0ZWN0aW9uIG9mIGFjZXRvbmUgdmFwb3VycyBhdApjb25jZW50cmF0aW9ucyBvZiAwLjIgcHBtIFszMF0uIEtpbSBhbmQgQ2hvaSBmYWJyaWNhdGVkIGFuIGFjdGl2YXRlZCBjYXJib24tY29hdGVkCnF1YXJ0eiBjcnlzdGFsIHNlbnNvciB0aGF0IGlzIGNhcGFibGUgb2YgZGV0ZWN0aW5nIG4taGVwdGFuZSBhdCBjb25jZW50cmF0aW9ucyBiZWxvdyAyMQpwcG0gWzMxXS4KCjM4CgoMMi40IFByb3BlcnRpZXMgb2YgR3JhdmltZXRyaWMgVGVjaG5vbG9neSBiYXNlZCBTZW5zb3JzClNBVyBzZW5zb3JzIHBvc3Nlc3Mgc2V2ZXJhbCBrZXkgYWR2YW50YWdlcywgaW5jbHVkaW5nIGxvdyBwb3dlciByZXF1aXJlbWVudHMsIGxvdwpkZXRlY3Rpb24gbGltaXRzLCBhbmQgZ29vZCBzZW5zaXRpdml0eS4gSG93ZXZlciwgdGhlIHNlbnNpbmcgYWJpbGl0eSBvZiBTQVcgc2Vuc29ycyBpcwpoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBzZWxlY3Rpdml0eSBvZiB0aGUgc2Vuc2luZyBsYXllciwgc28gZGlzY3JpbWluYXRpb24gYW1vbmcKdW5rbm93biBtaXh0dXJlcyBvZiBjaGVtaWNhbHMgbWF5IGJlIHBvb3IuIEFycmF5cyBvZiBTQVcgc2Vuc29ycyB3aXRoIGNvYXRpbmdzIG9mCmRpZmZlcmVudCBzZWxlY3Rpdml0eSBjYW4gYmUgdXNlZCB0byBwYXJ0aWFsbHkgcmVzb2x2ZSB0aGlzIGlzc3VlLiBJbiBhZGRpdGlvbiwgaWYgdGhlIHNlbnNpbmcKbGF5ZXIgaXMgcG9seW1lci1iYXNlZCwgdGhlcmUgbWF5IGJlIGlzc3VlcyB3aXRoIHNlbnNvciBkcmlmdCBzaW5jZSB0aGUgcG9seW1lciBsYXllcgptaWdodCBkZWdyYWRlIG92ZXIgdGltZS4gVGhlc2Ugc2Vuc29ycyBwb3NzZXNzIHNpZ25pZmljYW50IHBvdGVudGlhbCBpbiB0aGUgYXBwbGljYXRpb24gb2YKbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcnkgZGV0ZWN0aW9uIGJ1dCB3aWxsIHJlcXVpcmUgYWRkaXRpb25hbCByZXNlYXJjaCB0byBkZXRlcm1pbmUKdGhlIG9wdGltYWwgc2Vuc2luZyBsYXllciBnZW9tZXRyeSBhbmQgY2hlbWlzdHJ5LgoKMy4gQ2hlbWljYWwgU2Vuc2luZyB1c2luZyBJbmZyYXJlZCBTcGVjdHJvc2NvcHkKMy4xIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIG9mIEluZnJhcmVkIFNwZWN0cm9tZXRyeQpJbmZyYXJlZCAoSVIpIHNwZWN0cm9tZXRyeSBpcyBhIGJyYW5jaCBvZiBzcGVjdHJvc2NvcHkgdGhhdCB1c2VzIGluZnJhcmVkIGxpZ2h0IGFzIHRoZQpyYWRpYXRpdmUgc291cmNlLiBJUiBzcGVjdHJvbWV0cnkgYmVsb25ncyB1bmRlciB0aGUgY2F0ZWdvcnkgb2Ygb3B0aWNhbCBzZW5zaW5nLCBidXQgaXQKd2FzIHNlcGFyYXRlZCBpbnRvIGEgZGlzdGluY3Qgc2VjdGlvbiBiZWNhdXNlIHRoZSB0ZWNobmlxdWUgaGFzIGJlZW4gaGVhdmlseSBpbnZlc3RpZ2F0ZWQsCmFuZCBpdCBpcyBhcmd1YWJseSB0aGUgbW9zdCBwb3B1bGFyIG9wdGljYWwgdGVjaG5pcXVlIHVzZWQgZm9yIHJlbW90ZSBzZW5zaW5nLiBUaGUKYW5hbHl0ZSBpcyBleGNpdGVkIGJ5IGEgcmFuZ2Ugb2YgSVIgd2F2ZWxlbmd0aHMgYW5kIHRoZSB1bmlxdWUgYWJzb3JwdGlvbiBzcGVjdHJ1bSBvZgp0aGUgYW5hbHl0ZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBzYW1wbGUgY29uc3RpdHVlbnRzLiBUaGUgY2hlbWljYWwgZnVuY3Rpb25hbCBncm91cHMKcHJlc2VudCBpbiB0aGUgc2FtcGxlIGVhY2ggaGF2ZSBhIHVuaXF1ZSBJUiBhYnNvcnB0aW9uIHNwZWN0cnVtLiBJUiBpcyBhIG5vbi1jb250YWN0CmFuZCBub24tZGVzdHJ1Y3RpdmUgbWVhc3VyZW1lbnQgdGVjaG5pcXVlLCBhbmQgY2FuIGJlIHVzZWQgaW4gYm90aCBwb2ludCBhbmQgcmVtb3RlCnNlbnNpbmcgYXBwbGljYXRpb25zLiBDb21wb3VuZHMgdGhhdCBkbyBub3QgYWJzb3JiIElSIHdhdmVsZW5ndGhzIGFyZSBob21vbnVjbGVhcgpkaWF0b21pYyBtb2xlY3VsZXMgc3VjaCBhcyBuaXRyb2dlbiwgb3h5Z2VuLCBhbmQgaHlkcm9nZW4uIEhvd2V2ZXIsIG9yZ2FuaWMKY29tcG91bmRzLCB3aGljaCBtYWtlIHVwIHRoZSBidWxrIG9mIHRoZSB0YXJnZXQgY2hlbWljYWwgbGlzdCwgY2FuIGJlIHJlYWRpbHkgaWRlbnRpZmllZC4KRWFybHkgaW5mcmFyZWQgc3BlY3Ryb21ldGVycyB3ZXJlIG9mIHRoZSBkaXNwZXJzaXZlIHR5cGUsIGFuZCBlbWVyZ2VkIGluIHRoZSAxOTQw4oCZcy4gQQpkaXNwZXJzaXZlIGluZnJhcmVkIHNwZWN0cm9tZXRlciBjYW4gb25seSBtZWFzdXJlIG9uZSB3YXZlbGVuZ3RoIGF0IGEgdGltZS4gVGhlCnZlcnNhdGlsaXR5IG9mIGluZnJhcmVkIHNwZWN0cm9zY29weSB3YXMgZ3JlYXRseSBlbmhhbmNlZCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgRm91cmllcgp0cmFuc2Zvcm0gaW5mcmFyZWQgKEZUSVIpIHNwZWN0cm9tZXRlcnMgaW4gdGhlIDE5NjDigJlzLiBBbiBGVElSIHNwZWN0cm9tZXRlciBmaXJzdApvYnRhaW5zIGFuIGludGVyZmVyb2dyYW0gb2YgYSBzYW1wbGUgc2lnbmFsIHVzaW5nIGFuIGludGVyZmVyb21ldGVyLiBBIEZvdXJpZXIKVHJhbnNmb3JtIGlzIHRoZW4gYXBwbGllZCB0byB0aGUgZGF0YSBmb3JtaW5nIHRoZSBpbnRlcmZlcm9ncmFtIHRvIHlpZWxkIHRoZSBJUiBzcGVjdHJ1bS4KVGhlIHNwZWN0cnVtIHJlcHJlc2VudHMgdGhlIHBlcmNlbnRhZ2UgaW50ZW5zaXR5ICgwLTEwMCUpIG9mIGxpZ2h0IHRoYXQgcGFzc2VzIHRocm91Z2gKdGhlIHNhbXBsZSBmb3IgZWFjaCBJUiB3YXZlbGVuZ3RoLCBhcyBkZXBpY3RlZCBpbiBGaWd1cmUgMTEuIFRoZSBzcGVjdHJ1bSBvZiB0aGUgc2FtcGxlCmlzIHRoZW4gY29tcGFyZWQgd2l0aCBhIHJlZmVyZW5jZSBzcGVjdHJ1bSwgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIHNhbXBsZS4gQSBxdWFsaXRhdGl2ZQphbmFseXNpcyBvZiB0aGUgcmVzdWx0IGlzIHN0cmFpZ2h0IGZvcndhcmQgZm9yIHNpbmdsZSBjb21wb25lbnQgY29tcG91bmRzLiBIb3dldmVyLCBmb3IKbW9yZSBjb21wbGV4IGNvbXBvdW5kcyBvciBtaXh0dXJlcyBjb250YWluaW5nIG1hbnkgY29tcG9uZW50cywgc3RhdGlzdGljYWwgYW5hbHlzaXMKdGVjaG5pcXVlcyBhcmUgdXNlZCBzdWNoIGFzIFBhcnRpYWwgTGVhc3QgU3F1YXJlcyAoUExTKSwgYXJ0aWZpY2lhbCBuZXVyYWwgbmV0d29ya3MsIG9yIGEKc2VsZi1vcmdhbml6aW5nIG1hcCBmb3IgYXV0b21hdGljIGNvbXBvdW5kIGlkZW50aWZpY2F0aW9uOyBhIHJldmlldyBvZiBib3RoLCBxdWFsaXRhdGl2ZQphbmQgcXVhbnRpdGF0aXZlIHRlY2huaXF1ZXMgaXMgZ2l2ZW4gaW4gWzMyXS4KCjM5CgoMRmlndXJlIDExIC0gRXhhbXBsZSBvZiBJUiBzcGVjdHJhIG9mIDMgZGlmZmVyZW50IG9yZ2FuaWMgY29tcG91bmRzLiBUaGUgZ3JhcGhzIHNob3cgdGhlCm5vcm1hbGl6ZWQgdHJhbnNtaXR0YW5jZSAoJVQpIGFzIGEgZnVuY3Rpb24gb2Ygd2F2ZWxlbmd0aCBpbiBjbS4gRGlmZmVyZW50IGJvbmRzIChpLmUuIEMtQ0gzLCBDPU8sCmV0Yy4pIHdpdGhpbiB0aGVzZSBjb21wb3VuZHMgYXJlIGV4Y2l0ZWQgYnkgZGlmZmVyZW50IElSIHdhdmVsZW5ndGhzLCBhdCB3aGljaCB0aGV5IGFic29yYiB0aGUgSVIKcmFkaWF0aW9uLiBbMzNdCgozLjIgQ29tbWVyY2lhbCBJUiBHYXMgU2Vuc29ycwpDb21wYW5pZXMgdGhhdCBvZmZlciBGVElSLWJhc2VkIGdhcyBzZW5zaW5nIGVxdWlwbWVudCBhcmUgbGlzdGVkIGluIFRhYmxlIDEzLCBhbmQKY29tcGFuaWVzIHRoYXQgb2ZmZXIgZGlzcGVyc2l2ZSBJUi1iYXNlZCBnYXMgc2Vuc2luZyBlcXVpcG1lbnQgYXJlIGxpc3RlZCBpbiBUYWJsZSAxNC4KRlRJUiBzcGVjdHJvbWV0ZXJzIGFyZSBhdmFpbGFibGUgaW4gYSB2YXJpZXR5IG9mIGNvbmZpZ3VyYXRpb25zLiBGVElSIGVxdWlwbWVudCBpcwpiZWNvbWluZyBpbmNyZWFzaW5nbHkgcG9ydGFibGU7IGFuIGV4YW1wbGUgaXMgdGhlIEVudmlyb25pY3MgT3kgSUQxMDAsIHdoaWNoIHBhY2tzIHRoZQpzcGVjdHJvbWV0ZXIsIHNhbXBsZSBjZWxsIGFuZCBzaWduYWwgcHJvY2Vzc2luZyBlbGVjdHJvbmljcyBpbnRvIGFuIDExLjUga2cgYmFja3BhY2sKKEZpZ3VyZSAxMikuCgpGaWd1cmUgMTIgLSBFbnZpcm9uaWNzIE95IElEMTAwIHBvcnRhYmxlIEZUSVIgZ2FzIGFuYWx5emVyIFszNF0KCjQwCgoMVGFibGUgMTMgLSBDb21wYW5pZXMgb2ZmZXJpbmcgRlRJUiBnYXMgc2Vuc29ycwpDb21wYW55CgpQcm9kdWN0KHMpCgp4CgpBQkIgQm9tZW4KCngKCkZUTEEyMDAwIHNlcmllcwoKeAoKQnJ1a2VyLURhbHRvbmljcyBJbmMuCgp4CgpSQVBJRAoKeAoKRW52aXJvbmljcyBPeQoKeAoKSUQxMDAKCngKClNtaXRocyBEZXRlY3Rpb24KCngKCkdhc0lECgp4CgpIYXpNYXRJRAoKVGFibGUgMTQgLSBDb21wYW5pZXMgb2ZmZXJpbmcgZGlzcGVyc2l2ZSBJUiBzZW5zb3JzCkNvbXBhbnkKClByb2R1Y3QocykKCngKCngKClRyaXBsZSBQbHVzKyBJUgoKeAoKRGV0ZWN0aXZlKwoKQ3Jvd2NvbiAoSGFsbWEgcGxjKQoKeAoKRGVscGhpYW4gQ29ycG9yYXRpb24KCngKCkRldGVybWluYXRvcgoKeAoKRU5NRVQKCngKCklSLTYwMDAKCngKCmUyViB0ZWNobm9sb2dpZXMgTHRkLgoKeAoKSVIxeHh4IFNlcmllcyAxCgp4CgpMYXNlckdhcwoKeAoKTGFzZXJHQVMgSUkKCngKCkxhc2VyR0FTIEkKCngKCk1pbmUgU2FmZXR5IEFwcGxpYW5jZXMKCngKCk9yaW9uIFBsdXMgSVIKCngKClNlbnNpZHluZSAoU2llZ2VsLVJvYmVydCBJbmMuKQoKeAoKU2Vuc0FsZXJ0IFBsdXMKCjMuMyBSZWNlbnQgUmVzZWFyY2ggb24gSVIgR2FzIFNlbnNvcnMKQnkgZXhwbG9pdGluZyB0aGUgY2hhbmdlIGluIGFic29yYmFuY2Ugb2YgcG9seWFuaWxpbmUgZXhwb3NlZCB0byBhbW1vbmlhLCBDaHJpc3RpZSBldCBhbC4Kd2VyZSBhYmxlIHRvIGRldGVjdCBhbW1vbmlhIGF0IGxldmVscyBhcyBsb3cgYXMgNiBwcG0gdXNpbmcgc3RhbmRhcmQgdGVsZWNvbSAxMzAwIG5tCklSIHdhdmVsZW5ndGhzIFszNV0uIEluIGEgcmVjZW50IHJldmlldyBwYXBlciBvbiBuZWFyLWluZnJhcmVkIGRpb2RlIGxhc2VyIHNwZWN0cm9zY29weSwKTWFydGluIHN1bW1hcml6ZXMgdGhlIGRldGVjdGlvbiBsaW1pdHMgZm9yIHNldmVyYWwgZ2FzIHNwZWNpZXMgYXMgY29uY2VudHJhdGlvbiB4IHBhdGgKbGVuZ3RoIChwcG0ubSkuIFRoZSBkZXRlY3Rpb24gbGltaXRzIGZvciBoeWRyb2dlbiBjaGxvcmlkZSwgaHlkcm9nZW4gaW9kaWRlLCBhbmQKYW1tb25pYSBhcmUgMC4wMDggcHBtLm0sIDAuMiBwcG0ubSwgYW5kIDAuMjAzIHBwbS5tIHJlc3BlY3RpdmVseSBbMzZdLgoKMy40IFByb3BlcnRpZXMgb2YgSVIgU3BlY3Ryb21ldHJ5IGJhc2VkIFNlbnNvcnMKVGhlIGdyZWF0ZXN0IGFkdmFudGFnZSBvZmZlcmVkIGJ5IElSIHNwZWN0cm9tZXRlcnMgaXMgdGhlIGFiaWxpdHkgdG8gc2Vuc2UgZ2FzZXMgcmVtb3RlbHk7CnRoZSBzZW5zb3IgaXRzZWxmIGRvZXMgbm90IG5lZWQgdG8gYmUgZXhwb3NlZCB0byBjb3Jyb3NpdmUgb3IgcmVhY3RpdmUgZ2FzZXMgWzM3XS4gSW4KYWRkaXRpb24sIElSIHNwZWN0cm9tZXRlcnMgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IG1hbnkgdHlwZXMgb2Ygb3JnYW5pYyBhbmQgaW5vcmdhbmljCmNvbXBvdW5kcy4KRGlzYWR2YW50YWdlcyBvZiBJUiBzZW5zaW5nIGVxdWlwbWVudCBpbmNsdWRlIHN1c2NlcHRpYmlsaXR5IHRvCnRlbXBlcmF0dXJlIGZsdWN0dWF0aW9ucyBzaW5jZSBhbiBJUiBkZXRlY3RvciBpcyBlc3NlbnRpYWxseSBhIHRlbXBlcmF0dXJlIHNlbnNvciwgYW5kIHRoZQphYmlsaXR5IHRvIHJlbW90ZWx5IGRldGVjdCBsb3cgY29uY2VudHJhdGlvbnMgb2YgZ2FzIGRlcGVuZHMgdG8gYSBsYXJnZSBkZWdyZWUgb24gdGhlCmJhY2tncm91bmQuIEluIGFkZGl0aW9uLCBJUiBkZXZpY2VzIGNhbiBvbmx5IG1vbml0b3IgZ2FzZXMgdGhhdCBoYXZlIG5vbi1saW5lYXIKbW9sZWN1bGVzLCBhbmQgZHVlIHRvIHRoZSBoaWdoIGNvbXBsZXhpdHkgb2YgdGhlIHVuaXRzIHRoZXkgYWxzbyB0ZW5kIHRvIGJlIHJlbGF0aXZlbHkgaGlnaAppbiBjb3N0LgoKNDEKCgw0LiBJb24gTW9iaWxpdHkgU3BlY3Ryb21ldHJ5CjQuMSBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBvZiBJb24gTW9iaWxpdHkgU3BlY3Ryb21ldHJ5CklvbiBNb2JpbGl0eSBTcGVjdHJvbWV0cnkgKElNUykgaXMgYSBoaWdobHkgc2Vuc2l0aXZlIHRlY2huaXF1ZSB0aGF0IGNhbiBiZSB1c2VkIHRvCmFuYWx5emUgdGhlIGNvbXBvc2l0aW9uIG9mIGdhcyBtaXh0dXJlcy4gT25jZSBhIGdhc2VvdXMgc2FtcGxlIGhhcyBiZWVuIGludHJvZHVjZWQKaW50byB0aGUgZGV0ZWN0aW9uIGNoYW1iZXIsIGl0IGlzIGlvbml6ZWQgd2l0aCBhIHJhZGlhdGlvbiBzb3VyY2UsIGFuZCB0aGUgaW9ucyBhcmUgZXhwb3NlZAp0byBhIHVuaWZvcm0gZWxlY3RyaWMgZmllbGQgdGhhdCBhY2NlbGVyYXRlcyB0aGUgaW9ucyB0b3dhcmRzIHRoZSBkZXRlY3Rvci4gSW9ucyB3aXRoCmRpZmZlcmVudCBtYXNzIGFuZCBjaGFyZ2UgY29uZmlndXJhdGlvbiByZXF1aXJlIGEgZGlmZmVyZW50IGVsZWN0cmljIGZpZWxkIGluIG9yZGVyIHRvIHJlYWNoCnRoZSBkZXRlY3Rvci4gV2hlbiB0aGUgaW9uIGFycml2ZXMgYXQgdGhlIGRldGVjdG9yLCBhIGNoYXJnZSB0cmFuc2ZlciB0YWtlcyBwbGFjZSBmcm9tIHRoZQppb24gdG8gdGhlIGRldGVjdG9yIGFuZCByZXN1bHRzIGluIGEgbWVhc3VyYWJsZSBjdXJyZW50LiBBcyB0aGUgZWxlY3RyaWMgZmllbGQgaW50ZW5zaXR5IGlzCnZhcmllZCBvdmVyIHRpbWUsIGRpZmZlcmVudCBzZXRzIG9mIGlvbnMgd2lsbCBiZSBhYmxlIHRvIHJlYWNoIHRoZSBkZXRlY3RvciBhcyBhIGZ1bmN0aW9uIG9mCnRpbWUsIGRlcGVuZGluZyBvbiB0aGVpciBtYXNzIGFuZCBjaGFyZ2UuIEFzIGEgcmVzdWx0LCBnYXNlcyBvZiBkaWZmZXJlbnQgY29tcG9zaXRpb24KcHJvZHVjZSBhIHVuaXF1ZSBhbXBlcm9tZXRyaWMgc2lnbmF0dXJlLiBUaGUgSU1TIG9wZXJhdGluZyBwcmluY2lwbGUgaXMgZGVwaWN0ZWQgaW4KRmlndXJlIDEzLiBBbiBleGFtcGxlIG1lYXN1cmVtZW50IHJlc3VsdCBpcyBzaG93biBpbiBGaWd1cmUgMTQsIHdoZXJlIGFtbW9uaWEsIHRoZQpjb21wb3VuZCBvZiBpbnRlcmVzdCBpcyBkZXRlY3RlZCBhbG9uZyB3aXRoIGEgY29udGFtaW5hbnQuIElNUyBpcyBkaXN0aW5jdCBmcm9tIG1hc3MKc3BlY3Ryb21ldHJ5IChNUykgYmVjYXVzZSBpdCBvcGVyYXRlcyB1bmRlciBhdG1vc3BoZXJpYyBjb25kaXRpb25zIGFuZCBkb2VzIG5vdCByZXF1aXJlCmxhcmdlIGFuZCBleHBlbnNpdmUgdmFjdXVtIHB1bXBzLiBUaGlzIGZlYXR1cmUgZW5hYmxlcyBJTVMgdGVjaG5vbG9neSB0byBiZSBlYXNpbHkKbWluaWF0dXJpemVkIFsyNF0uIElNUyByZXNwb25zZSB0aW1lcyBhcmUgcXVpdGUgc2hvcnQsIHR5cGljYWxseSBvbiB0aGUgb3JkZXIgb2YgYSBmZXcKc2Vjb25kcy4KCkZpZ3VyZSAxMyAtIFNjaGVtYXRpYyBzaG93aW5nIHRoZSBJTVMgcHJpbmNpcGxlIG9mIG9wZXJhdGlvbi4gVGhlIGNvbGxlY3RlZCBlbGVjdHJpYyBjaGFyZ2VzIGZyb20KdGhlIGlvbnMgb24gdGhlIGRldGVjdG9ycyBhcmUgbWVhc3VyZWQgdXNpbmcgZWxlY3Ryb21ldGVycyBbMzhdCgpJTVMgaXMgY2FwYWJsZSBvZiBkZXRlY3RpbmcgYW5kIGlkZW50aWZ5aW5nIG1hbnkgdHlwZXMgb2YgY29tcG91bmRzIHN1Y2ggYXMgbmFyY290aWNzLApleHBsb3NpdmVzLCBhbmQgY2hlbWljYWwgd2FyZmFyZSBhZ2VudHMuIFRoZSBzZWxlY3Rpdml0eSBvZiBJTVMgcmVzcG9uc2UgY2FuIGJlIHR1bmVkCnZpYSB0aGUgY2hvaWNlIG9mIGlvbml6YXRpb24gc291cmNlIGFuZCBwb2xhcml0eSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIG9mIHByb2R1Y3QgaW9uIHRvCm1vbml0b3IgWzM5XS4KSW9uaXphdGlvbiBzb3VyY2VzIGNhbiBiZSByYWRpb2FjdGl2ZSBvciBub24tcmFkaW9hY3RpdmUgKGkuZS4KcGhvdG9pb25pemF0aW9uLCBjb3JvbmEgZGlzY2hhcmdlIGlvbml6YXRpb24sIGV0Yy4pLiBBcyBmb3IgdGhlIGNob2ljZSBvZiBpb24gcG9sYXJpdHksCmVsZWN0cm9uZWdhdGl2ZSBjb21wb3VuZHMgKGkuZS4gZXhwbG9zaXZlcykgYXJlIGJlc3QgZGV0ZWN0ZWQgYXMgbmVnYXRpdmUgaW9ucywgd2hpbGUKZWxlY3Ryb3Bvc2l0aXZlIGNvbXBvdW5kcyAoaS5lLiBkcnVncyBhbmQgb3RoZXIgYW1pbmVzKSBhcmUgYmVzdCBkZXRlY3RlZCBhcyBwb3NpdGl2ZSBpb25zClszOV0uCgo0MgoKDEZpZ3VyZSAxNCAtIFR5cGljYWwgY2hhcmdlIG1lYXN1cmVtZW50IGZyb20gSU1TLCB0aGUgZHJpZnQgdGltZSBvbiB0aGUgeC1heGlzIGNvcnJlc3BvbmRzIHRvCmVsZWN0cmljIGRyaWZ0IGZpZWxkIFszOV0KCjQuMiBDb21tZXJjaWFsIElNUyBHYXMgU2Vuc29ycwpJTVMgd2FzIGZpcnN0IGRldmVsb3BlZCBuZWFybHkgNDAgeWVhcnMgYWdvIGJ5IEthcmFzZWsgYW5kIENvaGVuLCBhbmQgYXMgYSByZXN1bHQsIHRoZQp0ZWNobm9sb2d5IGlzIHF1aXRlIG1hdHVyZS4gSU1TIGRldGVjdGlvbiB1bml0cyBhcmUgcmVhZGlseSBhdmFpbGFibGUgb24gdGhlIG1hcmtldC4gSW4KcGFydGljdWxhciwgdGhlcmUgaGFzIGJlZW4gaGlnaCBkZW1hbmQgZm9yIGFkb3B0aW9uIG9mIElNUyBmb3IgZGV0ZWN0aW5nIGV4cGxvc2l2ZXMsIGFuZAppdCBpcyBjdXJyZW50bHkgdGhlIG1vc3Qgd2lkZWx5IHVzZWQgdGVjaG5vbG9neSBmb3IgdGhlIGRldGVjdGlvbiBvZiB0cmFjZSBsZXZlbHMgb2Ygbml0cm9vcmdhbmljIGV4cGxvc2l2ZXMgb24gaGFuZGJhZ3MgYW5kIGNhcnJ5LW9uIGx1Z2dhZ2UgaW4gYWlycG9ydHMgWzQwXS4gQ29tbWVyY2lhbCBJTVMKdW5pdHMgYXJlIGF2YWlsYWJsZSBpbiBhIHJhbmdlIG9mIHNpemVzLCBhbmQgY2FuIGJlIG1pbmlhdHVyaXplZCBmb3IgaW50ZWdyYXRpb24gaW50bwpoYW5kaGVsZCB1bml0cy4KVGFibGUgMTUgbGlzdHMgSU1TIHZlbmRvcnMgd2l0aCBwcm9kdWN0cyBkZXNpZ25lZCB0byBkZXRlY3Qgc2V2ZXJhbCBvZiB0aGUgdGFyZ2V0IGFuYWx5dGVzLgpTYW5kaWEgTmF0aW9uYWwgTGFib3JhdG9yaWVz4oCZIElNUyB1bml0LCBNaWNyb0hvdW5kLCBoYXMgYmVlbiBpbmNsdWRlZCBoZXJlIGV2ZW4KdGhvdWdoIGl0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlIG9uIHRoZSBtYXJrZXQsIGhvd2V2ZXIsIGRldmVsb3BtZW50IG9mIHRoZSB1bml0IGhhcwpwcm9ncmVzc2VkIHRvIHRoZSBwb2ludCB3aGVyZSBpdCBjYW4gYmUgcmVhZGlseSBjb21tZXJjaWFsaXplZC4KCjQzCgoMVGFibGUgMTUgLSBWZW5kb3JzIG9mIElNUyBnYXMgc2Vuc29ycwpDb21wYW55CgpQcm9kdWN0KHMpCgp4CgpBaXJzZW5zZSBBbmFseXRpY3MKCngKCkdEQSAyCgp4CgpCcnVrZXItRGFsdG9uaWNzIEluYy4KCngKClJBSUQtTSBTZXJpZXMKCngKClJBSUQtMQoKeAoKU2FuZGlhIE5hdGlvbmFsIExhYm9yYXRvcmllcwoKeAoKTWljcm9Ib3VuZAoKeAoKU21pdGhzIERldGVjdGlvbgoKeAoKQ2VudHVyaW9uCgp4CgpTYWJyZSA0MDAwCgp4CgpIR1ZJCgp4CgpJT05TQ0FOIDUwMERUCgo0LjMgUmVjZW50IFJlc2VhcmNoIG9uIElNUyBHYXMgU2Vuc29ycwpJTVMgY29udGludWVzIHRvIGJlIGFuIGFjdGl2ZWx5IHJlc2VhcmNoZWQgc2Vuc29yIHRlY2hub2xvZ3kuIE1pbGxlciBldCBhbC4gZmFicmljYXRlZAphbmQgdGVzdGVkIGEgbWluaWF0dXJpemVkLCBtaWNyb2VsZWN0cm9tZWNoYW5pY2FsIHN5c3RlbSAoTUVNUykgcmFkaW8tZnJlcXVlbmN5IElNUwoocmYtSU1TKSBbNDFdLiBSYWRpby1mcmVxdWVuY3kgSU1TIGlzIGEgcmVjZW50bHkgZGV2ZWxvcGVkIHRlY2huaXF1ZSwgYW5kIHVubGlrZQpjb252ZW50aW9uYWwgSU1TIHdoaWNoIHVzZXMgYSBsb3cgc3RyZW5ndGggZWxlY3RyaWMgZmllbGQsIHJmLUlNUyBtYWtlcyB1c2Ugb2YgYm90aCBoaWdoCmFuZCBsb3cgc3RyZW5ndGggZWxlY3RyaWMgZmllbGRzLiBJb24gc3BlY2llcyBhcmUgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiB0aGVpcgptb2JpbGl0eSBpbiBhIGhpZ2ggdmVyc3VzIGxvdyBzdHJlbmd0aCBlbGVjdHJpYyBmaWVsZC4gVXNpbmcgYSByYWRpb2FjdGl2ZSBpb25pemF0aW9uCnNvdXJjZSwgdGhlIGxpbWl0IG9mIGRldGVjdGlvbiBmb3IgdG9sdWVuZSB3YXMgZXN0aW1hdGVkIHRvIGJlIGFwcHJveGltYXRlbHkgMTAgcHBiLCBmb3IKYWNldG9uZSB0aGUgbGltaXQgaXMgYXJvdW5kIDEwIHBwYiwgYW5kIGZvciBpc29wcm9wYW5vbCBpdCBpcyBhcHByb3hpbWF0ZWx5IDYwIHBwYi4gQQpyZXZpZXcgcGFwZXIgYnkgU3RhY2ggYW5kIEJhdW1iYWNoIHN1bW1hcml6ZXMgdGhlIGRldGVjdGlvbiBsaW1pdHMgZm9yIHZhcmlvdXMKY29tcG91bmRzIGRldGVjdGVkIGJ5IG1lYW5zIG9mIElNUyB1c2luZyByYWRpb2FjdGl2ZSDOsi1pb25pemF0aW9uIFs0Ml0uIFRoZSBkZXRlY3Rpb24KbGltaXRzIG9mIGlvZGluZSwgaHlkcm9nZW4gY2hsb3JpZGUsIGh5ZHJvZ2VuIGlvZGlkZSwgYW1tb25pYSwgYW5kIGFsaXBoYXRpYyBhbWluZXMgKGkuZS4KbWV0aHlsYW1pbmUpIGFyZSA1IHBwYiwgMTAwIHBwYiwgMTAwIHBwYiwgMTAwIHBwYiwgYW5kIDUgcHBiIHJlc3BlY3RpdmVseS4KCjQuNCBQcm9wZXJ0aWVzIG9mIElNUyBUZWNobm9sb2d5CkFkdmFudGFnZXMgb2YgSU1TIGluY2x1ZGUgdmVyeSBsb3cgZGV0ZWN0aW9uIGxpbWl0cyAocHBiIGxldmVscyksIHJhcGlkIHJlc3BvbnNlLCBsb3cKcG93ZXIgY29uc3VtcHRpb24sIGFuZCBhcHBsaWNhYmlsaXR5IHRvIGEgd2lkZSBudW1iZXIgb2YgY29tcG91bmRzIFszOV0uIEhvd2V2ZXIsCnRoZSBtYWpvciBsaW1pdGF0aW9ucyBvZiBJTVMgYXJlIGNvbXBldGl0aXZlIGlvbi9tb2xlY3VsZSByZWFjdGlvbnMgd2l0aCBtYXRyaXgKbW9sZWN1bGVzLCBkZXBlbmRlbmNlIG9mIGRpbWVyaXphdGlvbiByZWFjdGlvbnMgb2Ygc29tZSBjb21wb3VuZHMgb24gY29uY2VudHJhdGlvbiwKc3VzY2VwdGliaWxpdHkgdG8gY29udGFtaW5hdGlvbiwgYW5kIHByb2JsZW1zIHdpdGggbG93IHRlbXBlcmF0dXJlIG9wZXJhdGlvbiBbMzldLiBUaGUKbWF0cml4IGlzIGVzc2VudGlhbGx5IGEgY2xlYW4gYW5kIGluZXJ0IGdhcyB3aGljaCBjYXVzZXMgdGhlIGlvbnMgdG8gZHJpZnQsIGFuZCBrZWVwcyB0aGUKZHJpZnQgdHViZSBvZiB0aGUgc3BlY3Ryb21ldGVyIGNsZWFuLiBUaGUgY29tcGV0aXRpdmUgaW9uL21vbGVjdWxlIHJlYWN0aW9ucyB3aWxsIG1hc2sKdGhlIHJlc3BvbnNlIG9mIHRoZSBhbmFseXRlLiBBcyBmb3IgdGhlIGRpbWVyaXphdGlvbiByZWFjdGlvbnMsIGNvbXBvdW5kcyB3aWxsIGZvcm0KZGlmZmVyZW50IHByb2R1Y3QgaW9ucyBkZXBlbmRpbmcgb24gdGhlaXIgY29uY2VudHJhdGlvbnMuIERpbWV0aHlsIHN1bGZveGlkZSAoRE1TTykKZm9yIGV4YW1wbGUsIGEgY29tbW9uIHNvbHZlbnQsIGZvcm1zIHByaW1hcmlseSB0aGUgKERNU08pSCsgaW9uIGF0IHRoZSAyMC1wcHQgKHBhcnRzCnBlciB0cmlsbGlvbikgbGV2ZWwsIGJ1dCBhdCB0aGUgMi1wcGIgbGV2ZWwgdGhlcmUgYXJlIHR3byBwcm9kdWN0IGlvbnMsIChETVNPKUgrIGFuZAooRE1TTykySCsuIElNUyB1bml0cyBhcmUgc3VzY2VwdGlibGUgdG8gY29udGFtaW5hdGlvbjsgc29tZSBjb250YW1pbmFudHMgd2l0aCBsb3cKdmFwb3VyIHByZXNzdXJlIG1heSByZW1haW4gaW5zaWRlIHRoZSBkZXRlY3RvciBmb3IgbWludXRlcywgZXZlbiBob3VycyBvciBkYXlzLiBMb3cKdGVtcGVyYXR1cmUgb3BlcmF0aW9uIGFsbG93cyBuZXV0cmFsIHdhdGVyIG1vbGVjdWxlcyBpbiB0aGUgc2FtcGxlIGFuZCBkcmlmdCBnYXMgdG8gYXR0YWNoCnRvIGFuYWx5dGUgaW9ucyB0byBmb3JtIG11bHRpbW9sZWN1bGFyIGlvbiBjbHVzdGVycywgdGh1cyBhbHRlcmluZyB0aGUgbW9iaWxpdHkgb2YgdGhlCmFuYWx5dGUgaW9uIGFuZCBpbnRyb2R1Y2luZyBlcnJvcnMgaW50byB0aGUgcmVhZGluZy4gU2luY2UgdHJhY2UgYW1vdW50cyBvZiB3YXRlciBhcmUgbmVhcgoKNDQKCgxpbXBvc3NpYmxlIHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzcGVjdHJvbWV0ZXIsIGl0IGlzIGNvbW1vbiBwcmFjdGljZSB0byBhZGQgd2F0ZXIgYXQgYQpjb25jZW50cmF0aW9uIG9mIDEwIHBwbSB0byBlbnN1cmUgcmVwcm9kdWNpYmxlIHJlc3BvbnNlcyBbMzldLgoKNS4gTWV0YWwgT3hpZGUgU2VtaWNvbmR1Y3RvciAoTU9TKSBDaGVtaWNhbCBTZW5zb3JzCjUuMSBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBvZiBNZXRhbCBPeGlkZSBTZW1pY29uZHVjdG9yIEdhcwpTZW5zb3JzCk1ldGFsIG94aWRlIGdhcyBzZW5zb3JzLCBpbml0aWFsbHkgYmFzZWQgb24gdGluIGRpb3hpZGUgKFNuTzIpLCBoYXZlIGJlZW4gYXZhaWxhYmxlIHNpbmNlCnRoZSBlYXJseSAxOTYw4oCZcyBbMjVdOyBhIGRpYWdyYW0gb2YgYSBjb21tZXJjaWFsbHkgYXZhaWxhYmxlIHNlbnNvciBpcyBzaG93biBpbiBGaWd1cmUgMTUuCk1ldGFsIG94aWRlcyBzdWNoIGFzIFNuTzIsIHppbmMgb3hpZGUgKFpuTyksIGlyb24gb3hpZGUgKEZlMk8zKSwgYW5kIHR1bmdzdGVuIG94aWRlCihXTzMpIGFyZSBuLXR5cGUgc2VtaWNvbmR1Y3RvcnMuIFRoZSBtZXRhbCBveGlkZSBpcyB0eXBpY2FsbHkgaGVhdGVkIHRvIHRlbXBlcmF0dXJlcwpyYW5naW5nIGZyb20gMjAwLTUwMCDCukMuIFRoaXMgcmVkdWNlcyB0aGUgY2hlbWlzb3JwdGlvbiBvZiB3YXRlciBhdCB0aGUgc3VyZmFjZSBhbmQKb3h5Z2VuIGF0b21zIGZyb20gdGhlIGF0bW9zcGhlcmUgYWRzb3JiIG9udG8gdGhlIHN1cmZhY2Ugb2YgdGhlIG1ldGFsIG94aWRlCnNlbWljb25kdWN0b3IgKE1PUykgc2Vuc29yIHRodXMgdHJhcHBpbmcgc29tZSBvZiB0aGUgZWxlY3Ryb24gY2FycmllcnMgd2l0aGluIHRoZQptYXRlcmlhbCBhbmQgcmVkdWNpbmcgdGhlIGNvbmR1Y3Rpdml0eSBvZiB0aGUgTU9TIHNlbnNvci4gSWYgdGhlIE1PUyBzZW5zb3IgaXMgZXhwb3NlZAp0byBhIHJlZHVjaW5nIGdhcyAoaS5lLiBoeWRyb2dlbiwgbWV0aGFuZSwgZXRjLilbNDNdLCBjYXRhbHl0aWMgY29tYnVzdGlvbiBvY2N1cnMgYW5kIHRoZQpzdXJmYWNlIGRlbnNpdHkgb2YgbmVnYXRpdmVseSBjaGFyZ2VkIG94eWdlbiBkZWNyZWFzZXMsIGNhdXNpbmcgdGhlIHJlc2lzdGFuY2Ugb2YgdGhlCnNlbnNvciB0byBkZWNyZWFzZSBbMjRdLiBUaGUgc2Vuc29ycyByZXNwb25zZSBpcyB0YWtlbiB0byBiZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZQpiYXNlbGluZSByZXNpc3RhbmNlIChhYnNlbmNlIG9mIGFuYWx5dGUpIGFuZCB0aGUgZGVjcmVhc2VkIHJlc2lzdGFuY2UgKHByZXNlbmNlIG9mIGFuYWx5dGUpLgpCeSB2YXJ5aW5nIHRoZSBvcGVyYXRpbmcgdGVtcGVyYXR1cmUgb2YgdGhlIHNlbnNvciBhbmQgdGhlIGNvbXBvc2l0aW9uIG9mIHRoZSBtZXRhbApveGlkZSwgZGlmZmVyZW50IHJlc3BvbnNlcyB0byB2YXJpb3VzIGNvbWJ1c3RpYmxlIGdhc2VzIGNhbiBiZSBvYnRhaW5lZC4KCkZpZ3VyZSAxNSAtIERpYWdyYW0gb2YgY29tbWVyY2lhbGx5IGF2YWlsYWJsZSB0aW4gb3hpZGUgZ2FzIHNlbnNvciBbMjVdLiBMZWFkcyBhcmUgZWxlY3RyaWNhbCBsZWFkcy4KCjUuMiBDb21tZXJjaWFsIE1PUyBHYXMgU2Vuc29ycwpUaGUgZmlyc3QgY29tbWVyY2lhbGx5IGF2YWlsYWJsZSBNT1MgZ2FzIHNlbnNvcnMgd2VyZSBpbnRyb2R1Y2VkIGJ5IFRhZ3VjaGkuCkNvbW1lcmNpYWwgVGFndWNoaSBzZW5zb3JzIGNvbnNpc3Qgb2YgYSBjZXJhbWljIGN5bGluZGVyICg5LjUgbW0gaW4gbGVuZ3RoLCByYWRpdXMKMyBtbSBhcHByb3hpbWF0ZWx5KSBjb250YWluaW5nIGEgaGVhdGluZyBjb2lsLiBUaGUgb3V0ZXIgc3VyZmFjZSBvZiB0aGUgcGVsbGV0IGlzIGNvYXRlZAp3aXRoIGEgbWV0YWwgb3hpZGUsIHVzdWFsbHkgU25PMiBkb3BlZCB3aXRoIGEgc21hbGwgYW1vdW50IG9mIHBhbGxhZGl1bSAoUGQpIG9yCnBsYXRpbnVtIChQdCkgY2F0YWx5c3QsIGFsdGhvdWdoIG1hbnkgb3RoZXIgb3hpZGVzIChpLmUuIFpuTywgV08zLCBhbmQgVGlPMikgaGF2ZSBiZWVuCmFwcGxpZWQgWzI3XS4gVGFibGUgMTYgbGlzdHMgdGhlIGNvbXBhbmllcyB3aG8gYXJlIGN1cnJlbnRseSBpbnZvbHZlZCBpbiB0aGUgZGVzaWduIGFuZApwcm9kdWN0aW9uIG9mIE1PUyBjaGVtaWNhbCBnYXMgc2Vuc29ycy4KCjQ1CgoMVGFibGUgMTYgLSBDb21wYW5pZXMgcHJvZHVjaW5nIE1PUyBnYXMgc2Vuc29ycwpDb21wYW55CgpQcm9kdWN0KHMpCgp4CgpBaXJzZW5zZSBBbmFseXRpY3MKCngKCkdEQSAyCgp4CgpBbHBoYSBNT1MKCngKClByb21ldGhldXMKCngKCkRlbHBoaWFuIENvcnBvcmF0aW9uCgp4CgpTQkctMjAwCgp4CgpFTk1FVAoKeAoKRVgtNTE1MCBNT1MKCngKCkVudmlyb25pY3MgT3kKCngKCkNoZW1Qcm8gMTAwaQoKeAoKRmlnYXJvIEdhcyBTZW5zb3JzCgp4CgpUR1M4MjYKCngKClRHUzI0NDQKCngKClRHUzI2MjAKCngKClZhcG9yTGFiIDcwMAoKeAoKU2FtRGV0ZWN0IEdGRDEKCngKCk1pY3Jvc2Vuc29yCkFwcGxpYW5jZXMpCgp4CgpSU1QgUm9zdG9jawoKU3lzdGVtcwoKSW5jLgoKKE1pbmUKClNhZmV0eQoKNS4zIFJlY2VudCBSZXNlYXJjaCBvbiBNT1MgR2FzIFNlbnNvcnMKQSBkZXRlY3Rpb24gbGltaXQgb2YgMSBwcG0gd2FzIGFjaGlldmVkIHdpdGggYSBXTzMgYW1tb25pYSBzZW5zb3Igd2l0aCBnb2xkIGFuZAptb2x5YmRpYyBveGlkZSAoTW9PMykgYWRkaXRpdmVzIFs0NF0uIFRvZGEgZXQgYWwuIGRldGVjdGVkIHBob3NwaGluZSBkb3duIHRvIDAuMiBwcG0Kd2l0aCBhIGRpb2RlLXR5cGUgZ2FzIHNlbnNvciBmZWF0dXJpbmcgZ29sZCBmaWxtIGRlcG9zaXRlZCBvbiB0aXRhbml1bSBveGlkZSBbNDVdLiBTdSBldAphbC4gZmFicmljYXRlZCBtaW5pYXR1cml6ZWQgdGluIG94aWRlIHNlbWljb25kdWN0b3Igc2Vuc29ycyB1c2luZyBkaXAtcGVuIG5hbm9wYXR0ZXJuaW5nCls0Nl0uIFRoZSBzZW5zb3JzIHNob3dlZCBhIHJlc3BvbnNlIHRpbWUgb2YgNSBzZWNvbmRzIGFuZCBhIHJlY292ZXJ5IHRpbWUgb2YgMjAKc2Vjb25kcywgYW5kIHdlcmUgYWJsZSB0byBkZXRlY3QgYWNldGljIGFjaWQgYXQgY29uY2VudHJhdGlvbnMgYmVsb3cgMzMwIHBwbS4gS2ltIGV0IGFsLgpkcm9wLWNvYXRlZCBoaWdobHkgY3J5c3RhbGxpbmUgdHVuZ3N0ZW4gb3hpZGUgbmFub3JvZHMgb250byBhIHNpbGljb24gc3Vic3RyYXRlIHRvIGZvcm0KcG9yb3VzIHR1bmdzdGVuIG94aWRlIGZpbG1zOyB0aGUgcmVzdWx0aW5nIG1ldGFsIG94aWRlIHNlbnNvcnMgcmVzcG9uZGVkIHRvIGhlcHRhbmUgYXQKY29uY2VudHJhdGlvbnMgbGVzcyB0aGFuIDUgcHBtIFs0N10sIEhpdGNoIGFuZCBIb25leWJvdXJuZSB1c2VkIHRldHJhZ29uYWwgcHNldWRvcHlyb2NobG9yZSwgYW4gbi10eXBlIHNlbWljb25kdWN0b3IsIGFzIHRoZSBhY3RpdmUgc2Vuc2luZyBtYXRlcmlhbCBpbiB0aGljay1maWxtIHNlbnNvcnMKWzQ4XS4gVG9sdWVuZSB3YXMgZGV0ZWN0ZWQgZG93biB0byAxMCBwcG0uCgo1LjQgUHJvcGVydGllcyBvZiBNT1MgQ2hlbWljYWwgU2Vuc29ycwpNT1Mgc2Vuc29ycyBoYXZlIGhpZ2ggc2Vuc2l0aXZpdHkgdG8gY29tYnVzdGlibGUgZ2FzZXMsIGFyZSBjb21wYWN0IGFuZCBkdXJhYmxlLCBhbmQKYXJlIHJlbGF0aXZlbHkgaW5leHBlbnNpdmUgdG8gcHJvZHVjZSBbMjRdLiBIb3dldmVyLCBNT1Mgc2Vuc29ycyBoYXZlIGEgZmFpciBhbW91bnQgb2YKc2Vuc2l0aXZpdHkgdG8gaHVtaWRpdHksIGFuZCB0aGV5IGFyZSBub3Qgc2VsZWN0aXZlIHRvIG9uZSBwYXJ0aWN1bGFyIGdhcywgd2hpY2ggaXMgYSBtYWpvcgpkcmF3YmFjay4gVGhlIHNlbGVjdGl2aXR5IGlzc3VlIGNhbiBiZSBwYXJ0aWFsbHkgYWRkcmVzc2VkIGJ5IGNhcmVmdWxseSBjaG9vc2luZyB0aGUgYmFzZQpzZW1pY29uZHVjdG9yIGFuZCBhZGRpdGl2ZShzKSB1c2VkIHRvIGRvcGUgdGhlIHNlbWljb25kdWN0aW5nIG1ldGFsIG94aWRlLiBGb3IKZXhhbXBsZSwgU25PMiBpcyBjb21tb25seSB1c2VkIGFzIHRoZSBiYXNlIHNlbWljb25kdWN0b3IsIGJ1dCBUaW1tZXIgZXQgYWwuIHNlbGVjdGVkCldPMyB3aXRoIGdvbGQgYW5kIE1vTzMgYWRkaXRpdmVzIHRvIG9wdGltaXplIHRoZSBzZW5zb3IgZm9yIGRldGVjdGluZyBhbW1vbmlhIFs0NF0KCjYuIE1pY3JvY2FudGlsZXZlciBHYXMgU2Vuc29ycwo2LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgTWljcm9jYW50aWxldmVyIEdhcyBTZW5zb3JzCk1pY3JvY2FudGlsZXZlcnMgYXJlIGVzc2VudGlhbGx5IHZlcnkgc21hbGwgY2FudGlsZXZlciBiZWFtcyB3aXRoIGRpbWVuc2lvbnMgdHlwaWNhbGx5IG9uCnRoZSBvcmRlciBvZiBhIGZldyBtaWNyb21ldGVycy4gVG8gcHJvZHVjZSBhIG1pY3JvY2FudGlsZXZlciBzZW5zb3Igd2l0aCBjaGVtaWNhbApzcGVjaWZpY2l0eSwgb25lIHNpZGUgb2YgdGhlIGNhbnRpbGV2ZXIgaXMgY29hdGVkIHdpdGggYSBzZWxlY3RpdmUgbGF5ZXIgKHN1Y2ggYXMgYSBwb2x5bWVyCjQ2CgoMY29tcG9zaXRlIGZvciBleGFtcGxlKSB0aGF0IGRlbW9uc3RyYXRlcyBoaWdoIGFmZmluaXR5IHRvIHRoZSB0YXJnZXRlZCBhbmFseXRlIFs0OV0uCk1pY3JvY2FudGlsZXZlciBzZW5zb3JzIGNhbiBvcGVyYXRlIGluIG9uZSBvZiB0d28gbW9kZXM6IHN0YXRpYyBkZWZsZWN0aW9uIG1vZGUgd2hlcmUKYmluZGluZyBvbiBvbmUgc2lkZSBvZiBhIGNhbnRpbGV2ZXIgY2F1c2VzIHVuYmFsYW5jZWQgc3VyZmFjZSBzdHJlc3MgYW5kIGRlZmxlY3RzIHRoZQpjYW50aWxldmVyIHVwIG9yIGRvd24sIG9yIHRoZSBkeW5hbWljLCByZXNvbmFudCBtb2RlLCB3aGVyZSBiaW5kaW5nIG9uIHRoZSBjYW50aWxldmVyCmluY3JlYXNlcyB0aGUgbWFzcyBvZiB0aGUgc3lzdGVtIGFuZCBtb2RpZmllcyB0aGUgcmVzb25hbnQgZnJlcXVlbmN5IFs1MF0uIEluIHZhY3V1bSwKbmFub2VsZWN0cm9tZWNoYW5pY2FsIHN5c3RlbSAoTkVNUykgY2FudGlsZXZlcnMgaGF2ZSBiZWVuIG9wZXJhdGVkIGluIHRoZSBkeW5hbWljCm1vZGUgdG8gbWVhc3VyZSBtYXNzIGNoYW5nZXMgb24gdGhlIG9yZGVyIG9mIGF0dG9ncmFtcyBvciBsZXNzIFs1MF0uClRoZSByZXNwb25zZSBvZiB0aGUgbWljcm9jYW50aWxldmVyIGlzIGRldGVjdGVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIHByaW5jaXBsZXM6Cm9wdGljYWwsIHBpZXpvcmVzaXN0aXZlLCBwaWV6b2VsZWN0cmljLCBjYXBhY2l0YW5jZSwgb3IgZWxlY3Ryb24gdHVubmVsbGluZyBbNDldLiBJbiB0aGUKb3B0aWNhbCBtZXRob2QsIGEgbGFzZXIgYmVhbSBpcyBmb2N1c2VkIGF0IHRoZSB1bmNvYXRlZCBzaWRlIG9mIHRoZSBjYW50aWxldmVyLiBUaGUgYmVhbQppcyByZWZsZWN0ZWQgb250byBhIHBvc2l0aW9uIHNlbnNpdGl2ZSBwaG90b2RldGVjdG9yLiBUaGUgcGllem9yZXNpc3RpdmUgbWV0aG9kIG1ha2VzIHVzZQpvZiBtaWNyb2NhbnRpbGV2ZXJzIGZhYnJpY2F0ZWQgZnJvbSBtYXRlcmlhbHMgd2hvc2UgZWxlY3RyaWNhbCByZXNpc3RhbmNlIGNoYW5nZXMgd2l0aAphcHBsaWVkIG1lY2hhbmljYWwgc3RyZXNzIChpLmUuIGRvcGVkIHNpbmdsZSBjcnlzdGFsIHNpbGljb24pLiBUaGUgcGllem9lbGVjdHJpYyByZWFkb3V0CnRlY2huaXF1ZSByZXF1aXJlcyBhIGxheWVyIG9mIHBpZXpvZWxlY3RyaWMgbWF0ZXJpYWwgKGkuZS4gWm5PKSB0byBiZSBkZXBvc2l0ZWQgb250byB0aGUKY2FudGlsZXZlci4gV2hlbiB0aGUgY2FudGlsZXZlciBpcyBkZWZvcm1lZCwgdHJhbnNpZW50IGNoYXJnZXMgd2lsbCBiZSBpbmR1Y2VkIGluIHRoZQpwaWV6b2VsZWN0cmljIGxheWVyLCBnZW5lcmF0aW5nIGFuIGVsZWN0cmljIHBvdGVudGlhbCB0aGF0IGNhbiBiZSBtZWFzdXJlZC4gRm9yIGNhcGFjaXRhbmNlCnJlYWRvdXQsIHR3byBjb25kdWN0b3JzLCBvbmUgbW91bnRlZCB0byB0aGUgY2FudGlsZXZlciBhbmQgdGhlIG90aGVyIG1vdW50ZWQgdG8gdGhlCnN0YXRpb25hcnkgc3Vic3RyYXRlLCBhcmUgdXNlZC4gQ2FudGlsZXZlciBkZWZvcm1hdGlvbnMgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgaW4KY2FwYWNpdGFuY2UgYmV0d2VlbiB0aGUgY2FudGlsZXZlciBhbmQgdGhlIHN1YnN0cmF0ZS4gSW4gdGhlIGVsZWN0cm9uIHR1bm5lbGxpbmcgbWV0aG9kLCBhCmJpYXMgdm9sdGFnZSBpcyBhcHBsaWVkIGJldHdlZW4gYSBjb25kdWN0aW5nIHRpcCBhbmQgdGhlIGNhbnRpbGV2ZXIgKHdoaWNoIGFyZSBzZXBhcmF0ZWQKYnkgYW4gZXh0cmVtZWx5IHNtYWxsIGdhcCk7IHRoZSBtYWduaXR1ZGUgb2YgdHVubmVsbGluZyBjdXJyZW50IGlzIHJlbGF0ZWQgdG8gcG9zaXRpb25hbApjaGFuZ2VzIGluIHRoZSB0aXAgb2YgdGhlIGNhbnRpbGV2ZXIuCgo2LjIgQ29tbWVyY2lhbCBNaWNyb2NhbnRpbGV2ZXIgR2FzIFNlbnNvcnMKQ29tbWVyY2lhbCBnYXMgc2Vuc29ycyBiYXNlZCBvbiBtaWNyb2NhbnRpbGV2ZXJzIGFyZSBub3QgeWV0IGF2YWlsYWJsZS4gSG93ZXZlciwKcGF0ZW50cyBmb3IgbWljcm9jYW50aWxldmVycy1iYXNlZCBzZW5zb3JzIGhhdmUgYmVlbiBmaWxlZC4gVHdvIGV4YW1wbGVzIGFyZToKeAoK4oCcVW5jb2F0ZWQgbWljcm9jYW50aWxldmVycyBhcyBjaGVtaWNhbCBzZW5zb3Jz4oCdIOKAkyBVU1BUTyBwYXRlbnQgNjIxMjkzOSwgaXNzdWVkCkFwciAxMCwgMjAwMQoKeAoK4oCcTWljcm9jYW50aWxldmVyIHNlbnNvcuKAnSDigJMgVVNQVE8gcGF0ZW50IDY1MjMzOTIsIGlzc3VlZCBGZWIgMjUsIDIwMDMKCjYuMyBSZWNlbnQgUmVzZWFyY2ggb24gTWljcm9jYW50aWxldmVyIEdhcyBTZW5zb3JzCk1pY3JvY2FudGlsZXZlciBzZW5zb3JzIGhhdmUgYmVlbiB1c2VkIHRvIGRldGVjdCBtYW55IHR5cGVzIG9mIGdhcyBwaGFzZSBhbmQgbGlxdWlkCnBoYXNlIGFuYWx5dGVzLCByYW5naW5nIGZyb20gY2hlbWljYWwgdmFwb3VycyB0byB2aXJ1c2VzLiBIZXJlIHdlIHdpbGwgZm9jdXMgb24KbWljcm9jYW50aWxldmVyIGdhcyBwaGFzZSBjaGVtaWNhbCBzZW5zb3JzLiBTdGF0aWMgYmVuZGluZyBtb2RlIHdhcyB1c2VkIGluIHRoZQptYWpvcml0eSBvZiBzdHVkaWVzIFs0OV0uCkJhbGxlciBldCBhbC4gcHJvZHVjZWQgYSBtaWNyb2NhbnRpbGV2ZXIgYXJyYXksIGVhY2ggY2FudGlsZXZlciB3YXMgY29hdGVkIHdpdGggYSBkaWZmZXJlbnQKcG9seW1lciwgZm9ybWluZyBhIHNlbnNvciBhcnJheSBbNTFdLiBVc2luZyB0aGUgc2Vuc29yIGFycmF5LCBhIGhvbW9sb2dvdXMgc2VyaWVzIG9mCnByaW1hcnkgYWxjb2hvbHMgZnJvbSBtZXRoYW5vbCB0byBoZXB0YW5vbCwgYXMgd2VsbCBhcyBwb2xhciBhbmQgbm9ucG9sYXIgc29sdmVudHMgc3VjaAphcyBhY2V0b25lIGFuZCB0b2x1ZW5lIGNvdWxkIGJlIGlkZW50aWZpZWQuIFRoZSByZXNlYXJjaGVycyBlc3RpbWF0ZSBkZXRlY3Rpb24gbGV2ZWxzIHRvCmJlIGJlbG93IDEgcHBtLgpIaWVybGVtYW5uIGV0IGFsLiB1c2VkIHBvbHlldGhlcnVyZXRoYW5lLWNvYXRlZCBzaWxpY29uCm1pY3JvY2FudGlsZXZlcnMgdG8gZGV0ZWN0IHRvbHVlbmUgZG93biB0byAxMCBwcG0gWzUyXS4gQmV0dHMgZXQgYWwuIGludmVzdGlnYXRlZCBzaWxpY29uCm1pY3JvY2FudGlsZXZlcnMgd2l0aCB0aGluIGZpbG1zIG9mIHBvbHltZXJpYyBnYXMgY2hyb21hdG9ncmFwaGljIHN0YXRpb25hcnkgcGhhc2VzLCBhbmQKZm91bmQgdGhhdCB0aGlzIHRyZWF0bWVudCBpbmNyZWFzZWQgdGhlIHJlc3BvbnNlcyBvZiBjb2F0ZWQgbWljcm9jYW50aWxldmVycyB0byBvcmdhbmljCmNvbXBvdW5kcyBzdWNoIGFzIHBlbnRhbmUsIHRvbHVlbmUsIGFuZCBldGhhbm9sIG5vdGljZWFibHkgWzUzXS4gSG93ZXZlciwgbm8gZGV0ZWN0aW9uCjQ3CgoMbGV2ZWxzIHdlcmUgbWVudGlvbmVkLiBEYXRza29zIGV0IGFsLiBmb3VuZCB0aGF0IG1pY3JvY2FudGlsZXZlcnMgd2l0aCBhZHNvcmJlZCBhbmFseXRlcwp3aWxsIHVuZGVyZ28gcGhvdG9pbmR1Y2VkIGJlbmRpbmcgdGhhdCBpcyBkZXBlbmRhbnQgb24gdGhlIG51bWJlciBvZiBhZHNvcmJlZAptb2xlY3VsZXMgb24gdGhlIHN1cmZhY2UgWzU0XS4KQ2FsY3VsYXRlZCBsaW1pdHMgb2YgZGV0ZWN0aW9uIGZvciAxLDhkaW1ldGh5bG5hcGh0aGFsZW5lLAoyLDctZGltZXRoeWxuYXBodGhhbGVuZSwKdHJpY2hsb3JvZXRoeWxlbmUsCmFuZAp0ZXRyYWNobG9yb2V0aHlsZW5lIHdlcmUgZGV0ZXJtaW5lZCB0byBiZSA1LjMgcHBiLCAyLjcgcHBiLCA1LjIgcHBtLCBhbmQgMTcuNSBwcG0uIExpCmFuZCBMaSB1c2VkIGEgU2lPMiBtaWNyb2NhbnRpbGV2ZXIgc2Vuc29yIHRvIGRldGVjdCBhbW1vbmlhIHdpdGggYSByZXBvcnRlZCBkZXRlY3Rpb24KbGltaXQgb2YgMC4xIHBwbSBbNTVdLgoKNi40IFByb3BlcnRpZXMgb2YgTWljcm9jYW50aWxldmVyIEdhcyBTZW5zb3JzCk1pY3JvY2FudGlsZXZlciBnYXMgc2Vuc29ycyBhcmUgc3RpbGwgcHJpbWFyaWx5IHJlc2VhcmNoLWJhc2VkIGRldmljZXMuIEhvd2V2ZXIsCnB1Ymxpc2hlZCBsaW1pdHMgb2YgZGV0ZWN0aW9uIGFyZSBwcm9taXNpbmcsIHdpdGggZGV0ZWN0aW9uIGF0IHBwYiB0byBwcHQgKHBhcnRzIHBlciB0cmlsbGlvbikKbGV2ZWxzIGRlbW9uc3RyYXRlZCBbNTZdLiBBIHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiBtaWNyb2NhbnRpbGV2ZXIgc2Vuc29ycyBpcyB0aGF0IHRoZXkKY2FuIG9wZXJhdGUgaW4gdmFjdXVtLCBpbiBnYXNlcywgYW5kIGluIGxpcXVpZHMgWzQ5XS4gVGhlIHdlYWtuZXNzIG9mIG1pY3JvY2FudGlsZXZlcgpzZW5zb3JzIGxpZXMgaW4gdGhlaXIgc2Vuc2luZyBsYXllci4gVGhlIHNlbGVjdGl2aXR5IG9mIGEgbWljcm9jYW50aWxldmVyIHNlbnNvciBpcwpkZXRlcm1pbmVkIGJ5IHRoZSBjb2F0aW5nLCB3aGljaCBjb3VsZCBiZSBnb2xkIGZvciBkZXRlY3RpbmcgbWVyY3VyeSB2YXBvdXIgb3IgYQpwb2x5bWVyIGZvciBkZXRlY3RpbmcgVk9D4oCZcy4gQXMgYSByZXN1bHQsIHRoZSBsaWZldGltZSBvZiB0aGUgc2Vuc29yIGlzIHByaW1hcmlseQpkZXRlcm1pbmVkIGJ5IHRoZSBsaWZldGltZSBvZiB0aGUgY29hdGluZywgd2hpY2gsIGlmIGl0IGlzIGEgcG9seW1lciwgbWF5IGJlIHF1aXRlIGxpbWl0ZWQKZHVlIHRvIHBvbHltZXIgZGVncmFkYXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIGxpZ2h0LCBoZWF0LCBhbmQgb3RoZXIgY2hlbWljYWxzLgoKNy4gTmFub21hdGVyaWFscwo3LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgTmFub21hdGVyaWFscy1iYXNlZCBHYXMgU2Vuc29ycwpUaGUgdGVybSDigJxuYW5vdGVjaG5vbG9neeKAnSBoYXMgYmVjb21lIG11Y2ggbW9yZSBwcm9taW5lbnQgaW4gcmVjZW50IHllYXJzLCBhcyBtb3JlCmFuZCBtb3JlIHJlc2VhcmNoZXJzIGRldm90ZSB0aGVpciBlZmZvcnRzIHRvd2FyZHMgZXhwbG9yaW5nIG5hbm9zdHJ1Y3R1cmVzIGFuZCB0aGVpcgphcHBsaWNhdGlvbnMuIE5hbm90ZWNobm9sb2d5IGNhbiBiZSBkZWZpbmVkIGFzIGFuIGludGVyZGlzY2lwbGluYXJ5IGZpZWxkIChlbmdpbmVlcmluZywKcGh5c2ljcywgY2hlbWlzdHJ5LCBiaW9sb2d5KSB0aGF0IGZvY3VzZXMgb24gdGhlIHN0dWR5IGFuZCBtYW5pcHVsYXRpb24gb2YgbWF0ZXJpYWxzIGF0CnRoZSBuYW5vc2NhbGUuIFRoZSB0ZXJtIOKAnG5hbm9tYXRlcmlhbHPigJ0gaXMgdmVyeSBicm9hZCwgZW5jb21wYXNzaW5nIGEgd2lkZSByYW5nZSBvZgpuYW5vc3RydWN0dXJlcyByYW5naW5nIGZyb20gbmFub3R1YmVzIHRvIG5hbm9iZWx0cy4gTmFub3N0cnVjdHVyZXMgaGF2ZSBhdCBsZWFzdCBvbmUKTmFub21hdGVyaWFscyBwb3NzZXNzCmRpbWVuc2lvbiB0aGF0IGlzIG9uIHRoZSBvcmRlciBvZiBhIGZldyBuYW5vbWV0cmVzICggMTAQOSBtKS4Kc2V2ZXJhbCBrZXkgYWR2YW50YWdlcyBvdmVyIHRoZWlyIGJ1bGsgY291bnRlcnBhcnRzLiBGb3IgZXhhbXBsZSwgZHVlIHRvIHRoZWlyIHZlcnkgaGlnaApzdXJmYWNlIHRvIHZvbHVtZSByYXRpbywgbWlub3IgY2hhbmdlcyBhdCB0aGUgc3VyZmFjZSBvZiBhIG5hbm9zdHJ1Y3R1cmUgY2FuIHJlc3VsdCBpbgpsYXJnZSBjaGFuZ2VzIGluIHRoZSBlbGVjdHJpY2FsLCBtZWNoYW5pY2FsIGFuZC9vciBvcHRpY2FsIHByb3BlcnRpZXMgb2YgdGhlIHN0cnVjdHVyZSwKYWxsb3dpbmcgdmVyeSBzZW5zaXRpdmUgc2Vuc2luZyBkZXZpY2VzIHRvIGJlIGNvbnN0cnVjdGVkLiBUaGUgZm9sbG93aW5nIHNlY3Rpb24KZGVzY3JpYmVzIHNlbnNvcnMgYmFzZWQgb24gbmFub3R1YmVzLCBuYW5vcm9kcywgbmFub2JlbHRzLCBuYW5vd2lyZXMsIGFuZCBuYW5vZmliZXJzLgpPZiBhbGwgb2YgdGhlIG5hbm9zdHJ1Y3R1cmVzIG1lbnRpb25lZCBhYm92ZSwgY2FyYm9uIG5hbm90dWJlcyBhcmUgb25lIG9mIHRoZSBtb3N0IHdlbGwKa25vd24gYXMgdGhleSB3ZXJlIGRpc2NvdmVyZWQgdGhlIGVhcmxpZXN0LiBOYW5vdHViZXMgY2FuIGFsc28gYmUgZm9ybWVkIG91dCBvZiBtZXRhbApveGlkZXMgc3VjaCBhcyBDbzNPNCwgRmUyTzMsIFNuTzIgYW5kIFRpTzIsIGFuZCBtZXRhbHMgc3VjaCBhcyBwbGF0aW51bSBbNTddLiBHYXMKZXhwb3N1cmUgaXMgZGV0ZWN0ZWQgYnkgYSBjaGFuZ2UgaW4gdGhlIHJlc2lzdGFuY2Ugb2YgdGhlIGluZGl2aWR1YWwsIGFzIHdlbGwgYXMgbmV0d29ya3MKb2YgbmFub3R1YmVzLiBBbmFseXRlIGFkc29ycHRpb24gb24gdGhlIHN1cmZhY2Ugb2YgdGhlIG5hbm90dWJlcyBtb2R1bGF0ZXMgdGhlIGNhcnJpZXIKY29uY2VudHJhdGlvbiwgd2hpY2ggcmVzdWx0cyBpbiBhbiBpbmNyZWFzZSBvciBkZWNyZWFzZSBpbiB0aGUgY29uZHVjdGFuY2Ugb2YgdGhlIG5hbm90dWJlLgpTZWxlY3Rpdml0eSBpcyBhdHRhaW5lZCBieSBhcHByb3ByaWF0ZSBmdW5jdGlvbmFsaXphdGlvbiB3aXRoIGFmZmluaXR5IHRvIHRoZSBkZXNpcmVkIGFuYWx5dGUuClNlbnNvcnMgY2FwYWJsZSBvZiBkZXRlY3RpbmcgY2hhbmdlcyBpbiBjYXBhY2l0YW5jZSBoYXZlIGFsc28gYmVlbiBjb25zdHJ1Y3RlZCBvdXQgb2YKbmFub3R1YmVzIFs1OF0uCkxpa2UgbmFub3R1YmUtYmFzZWQgc2Vuc29ycywgbmFub3dpcmUsIG5hbm9iZWx0cywgYW5kIG5hbm9maWJlciBzZW5zb3JzIHR5cGljYWxseSBkZXRlY3QKdGhlIHByZXNlbmNlIG9mIGFuYWx5dGUgdmlhIGNvbmR1Y3RhbmNlIGNoYW5nZXMuIE5hbm93aXJlIHNlbnNvcnMgZGlmZmVyIHNpZ25pZmljYW50bHkKNDgKCgxpbiB0aGUgbWF0ZXJpYWwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlbS4gUmVzZWFyY2ggaGFzIGJlZW4gY29uZHVjdGVkIG9uIG1ldGFsbGljIChjb3BwZXIsCnBhbGxhZGl1bSwgc2lsdmVyLCBldGMuKSwgc2lsaWNvbiAoYW5kIGRvcGVkIHZhcmlhbnRzKSwgbWV0YWwgb3hpZGUgKEluMk8zLCBTbk8yLCBabk8sIGV0Yy4pCmFuZCBwb2x5bWVyIG5hbm93aXJlcy4gTmFub3JvZHMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgc2hvcnRlbmVkIG5hbm93aXJlczsgbmFub3dpcmUKbGVuZ3RocyByYW5nZSBmcm9tIDEw4oCZcyB0byAxMDDigJlzIG9mIG1pY3JvbnMgd2hlcmVhcyBuYW5vcm9kcyBhcmUgdHlwaWNhbGx5IDEw4oCZcyBvZgptaWNyb25zIGluIGxlbmd0aCBbNTddLiBGb3IgbmFub3JvZHMsIHJlc2VhcmNoZXJzIGhhdmUgZm9jdXNlZCBtb3N0IG9mIHRoZWlyIGVmZm9ydHMgb24KemluYyBveGlkZS4KTmFub2JlbHRzIGFyZSBzaW5nbGUtY3J5c3RhbGxpbmUsIHF1YXNpLW9uZS1kaW1lbnNpb25hbCBuYW5vbWF0ZXJpYWxzIHRoYXQgY2FuIGZvcm0KaGVsaWNhbCBuYW5vc3RydWN0dXJlcyBhbmQgbmFub3JpbmdzIHdoZW4gcm9sbGVkIHVwIFs1OV0uIFRoZSBrZXkgZGlmZmVyZW5jZSBiZXR3ZWVuCm5hbm9iZWx0cyBhbmQgbmFub3dpcmVzIGlzIHRoZSBhZGRpdGlvbmFsIGNvbnRyb2wgb3ZlciBncm93dGggZGlyZWN0aW9uOiB0aGUgc2lkZSBzdXJmYWNlcwpvZiBuYW5vYmVsdHMgYXJlIGJldHRlciBkZWZpbmVkIGFuZCB0aGUgY3Jvc3Mtc2VjdGlvbiBpcyBtb3JlIHVuaWZvcm0gWzU5XS4gTGlrZSBuYW5vcm9kcywKemluYyBveGlkZSBuYW5vYmVsdHMgYXJlIHRoZSBtb3N0IGV4dGVuc2l2ZWx5IHN0dWRpZWQgc3RydWN0dXJlIGFsdGhvdWdoIG5hbm9iZWx0cyBvZgpDdShPSCkyLCBNb08zLCBNZ08sIGFuZCBDdU8gaGF2ZSBhbHNvIGJlZW4gc3VjY2Vzc2Z1bGx5IHN5bnRoZXNpemVkLgoKNy4yIENvbW1lcmNpYWwgTmFub21hdGVyaWFscyBHYXMgU2Vuc29ycwpDdXJyZW50bHkgdGhlcmUgYXJlIG5vIGNvbW1lcmNpYWxseSBhdmFpbGFibGUgZ2FzIHNlbnNvcnMgd2l0aCBhIGdhcyBzZW5zaW5nIGVsZW1lbnQgdGhhdAppcyBidWlsdCBleGNsdXNpdmVseSBvZiBuYW5vbWF0ZXJpYWxzLiBTZWxlY3QgY29tcGFuaWVzIGFyZSB1c2luZyBuYW5vbWF0ZXJpYWxzCmVtYmVkZGVkIGludG8gYSBidWxrIG1hdGVyaWFsIHN1Y2ggYXMgYSBwb2x5bWVyIHRvIGZvcm0gbmFub3N0cnVjdHVyZS9wb2x5bWVyCmNvbXBvc2l0ZSBjaGVtaWNhbGx5IHNlbnNpdGl2ZSBsYXllcnM7IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhlIHBvbHltZXIgc2VjdGlvbi4KSG93ZXZlciwgaXQgaXMgY2xlYXIgZnJvbSB0aGUgYXZhaWxhYmxlIHJlc2VhcmNoIGxpdGVyYXR1cmUgdGhhdCB0aGVzZSBtYXRlcmlhbHMgaG9sZApzaWduaWZpY2FudCBwcm9taXNlIGZvciBjb21tZXJjaWFsaXphdGlvbiBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBzdWNoIGRldmljZXMgd2lsbCBiZWdpbgp0byBhcHBlYXIgb24gdGhlIG1hcmtldCBpbiB0aGUgbmVhciBmdXR1cmUuCgo3LjMgUmVjZW50IFJlc2VhcmNoIG9uIE5hbm9tYXRlcmlhbHMgR2FzIFNlbnNvcnMKUmVzZWFyY2ggaW50byBpbXByb3ZlZCBzZW5zb3JzIGJhc2VkIG9uIHRoZSB1bmlxdWUgcHJvcGVydGllcyBvZiBuYW5vbWF0ZXJpYWxzIGlzIHZlcnkKYWN0aXZlLiBUaGUgcmVzZWFyY2gtYmFzZWQgc2Vuc29ycyBkZXNjcmliZWQgYnJpZWZseSBiZWxvdyByZXByZXNlbnQgYSBzbWFsbCBzdWJzZXQgb2YgdGhlCnRvdGFsIGFtb3VudCBvZiB3b3JrIGNvbmR1Y3RlZCBpbiB0aGlzIGZpZWxkLiBUaGUgZmllbGQgb2YgZ2FzIHNlbnNpbmcgdXNpbmcKbmFub21hdGVyaWFscyBpcyByYXBpZGx5IGV2b2x2aW5nOyBhIHJlY2VudCByZXZpZXcgYXJ0aWNsZSBbNTddIGNvdmVycyBkZXZlbG9wbWVudHMKd2l0aGluIHRoZSBsYXN0IGZpdmUgeWVhcnMgYW5kIGNvbnRhaW5zIDExNyByZWZlcmVuY2VzLgpTb21leWEgZXQgYWwuIGhhdmUgZmFicmljYXRlZCBzZW5zb3JzIGJhc2VkIG9uIHNpbmdsZS13YWxsZWQgY2FyYm9uIG5hbm90dWJlIChTV05UKQpmaWVsZC1lZmZlY3QgdHJhbnNpc3RvcnMgKEZFVOKAmXMpLCB3aGljaCBhcmUgc2Vuc2l0aXZlIHRvIHZhcmlvdXMga2luZHMgb2Ygb3JnYW5pYyBhbGNvaG9scwpzdWNoIGFzIG1ldGhhbm9sIGFuZCBldGhhbm9sIFs2MF0uIFRoZSBGRVQgY29uc2lzdHMgZXNzZW50aWFsbHkgb2YgdHdvIGdvbGQgZWxlY3Ryb2RlcywKdGhlIHNvdXJjZSBhbmQgZHJhaW4sIGNvbm5lY3RlZCB0b2dldGhlciBieSBhIFNXTlQuIERpZmZlcmVudCB0eXBlcyBvZiBhbGNvaG9scyB3ZXJlCmlkZW50aWZpZWQgYnkgdGhlIG1hZ25pdHVkZSBvZiBkcmFpbiBjdXJyZW50IHJlZHVjdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mIHZvbHRhZ2UgYmlhc2VzCihzb3VyY2UtZHJhaW4sIGdhdGUpLiBNZXRoYW5vbCBhdCBhIHBhcnRpYWwgcHJlc3N1cmUgb2YgNTkgbW1IZyAoMC43OSBrUGEpIHJlc3VsdHMgaW4gYQpkZXZpY2UgY3VycmVudCByZWR1Y3Rpb24gb2YgNTclIGFzIGNvbXBhcmVkIHRvIHRoZSB1bmV4cG9zZWQgYmFzZWxpbmUgY3VycmVudCwgYW5kCmV0aGFub2wgYXQgYSBwYXJ0aWFsIHByZXNzdXJlIG9mIDEyNiBtbUhnICgxLjY4IGtQYSkgcmVzdWx0cyBpbiBhIGN1cnJlbnQgcmVkdWN0aW9uIG9mCjcwJS4gVGhlIHJlc3BvbnNlIGlzIHJhcGlkIGFuZCBvY2N1cnMgd2l0aGluIDUtMTUgc2Vjb25kcy4uIENoZW1pY2FwYWNpdGl2ZSBTV05UCnNlbnNvcnMgd2VyZSBpbnZlc3RpZ2F0ZWQgYnkgU25vdyBldCBhbC4sIHdobyBmYWJyaWNhdGVkIHNlbnNvcnMgY2FwYWJsZSBvZiBkZXRlY3RpbmcKdmFyaW91cyBWT0PigJlzIHN1Y2ggYXMgYmVuemVuZSwgaGV4YW5lLCBoZXB0YW5lLCB0b2x1ZW5lLCBhY2V0b25lLCBldGMuIHZpYSBjaGFuZ2VzIGluCnRoZSBiYXNlbGluZSBjYXBhY2l0YW5jZSBvZiB0aGUgc2Vuc29yIFs1OF0uIFRoZSBtaW5pbXVtIGRldGVjdGFibGUgbGV2ZWwgd2FzIGVzdGltYXRlZAp0byBiZSAwLjUgcHBtIGZvciBhY2V0b25lIGJhc2VkIG9uIGEgc2lnbmFsLXRvLW5vaXNlIHJhdGlvIG9mIDM6MS4gVGhlIHJlc3BvbnNlIHRpbWUgd2FzCmVzdGltYXRlZCB0byBiZSBsZXNzIHRoYW4gNDAgc2Vjb25kcyAodDkwKS4KWmhhbmcgZXQgYWwuIHVzZWQgSW4yTzMgbmFub3dpcmUgc2Vuc29ycyB0byBkZXRlY3QgYW1tb25pYSBnYXMgWzYxXS4gVGhlIG94eWdlbgpkb3BpbmcgY29uY2VudHJhdGlvbiBvZiB0aGUgSW4yTzMgbmFub3dpcmVzIHdhcyB2YXJpZWQgYW5kIHJlc3VsdGVkIGluIHZhcmlhdGlvbnMgaW4gdGhlCm1hZ25pdHVkZSBvZiBzZW5zb3IgcmVzcG9uc2UuIEV4cG9zdXJlIHRvIDElIGFtbW9uaWEgaW4gYXJnb24gcmVzdWx0ZWQgaW4gYSAtMTguNSUKNDkKCgxyZWR1Y3Rpb24gaW4gZGV2aWNlIGN1cnJlbnQgYWNjb21wYW5pZWQgYnkgYSArNDIuNSUgY2hhbmdlIGluIHRocmVzaG9sZCB2b2x0YWdlLi4gWmhvdQpldCBhbC4gdXNlZCBIRi1ldGNoZWQgc2lsaWNvbiBuYW5vd2lyZXMgdG8gZGV0ZWN0IGFtbW9uaWEgWzYyXS4gVGhlIEhGIHJlbW92ZWQgdGhlCmFtb3JwaG91cyBzaWxpY29uIG94aWRlIHNoZWF0aCB0aHVzIGltcHJvdmluZyB0aGUgY2hlbWljYWwgc2Vuc2l0aXZpdHkgb2YgdGhlIG5hbm93aXJlcy4KVGhlIHJlc2VhcmNoZXJzIHVzZWQgMTAwMCBwcG0gYW1tb25pYSBmb3IgdGVzdGluZywgYW5kIGRpZCBub3QgcXVhbnRpZnkgdGhlIGRldGVjdGlvbgpsaW1pdHMgb2YgdGhlIGRldmljZXMuCkNvbmR1Y3RpdmUgcG9seW1lciAoUEVET1QpIG5hbm9yb2RzIHdlcmUgZmFicmljYXRlZCBieSBKYW5nIGV0IGFsLiBhbmQgdXNlZCB0byBkZXRlY3QKdmFwb3VyIGNvbmNlbnRyYXRpb25zIGRvd24gdG8gMTAgcHBtIG9mIE5IMyBhbmQgNSBwcG0gb2YgSENsIFs2M10uIEphbmcgYW5kIEJhZQpoYXZlIGNyZWF0ZWQgcG9seXB5cnJvbGUtY29hdGVkIGNhcmJvbiBuYW5vZmliZXIgZGV2aWNlcyBzZW5zaXRpdmUgdG8gYW1tb25pYSBhbmQKaHlkcm9nZW4gY2hsb3JpZGUgWzY0XS4gVGhlIHNlbnNvcnMgd2VyZSBhYmxlIHRvIGRldGVjdCB2YXBvdXJzIGRvd24gdG8gMTAgcHBtIHVzaW5nCmNoYW5nZXMgaW4gcmVzaXN0YW5jZS4KVmFuYWRpdW0gcGVudG94aWRlIG5hbm9maWJlcnMgd2VyZSBkZXBvc2l0ZWQgb250bwpsaXRob2dyYXBoaWNhbGx5IGRlZmluZWQgaW50ZXJkaWdpdGF0ZWQgZ29sZCBlbGVjdHJvZGVzIHRvIGZvcm0gZ2FzIHNlbnNvcnMgc2Vuc2l0aXZlIHRvCm9yZ2FuaWMgYW1pbmVzOyBSYWlibGUgZXQgYWwuIGRldGVybWluZWQgdGhlIGxvd2VyIGRldGVjdGlvbiBsaW1pdCBvZiB0aGUgc2Vuc29ycyB0byAxYnV0eWxhbWluZSB0byBiZSBiZWxvdyAzMCBwcGIgWzY1XS4KCjcuNCBQcm9wZXJ0aWVzIG9mIE5hbm9tYXRlcmlhbHMgYmFzZWQgQ2hlbWljYWwgU2Vuc29ycwpOYW5vbWF0ZXJpYWxzLWJhc2VkIGNoZW1pY2FsIHNlbnNvcnMgYXJlIGEgcmVsYXRpdmVseSBuZXcgZmllbGQgb2YgcmVzZWFyY2guCk5hbm9zdHJ1Y3R1cmVkIG1hdGVyaWFscyBwb3NzZXNzIGhpZ2hlciBzdXJmYWNlIGFyZWEgdG8gdm9sdW1lIHJhdGlvcyB0aGFuIHRoZWlyIGJ1bGsKY291bnRlcnBhcnRzLCBhbmQgdGhlaXIgdXNlIGFzIHNlbnNpbmcgZWxlbWVudHMgaXMgZXhwZWN0ZWQgdG8geWllbGQgaGlnaGVyIHNlbnNpdGl2aXRpZXMKYW5kIGxvd2VyIGRldGVjdGlvbiBsaW1pdHMgdGhhbiBjb252ZW50aW9uYWwgYnVsayBzZW5zaW5nIGZpbG1zLiBOYW5vc3RydWN0dXJlcyBzdWNoIGFzCmNhcmJvbiBuYW5vdHViZXMgY29uZHVjdCBlbGVjdHJvbmljIGN1cnJlbnRzIGVudGlyZWx5IG9uIHRoZSBzdXJmYWNlIG9mIHRoZSB0dWJlcyBtYWtpbmcKdGhlIHN0cnVjdHVyZSB2ZXJ5IHNlbnNpdGl2ZSB0byBzdXJmYWNlIG1vZGlmaWNhdGlvbi4gVG8gZGF0ZSwgaG93ZXZlciwgZGV0ZWN0aW9uIGxpbWl0cwphY2hpZXZlZCB3aXRoIG5hbm9tYXRlcmlhbHMtYmFzZWQgc2Vuc29ycyBoYXZlIGJlZW4gcmVsYXRpdmVseSBoaWdoIChsb3cgcHBtIGxldmVscyB2cy4KbG93IHBwYiBsZXZlbHMgYXR0YWluZWQgd2l0aCBJTVMpLiBUaGUgcHJpbWFyeSByZWFzb24gZm9yIHRoaXMgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZQpsYWNrIG9mIGhpZ2hseSBjb250cm9sbGFibGUgZmFicmljYXRpb24gcHJvY2Vzc2VzIGZvciB0aGVzZSBuZXcgbWF0ZXJpYWxzLCBhcyBhIHJlc3VsdCB0aGVyZQppcyBhIGdyZWF0IGRlYWwgb2Ygcm9vbSBmb3IgaW1wcm92aW5nIHRoZSBwZXJmb3JtYW5jZSBhcyBmYWJyaWNhdGlvbiBhbmQgcHJvY2Vzc2luZwp0ZWNobmlxdWVzIG1hdHVyZSBbNTddLgoKOC4gT3B0aWNhbCBHYXMgU2Vuc29ycwo4LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgT3B0aWNhbCBHYXMgU2Vuc29ycwpPcHRpY2FsIHNlbnNpbmcgaXMgYSB2ZXJ5IGJyb2FkIGZpZWxkLCBhbmQgaW4gZ2VuZXJhbCByZWZlcnMgdG8gYW55IG1ldGhvZCBieSB3aGljaAp2YXJpYXRpb25zIGluIHNvbWUgcHJvcGVydHkgb2YgbGlnaHQgaXMgY29udmVydGVkIGludG8gYW4gZWxlY3RyaWNhbCBzaWduYWwuIEluZnJhcmVkCnNwZWN0cm9zY29weSBpcyBhbiBvcHRpY2FsIHNlbnNpbmcgdGVjaG5pcXVlLCBidXQgaXQgd2FzIHNlcGFyYXRlZCBpbnRvIGEgZGlzdGluY3Qgc2VjdGlvbgpiZWNhdXNlIHRoZSB0ZWNobmlxdWUgaGFzIGJlZW4gaGVhdmlseSBpbnZlc3RpZ2F0ZWQsIGFuZCBpdCBpcyBhcmd1YWJseSB0aGUgbW9zdCBwb3B1bGFyCm9wdGljYWwgdGVjaG5pcXVlIHVzZWQgZm9yIHJlbW90ZSBzZW5zaW5nLiBJbmZvcm1hdGlvbiBvbiBib3RoIGludGVuc2l0eSBhbmQgd2F2ZWxlbmd0aApjYW4gYmUgY29sbGVjdGVkIHNpbXVsdGFuZW91c2x5LCBtYWtpbmcgb3B0aWNhbCBzZW5zaW5nIGEgdmVyc2F0aWxlIG1lYXN1cmVtZW50CnRlY2huaXF1ZSB0aGF0IGVuY29tcGFzc2VzIGEgcmFuZ2Ugb2YgcG9zc2libGUgbWVhc3VyZW1lbnRzIHN1Y2ggYXMgYWJzb3JiYW5jZSwKcmVmbGVjdGFuY2UsIGZsdW9yZXNjZW5jZSwgcmVmcmFjdGl2ZSBpbmRleCwgYW5kIGNvbG9yaW1ldHJ5IFsyN10uIEZsdW9yZXNjZW5jZSBpcyBhCmx1bWluZXNjZW5jZSBwaGVub21lbm9uIHRoYXQgb2NjdXJzIHdoZW4gYSBzYW1wbGUgaXMgZXhjaXRlZCBieSBhIGhpZ2gtZW5lcmd5IHNvdXJjZQphbmQgdGhlbiByZS1lbWl0cyBsaWdodCB3aXRoIGEgbG93ZXIgZW5lcmd5OyBsaWdodCBlbWlzc2lvbiBjZWFzZXMgb25jZSB0aGUgZXhjaXRpbmcKc291cmNlIGlzIHJlbW92ZWQuIEZsdW9yZXNjZW5jZSBjYW4gYmUgdHVybmVkIG9uIG9yIG9mZiB0aHJvdWdoIHRoZSBwcmVzZW5jZSBvZiBhbgphbmFseXRlLCBlaXRoZXIgYnkgY29uZm9ybWF0aW9uIGNoYW5nZXMgaW4gdGhlIGZsdW9yb3Bob3JlIHRoYXQgc2hpZnQgdGhlIGFic29ycHRpb24Kd2F2ZWxlbmd0aCBhd2F5IGZyb20gdGhlIHdhdmVsZW5ndGggb2YgdGhlIGF2YWlsYWJsZSBleGNpdGF0aW9uIHNvdXJjZSBvciB2aWEgb3B0aWNhbApxdWVuY2hpbmcuIEFic29ycHRpb24gdGVjaG5pcXVlcyBtZWFzdXJlIGNoYW5nZXMgaW4gbGlnaHQgaW50ZW5zaXR5IHRyYW5zbWl0dGVkIHRocm91Z2gKYSBzYW1wbGUgYW5kIGNvbG9yaW1ldHJpYyB0ZWNobmlxdWVzIG9wZXJhdGUgYmFzZWQgb24gY29sb3VyIGNoYW5nZXMgaW4gYSBzYW1wbGUgY2F1c2VkCmJ5IHRoZSBwcmVzZW5jZSBvZiB0aGUgYW5hbHl0ZSBvZiBpbnRlcmVzdC4KNTAKCgxGbHVvcmVzY2VuY2UtYmFzZWQgb3B0aWNhbCBzZW5zaW5nIGNhbiBiZSBwZXJmb3JtZWQgd2l0aCBvcHRpY2FsIGZpYnJlcy4gRmlicmVzIGFyZSB1c2VkCnRvIGRpcmVjdCBsaWdodCB0byB0aGUgc2Vuc2luZyBlbGVtZW50LCB3aGljaCBjb3VsZCBiZSBpbnRlZ3JhdGVkIG9udG8gdGhlIGZpYnJlIG9yIGJlCmxvY2F0ZWQgb24gYSBzZXBhcmF0ZSBzdWJzdHJhdGUgWzI3XS4gQWx0ZXJuYXRpdmVseSwgdG90YWwgaW50ZXJuYWwgcmVmbGVjdGlvbiBmbHVvcmVzY2VuY2UKKFRJUkYpIGFuZCBmaWJyZSBvcHRpYyBldmFuZXNjZW50IHdhdmUgKEZPRVcpIHNlbnNvcnMgaGF2ZSBiZWVuIGludmVzdGlnYXRlZC4gVGhlCnNlbnNvcnMgaW4gYm90aCBjYXNlcyBhcmUgdW5jbGFkIG9wdGljIGZpYnJlcyB3aGljaCBoYXZlIGFuIGFuYWx5dGUtc2Vuc2l0aXZlIGNvYXRpbmcuCkludGVyYWN0aW9uIG9mIHRoZSBzZW5zaW5nIGxheWVyIHdpdGggYW4gYW5hbHl0ZSB3aWxsIGNoYW5nZSB0aGUgb3B0aWNhbCBwcm9wZXJ0aWVzIG9mIHRoZQpzZW5zaW5nIGxheWVyLCB3aGljaCBtb2R1bGF0ZXMgdGhlIGxpZ2h0IHByb3BhZ2F0aW5nIHRocm91Z2ggdGhlIGZpYnJlLCBhbmQgaXMgZGV0ZWN0ZWQgYXQKdGhlIGZpYnJlIHRlcm1pbmF0aW9uIHVzaW5nIGFuIG9wdGljYWwgZGV0ZWN0b3IuIFRoZSBmaXJzdCBjcm9zcy1yZWFjdGl2ZSBvcHRpY2FsIHNlbnNvcgphcnJheSAoMTk5NikgdXNlZCBkeWUgbW9sZWN1bGVzIGltbW9iaWxpemVkIGJ5IHBvbHltZXIgb24gdGhlIHRpcHMgb2YgdGhlIG9wdGljIGZpYnJlCls2Nl0uIFRoZSBkeWUgbW9sZWN1bGVzIGdhdmUgZGlmZmVyZW50IGZsdW9yZXNjZW50IHJlc3BvbnNlIHBhdHRlcm5zIG9uIGV4cG9zdXJlIHRvCm9yZ2FuaWMgdmFwb3VycywgYW5kIGEgbmV1cmFsIG5ldHdvcmsgd2FzIHRyYWluZWQgZm9yIHZhcG91ciByZWNvZ25pdGlvbiB1c2luZyB2aWRlbwppbWFnZXMgb2YgdGhlIHJlc3BvbnNlcyBvZiB0aGUgbXVsdGktZmlicmUgdGlwLgpBYnNvcnB0aW9uIGlzIHRoZSBtYWluIG5vbi1mbHVvcmVzY2VuY2UgdGVjaG5pcXVlIHVzZWQgZm9yIG9wdGljYWwgc2Vuc2luZy4gT25lCmV4YW1wbGUgb2YgYWJzb3JwdGlvbi1iYXNlZCBvcHRpY2FsIHNlbnNpbmcgdXNlcyB0aGluIGZpbG1zIHNlbnNpdGl2ZSB0byBjZXJ0YWluIFZPQ+KAmXMsCndob3NlIGFic29ycHRpb24gc3BlY3RyYSBjaGFuZ2UgYWZ0ZXIgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYW5hbHl0ZXMgWzY3XS4gQW5vdGhlciBub25mbHVvcmVzY2VuY2Ugb3B0aWNhbCB0ZWNobmlxdWUgaXMgcmVmbGVjdG9tZXRyaWMgaW50ZXJmZXJlbmNlIHNwZWN0cm9zY29weSAoUklmUyksIHdoaWNoCmlzIGEgbm9uLWRlc3RydWN0aXZlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IG9wdGljYWwgbGFiZWxzLiBJbiBSSWZTLCB3aGl0ZQpsaWdodCBpcyB1c2VkIHRvIGlsbHVtaW5hdGUgdGhlIHNhbXBsZSwgcHJvZHVjaW5nIGEgY2hhcmFjdGVyaXN0aWMgaW50ZXJmZXJlbmNlIHBhdHRlcm4uIEEKdGhpY2tuZXNzIGNoYW5nZSBpbiBhIHBvbHltZXIgc2Vuc2luZyBsYXllciwgd2hpY2ggc3dlbGxzIHVwb24gZXhwb3N1cmUgdG8gdm9sYXRpbGUKb3JnYW5pYyBjb21wb3VuZHMsIGlzIGRldGVjdGVkIHZpYSBjaGFuZ2VzIGluIHRoZSBpbnRlcmZlcmVuY2UgcGF0dGVybi4KCjguMiBDb21tZXJjaWFsIE9wdGljYWwgR2FzIFNlbnNvcnMKQWx0aG91Z2ggZmlicmUgb3B0aWMgY2hlbWljYWwgc2Vuc29ycyBhcmUgc3RpbGwgdW5kZXJnb2luZyBzaWduaWZpY2FudCByZXNlYXJjaCwgb3B0aWNhbApzZW5zb3JzIGJhc2VkIG9uIHRlY2huaXF1ZXMgc3VjaCBhcyBjb2xvcmltZXRyeSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbW1lcmNpYWxpemVkLgpGb3IgZXhhbXBsZSwgSG9uZXl3ZWxsIEFuYWx5dGljc+KAmSBDaGVtY2Fzc2V0dGUgdGVjaG5vbG9neSB1c2VzIGEgY2hlbWljYWxseS1zZW5zaXRpdmUKcGFwZXIgdGFwZSB0byBjb2xsZWN0IGFuZCBhbmFseXplIHRhcmdldCBnYXNlcy4gVGhlIENoZW1jYXNzZXR0ZSBjaGFuZ2VzIGNvbG9yIGluIGRpcmVjdApwcm9wb3J0aW9uIHRvIHRoZSBjb25jZW50cmF0aW9uIG9mIGdhcyBwcmVzZW50LCBhbmQgdGhlIG1vbml0b3JpbmcgZXF1aXBtZW50IHJlbGF0ZXMgdGhlCmNvbG91ciBpbnRlbnNpdHkgY2hhbmdlcyB0byB0aGUgZ2FzIGNvbmNlbnRyYXRpb24gYnkgY29tcGFyaXNvbiB0byBrbm93biBnYXMgcmVzcG9uc2VzLgpUaGUgdGVjaG5pcXVlIGlzIGV4dHJlbWVseSBzZW5zaXRpdmUgYW5kIGlzIGFibGUgdG8gYWNoaWV2ZSBzdWItcHBtIGRldGVjdGlvbiBsaW1pdHMgWzY4XS4KVGFibGUgMTcgLSBDb21wYW5pZXMgc2VsbGluZyBvcHRpY2FsIHNlbnNvcnMKQ29tcGFueQoKUHJvZHVjdChzKQoKeAoKRHLDpGdlcgoKeAoKRHLDpGdlci1UdWJlcwoKeAoKSG9uZXl3ZWxsIEFuYWx5dGljcwoKeAoKQ2hlbWNhc3NldHRlIGFuZCBhc3NvY2lhdGVkIE1EQSBzY2llbnRpZmljCm1vbml0b3JzCgo4LjMgUmVjZW50IFJlc2VhcmNoIG9uIE9wdGljYWwgR2FzIFNlbnNvcnMKVGhlIG1vc3Qgc2Vuc2l0aXZlIGFuZCBzZWxlY3RpdmUgZGV0ZWN0b3JzIGZvciBhbWJpZW50IGFtbW9uaWEgb3BlcmF0ZSBiYXNlZCBvbiBvcHRpY2FsCmFic29ycHRpb24gc3BlY3Ryb3Njb3B5OyBzeXN0ZW1zIHdpdGggZGV0ZWN0aW9uIGxpbWl0cyBvZiAxIHBwYiBhbmQgcmVzcG9uc2UgdGltZXMgb24KdGhlIG9yZGVyIG9mIGEgc2Vjb25kIGhhdmUgYmVlbiByZXBvcnRlZCBbNDRdLiBOYWthZ2F3YSBldCBhbC4gaW52ZXN0aWdhdGVkIHRoZSBzcGVjdHJhbApjaGFuZ2VzIG9mIGNvbXBvc2l0ZSBmaWxtcyBvZiB0ZXRyYXBoZW55bHBvcnBoeXJpbi9wb2x5bWVyIHdoZW4gZXhwb3NlZCB0byBoeWRyb2dlbgpjaGxvcmlkZSBnYXMsIGFuZCBkaXNjb3ZlcmVkIHRoZSByZXZlcnNpYmxlIGFic29yYmFuY2Ugb2YgdGV0cmFwaGVueWxwb3JwaHlyaW4gYW5kCmRldGVjdGlvbiB0byBzdWItcHBtIGxldmVscyBvZiBnYXMgWzY5XS4gQnkgY29uY2VudHJhdGluZyBpb2RpbmUgb250byBhIG1lbWJyYW5lIGRpc2sKYW5kIHRoZW4gZGV0ZXJtaW5pbmcgdGhlIGFtb3VudCBvZiBhbmFseXRlIGV4dHJhY3RlZCBvbiB0aGUgZGlzayBzdXJmYWNlIHVzaW5nIGRpZmZ1c2UKcmVmbGVjdGFuY2Ugc3BlY3Ryb3Njb3B5LCBBcmVuYSBldCBhbC4gd2VyZSBhYmxlIHRvIG1lYXN1cmUgaW9kaW5lIGxldmVscyBkb3duIHRvIDAuMQo1MQoKDHBwbS4gUmVzZWFyY2hlcnMgaGF2ZSBhbHNvIGludmVzdGlnYXRlZCBhIHZhcmlldHkgb2YgdGVjaG5pcXVlcyBmb3Igc2Vuc2luZyBvcmdhbmljCmFuYWx5dGVzIHN1Y2ggYXMgYWNldGljIGFuaHlkcmlkZSwgaGV4YW5lLCBoZXB0YW5lLCBtZXRoeWxhbWluZSwgdGV0cmFoeWRyb2Z1cmFuIGFuZAp0b2x1ZW5lIFs3NSw3MS03Myw3MCw3NF0uCgo4LjQgUHJvcGVydGllcyBvZiBPcHRpY2FsIENoZW1pY2FsIFNlbnNvcnMKT3B0aWNhbCBnYXMgc2Vuc2luZyBpcyBhIGRpdmVyc2UgZmllbGQgY29uc2lzdGluZyBvZiBtYW55IGRpZmZlcmVudCB0ZWNobmlxdWVzLCBlYWNoCnRlY2huaXF1ZSB3aXRoIGl0cyB1bmlxdWUgYWR2YW50YWdlcyBhbmQgZGlzYWR2YW50YWdlcy4gQXMgbWVudGlvbmVkIHByZXZpb3VzbHkgZm9yIElSCnNwZWN0cm9tZXRlcnMsIHRoZSBzaW5nbGUgZ3JlYXRlc3QgYWR2YW50YWdlIG9mIGFsbCBvcHRpY2FsIGNoZW1pY2FsIHNlbnNvcnMgaXMgdGhlaXIgYWJpbGl0eQp0byBzZW5zZSBnYXNlcyByZW1vdGVseTsgdGhlIHNlbnNvciBpdHNlbGYgZG9lcyBub3QgbmVlZCB0byBiZSBleHBvc2VkIHRvIGNvcnJvc2l2ZSBvcgpyZWFjdGl2ZSBnYXNlcy4gRmlicmUgb3B0aWMgc2Vuc29ycyBjb25zdW1lIGxpdHRsZSBwb3dlciwgaGF2ZSBubyBtb3ZpbmcgcGFydHMgYW5kCnBvc3Nlc3MgbG93IGRldGVjdGlvbiBsaW1pdHMgWzI0XS4gQWR2YW50YWdlcyBvZiBjb2xvcmltZXRyaWMgc2Vuc29ycyBpbmNsdWRlIGVhc2Ugb2YgdXNlLAp2aXN1YWwgZXZpZGVuY2Ugb2YgdGhlIGdhcyBkZXRlY3Rpb24gZXZlbnQsIGFuZCByZXNpc3RhbmNlIHRvIGludGVyZmVyZW5jZXMgWzI0XS4gSG93ZXZlciwKZGlzYWR2YW50YWdlcyBpbmNsdWRlIHRoZSBkZWdyYWRhdGlvbiBvZiBjaGVtaWNhbGx5IHNlbnNpdGl2ZSBjb2F0aW5ncywgaWYgdXNlZAoKOS4gUGhvdG9pb25pemF0aW9uIERldGVjdG9ycwo5LjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgUGhvdG9pb25pemF0aW9uIERldGVjdG9yIEdhcyBTZW5zb3JzClBob3RvaW9uaXphdGlvbiBEZXRlY3RvcnMgKFBJRCkgZm9yIGdhcyBkZXRlY3Rpb24gaGF2ZSBiZWVuIGF2YWlsYWJsZSBzaW5jZSB0aGUgMTk2MOKAmXMKWzc2XSBhbmQgYXJlIGNvbW1vbmx5IHVzZWQgZm9yIHRoZSBkZXRlY3Rpb24gb2YgVk9D4oCZcy4gTGlrZSBJTVMsIFBJRCB1dGlsaXplcyBhIGhpZ2gKZW5lcmd5IHNvdXJjZSB0byBpb25pemUgdGhlIGFuYWx5dGUocykuIEhvd2V2ZXIsIFBJRCB1c2VzIGFuIHVsdHJhdmlvbGV0IChVVikgbGlnaHQKc291cmNlLCB3aGljaCBlbWl0cyByYWRpYXRpb24gb2Ygc3VmZmljaWVudCBlbmVyZ3kgdG8gaW9uaXplIGdhcyBtb2xlY3VsZXMgdGhhdCBoYXZlIGFuCmlvbml6YXRpb24gcG90ZW50aWFsIGJlbG93IHRoZSByYWRpYXRpb24gZW5lcmd5LiBUaGUgcG9zaXRpdmVseSBjaGFyZ2VkIGlvbnMgYXJlIGF0dHJhY3RlZAp0byB0aGUgbmVnYXRpdmUgZWxlY3Ryb2RlIGFuZCBhcmUgZGV0ZWN0ZWQgYXMgYW4gZWxlY3RyaWNhbCBjdXJyZW50LiBUaGUgbWFnbml0dWRlIG9mCmVsZWN0cmljYWwgY3VycmVudCBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIGNvbmNlbnRyYXRpb24gb2YgaW9uaXplZCBtb2xlY3VsZXMuIEEgc2NoZW1hdGljCm9mIGEgdHlwaWNhbCBQSUQgY29uZmlndXJhdGlvbiBpcyBzaG93biBpbiBGaWd1cmUgMTYuIEFjdHVhbCBQSUQgc2Vuc29ycyBhcyB0aGUgb25lcwpzaG93biBpbiBGaWd1cmUgMTcgYXJlIG5vdCBsYXJnZS4gUElEIHNlbnNvcnMgYXJlIHN1c2NlcHRpYmxlIHRvIGFtYmllbnQgaHVtaWRpdHkKcXVlbmNoaW5nIGFzIGEgcmVzdWx0IG9mIHRoZSBzY2F0dGVyaW5nIG9mIFVWIHJhZGlhdGlvbiBmcm9tIHRoZSB3YXRlci4KCkZpZ3VyZSAxNiAtIFR5cGljYWwgUElEIGNvbmZpZ3VyYXRpb24gWzE4XQoKVGhlIFVWIHNvdXJjZSBpcyBhIGxhbXAgd2hpY2ggY29udGFpbnMgYSBsb3ctcHJlc3N1cmUgaW5lcnQgZ2FzIHN1Y2ggYXMgYXJnb24sIGtyeXB0b24sCm9yIHhlbm9uLiBXaGVuIGV4Y2l0ZWQsIHRoZSBnYXMgd2lsbCBlbWl0IGxpZ2h0IG9mIGNvbnN0YW50IGVuZXJneSB3aXRoIGVuZXJneSBtZWFzdXJlZAppbiBlbGVjdHJvbnZvbHRzIChlVikuIFhlbm9uIGdhcyBlbWl0cyBsaWdodCBhdCA4LjQgZVYgYW5kIDkuNiBlViwga3J5cHRvbiBlbWl0cyBhdCAxMC4wCmVWIGFuZCAxMC42IGVWLCBhbmQgYXJnb24gZW1pdHMgbGlnaHQgYXQgMTEuNyBlVi4gVGhlIGtyeXB0b24gbGFtcCwgYXQgMTAuNiBlViwgaXMgdGhlCjUyCgoMbW9zdCBjb21tb25seSB1c2VkIGxhbXAgc2luY2UgaXQgY2FuIGlvbml6ZSBtb3N0IG9yZ2FuaWMgY29tcG91bmRzIFsxOF0uIFZPQyBnYXNlcwpkZXRlY3RhYmxlIHVzaW5nIDkuNiBlViBsYW1wcyBpbmNsdWRlIGJlbnplbmUsIGFyb21hdGljIGNvbXBvdW5kcywgaW9kaW5lLCBhbmQgYW1pbmVzLgpHYXNlcyBkZXRlY3RlZCBiZXR3ZWVuIDkuNiBlViBhbmQgMTAuNiBlViBpbmNsdWRlIGFtbW9uaWEsIGV0aGFub2wgYW5kIGFjZXRvbmUsIGFuZApnYXNlcyBzdWNoIGFzIGFjZXR5bGVuZSBhbmQgbWV0aGFub2wgYXJlIGRldGVjdGVkIGJldHdlZW4gMTAuNiBhbmQgMTEuNyBlVi4gTW9sZWN1bGVzCndoaWNoIGhhdmUgaGlnaGVyIGlvbml6YXRpb24gcG90ZW50aWFscyB3aWxsIG5vdCBiZSBpb25pemVkLCBhbmQgdGh1cyB3aWxsIG5vdCBiZSBkZXRlY3RlZCwKdGhpcyBpcyBhbiBhZHZhbnRhZ2Ugc2luY2Ugbml0cm9nZW4gKDE1LjUgZVYpIGFuZCBveHlnZW4gKDEyLjAgZVYpIGdhcywgd2hpY2ggYXJlCmFidW5kYW50IGluIHRoZSBhdG1vc3BoZXJlIGFyZSBub3QgZGV0ZWN0ZWQgYW5kIGRvIG5vdCBvdmVyd2hlbG0gdGhlIHNpZ25hbC4gTXVsdGlwbGUKaW9uaXphdGlvbiBzb3VyY2VzIGNhbiBiZSB1c2VkIHRvIHNlcGFyYXRlIGdyb3VwcyBvZiBnYXNzZXMgYnkgY29tcGFyaW5nIHRoZSByZXNwZWN0aXZlCnNpZ25hbHMsIGJ1dCBkbyBub3QgcHJvdmlkZSBhIG1ldGhvZCBvZiBpZGVudGlmeWluZyBpbmRpdmlkdWFsIGFuYWx5dGVzLiBTZWxlY3Rpdml0eSBjYW4gYmUKYXR0YWluZWQgdGhyb3VnaCBkZXNpZ24gb2YgbWVtYnJhbmVzIHRoYXQgcGVybWl0IG9ubHkgdGhlIGRpZmZ1c2lvbiBvZiB0YXJnZXQgZ2FzZXMuCgpGaWd1cmUgMTcgLSBDb21tZXJjaWFsIFBJRCBzZW5zb3IsIGRpYW1ldGVyIGlzIGFwcHJveGltYXRlbHkgMjAgbW0KCjkuMiBDb21tZXJjaWFsIFBJRCBHYXMgU2Vuc29ycwpDb21tZXJjaWFsIGNvbXBhbmllcyB0aGF0IG9mZmVyIFBJRCBzZW5zaW5nIHVuaXRzIGFyZSBzaG93biBpbiBUYWJsZSAxOC4KCjUzCgoMVGFibGUgMTggLSBDb21wYW5pZXMgb2ZmZXJpbmcgUElEIGdhcyBzZW5zb3JzCkNvbXBhbnkKClByb2R1Y3QocykKCngKCkFpcnNlbnNlIEFuYWx5dGljcwoKeAoKR0RBIDIKCngKCkJhc2VsaW5lLU1vY29uCgp4CgpwaUQtVEVDSCBQbHVzCgp4CgpNaW5lIFNhZmV0eSBBcHBsaWFuY2VzCgp4CgpTaXJpdXMgTXVsdGlnYXMKCngKClJBRSBTeXN0ZW1zCgp4CgpBcmVhUkFFCgp4CgpFbnRyeVJBRQoKeAoKTWluaVJBRSAzMDAwCgp4CgpNaW5pUkFFIDIwMDAKCngKCnBwYlJBRSAzMDAwCgp4CgpwcGJSQUUgUGx1cwoKeAoKSUFRUkFFCgp4CgpSQUVHdWFyZCBQSUQKCngKCkhHVkkKCngKClNtaXRocyBEZXRlY3Rpb24KCjkuMyBSZWNlbnQgUmVzZWFyY2ggb24gUElEIEdhcyBTZW5zb3JzClNpZWxlbWFubiBldCBhbC4gZGV2ZWxvcGVkIGFuIGlvbiBtb2JpbGl0eSBzcGVjdHJvbWV0ZXIgdGhhdCBpcyBlcXVpcHBlZCB3aXRoIGEgMTAuNiBlVgpnYXMtZGlzY2hhcmdlIGxhbXAgdHlwaWNhbGx5IHVzZWQgaW4gcGhvdG9pb25pemF0aW9uIGRldGVjdG9ycy4gRGV0ZWN0aW9uIGxpbWl0cyBmb3IKYmVuemVuZSwgdG9sdWVuZSwgYW5kIG0teHlsZW5lIGFyZSA2MCBwcGIsIDgwIHBwYiwgYW5kIDcwIHBwYiByZXNwZWN0aXZlbHkuCgo5LjQgUHJvcGVydGllcyBvZiBQSUQgVGVjaG5vbG9neSBiYXNlZCBDaGVtaWNhbCBTZW5zb3JzClBJRCBpcyBhIG1hdHVyZSBhbmQgY29tbWVyY2lhbGx5IHN1Y2Nlc3NmdWwgdGVjaG5vbG9neSwgYW5kIGF0IHRoZSBwcmVzZW50LCBQSUQgaXMgdGhlCnByZWZlcnJlZCBjaG9pY2UgZm9yIG1vbml0b3JpbmcgVk9D4oCZcyBpbiBnZW5lcmFsIFsxOF0uIEl0cyBhZHZhbnRhZ2VzIGluY2x1ZGUgZXh0cmVtZWx5CmxvdyBkZXRlY3Rpb24gbGltaXRzIGFuZCBmYXN0IHJlc3BvbnNlLiBIb3dldmVyLCBQSUQgc3VmZmVycyBmcm9tIHBvb3Igc2VsZWN0aXZpdHkgc2luY2UKYSBzaW5nbGUgZXhjaXRhdGlvbiBzb3VyY2Ugd2lsbCBpb25pemUgYW55IGdhcyB3aXRoIGlvbml6YXRpb24gcG90ZW50aWFsIGJlbG93IHRoZSBzb3VyY2UKZW5lcmd5LgoKMTAuIFBvbHltZXItYmFzZWQKQ2hlbWljYWwKQ2hlbWljYXBhY2l0b3JzLCBDaGVtRkVU4oCZcykKClNlbnNvcnMKCihDaGVtaXJlc2lzdG9ycywKCjEwLjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgUG9seW1lciBHYXMgU2Vuc29ycwpUcmFkaXRpb25hbCBtYXRlcmlhbHMgdXNlZCBpbiBjaGVtaWNhbCBzZW5zb3JzIGluY2x1ZGUgc2VtaWNvbmR1Y3RpbmcgbWV0YWwgb3hpZGVzLApzb2xpZCBlbGVjdHJvbHl0ZXMsIGFuZCBpb25pYyBtZW1icmFuZXMuIEhvd2V2ZXIsIGludHJpbnNpY2FsbHkgY29uZHVjdGluZyBhbmQKaW5zdWxhdGluZyBwb2x5bWVycyBoYXZlIGJlZW4gYXR0cmFjdGluZyBtdWNoIG1vcmUgYXR0ZW50aW9uIGluIHJlY2VudCB5ZWFycyBkdWUgdG8gdGhlaXIKd2lkZWx5IHR1bmVhYmxlIGNoZW1pY2FsIGFuZCBwaHlzaWNhbCBwcm9wZXJ0aWVzLCBlYXNlIG9mIGRlcG9zaXRpb24sIGFuZCBsb3cgY29zdC4gQQpwb2x5bWVyIGlzIGEgc3Vic3RhbmNlIHRoYXQgY29uc2lzdHMgb2YgcmVwZWF0aW5nIHN0cnVjdHVyYWwgdW5pdHMsIG9yIG1vbm9tZXJzLCBjb25uZWN0ZWQKdG9nZXRoZXIgdmlhIGNvdmFsZW50IGNoZW1pY2FsIGJvbmRzIFs3N10uIEJvdGggc3ludGhldGljIGFuZCBuYXR1cmFsIHBvbHltZXJzIGFyZSB2ZXJ5CmNvbW1vbjsgYmlvbG9naWNhbCBwb2x5bWVycyBpbmNsdWRlIEROQSwgcHJvdGVpbnMgYW5kIGNlbGx1bG9zZSwgYW5kIHN5bnRoZXRpYwpwb2x5bWVycyBpbmNsdWRlIHBsYXN0aWNzIGFuZCBydWJiZXIuIFN5bnRoZXRpYyBwb2x5bWVycyBhbHNvIGNvbWUgaW4gdHdvIGZvcm1zOgppbnRyaW5zaWNhbGx5IGNvbmR1Y3RpbmcsIGFuZCBpbnRyaW5zaWNhbGx5IG5vbi1jb25kdWN0aW5nLiBFbGVjdHJpY2FsIGNvbmR1Y3Rpdml0aWVzCmFwcHJvYWNoaW5nIHRob3NlIG9mIG1ldGFscyBhdCByb29tIHRlbXBlcmF0dXJlIGhhdmUgYmVlbiBhY2hpZXZlZCBpbiBpbnRyaW5zaWNhbGx5CjU0CgoMY29uZHVjdGluZyBwb2x5bWVycyBieSBkb3BpbmcgdGhlbSB0aHJvdWdoIGNhcmVmdWwgYWRkaXRpb24gb2Ygc2VsZWN0ZWQgYXRvbXMgdG8gdGhlCnBvbHltZXIgbWF0cml4LiBJbnRyaW5zaWNhbGx5IG5vbi1jb25kdWN0aW5nIHBvbHltZXJzIGNhbiBhbHNvIGJlIG1hZGUgZWxlY3RyaWNhbGx5CmNvbmR1Y3RpdmUgYnkgY3JlYXRpbmcgYSBjb21wb3NpdGUsIHdoaWNoIGlzIGEgbWl4dHVyZSBvZiBwb2x5bWVyIGFuZCBlbGVjdHJpY2FsbHkKY29uZHVjdGl2ZSBwYXJ0aWNsZXMgZW1iZWRkZWQgd2l0aGluIHRoZSBwb2x5bWVyIG1hdHJpeC4KUG9seW1lcnMgdXNlZCBpbiBzZW5zb3IgZGV2aWNlcyBlaXRoZXIgcGFydGljaXBhdGUgaW4gdGhlIHNlbnNpbmcgbWVjaGFuaXNtcywgb3Igc3RhYmlsaXplCnRoZSBzZW5zaW5nIGNvbXBvbmVudHMgWzc4XS4gSW4gdGhpcyBzZWN0aW9uLCBzZXZlcmFsIHR5cGVzIG9mIHBvbHltZXItYmFzZWQgY2hlbWljYWwKc2Vuc29ycyB3aWxsIGJlIGRlc2NyaWJlZCB0aGF0IHVuZGVyZ28gYSBidWxrIHJlc3BvbnNlIHdoZW4gZXhwb3NlZCB0byBhIHRhcmdldCBjaGVtaWNhbDoKY2hlbWlyZXNpc3RvcnMsIGNoZW1pY2FwYWNpdG9ycywgYW5kIGNoZW1GRVTigJlzLiBPbmUgY2FuIGFsc28gYXJndWUgdGhhdCBzZXZlcmFsIG90aGVyCnR5cGVzIG9mIGNoZW1pY2FsIHNlbnNvcnM6IG1pY3JvY2FudGlsZXZlciwgbmFub3NlbnNvciwgYW5kIFNBVywgc2hvdWxkIGJlIHBsYWNlZAp1bmRlciB0aGUgcG9seW1lci1iYXNlZCBjYXRlZ29yeSwgc2luY2UgdGhleSByZWx5IG9uIHBvbHltZXIgc2Vuc2luZyBsYXllcnMgZm9yCmRldGVjdGluZyBhbmFseXRlcy4KQSBjaGVtaXJlc2lzdG9yIGlzIGEgc2Vuc29yIHdob3NlIHJlc2lzdGFuY2UgY2hhbmdlcyBhY2NvcmRpbmcgdG8gdGhlIGNvbmNlbnRyYXRpb24gb2YKYW5hbHl0ZSBwcmVzZW50LiBBIHR5cGljYWwgY2hlbWlyZXNpc3RvciB3aWxsIGNvbnNpc3Qgb2YgaW50ZXJkaWdpdGF0ZWQgZWxlY3Ryb2RlcyBhbmQgYSB0aGluLApub24tY29uZHVjdGluZyBwb2x5bWVyIHNlbnNpbmcgZmlsbSB3aGljaCBoYXMgYmVlbiBpbmZ1c2VkIHdpdGggY29uZHVjdGl2ZSBwYXJ0aWNsZXMuCkluIGl0cyB1bmV4cG9zZWQgc3RhdGUsIHRoZSBzZW5zb3IgaGFzIGEgc3BlY2lmaWMgYmFzZWxpbmUgcmVzaXN0YW5jZS4gVXBvbiBnYXMgZXhwb3N1cmUsCnRoZSBwb2x5bWVyIHN3ZWxscywgcmVkdWNpbmcgdGhlIGVsZWN0cmljYWwgY29uZHVjdGl2aXR5IG9mIHRoZSBzZW5zb3IgZHVlIHRvIHRoZSBpbmNyZWFzZWQKc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZSBjb25kdWN0aW5nIHBhcnRpY2xlcy4gVGhlIGNoYW5nZSBpbiByZXNpc3RhbmNlIGlzIHVzZWQgdG8KZGV0ZXJtaW5lIHdoaWNoIGFuYWx5dGVzIGFyZSBwcmVzZW50LiBBIGNoZW1pY2FwYWNpdGl2ZSBzZW5zb3IgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUKY2FwYWNpdG9ycyAoaS5lLiBwYXJhbGxlbCBwbGF0ZXMsIGludGVyZGlnaXRhdGVkIGNhcGFjaXRvcnMsIGV0Yy4pIHdpdGggYSBjaGVtaWNhbGx5LXNlbnNpdGl2ZQptYXRlcmlhbCBhY3RpbmcgYXMgdGhlIGRpZWxlY3RyaWMgYmV0d2VlbiB0aGUgcGxhdGVzIFs3OV0uIEJvdGggdGhlIGRpZWxlY3RyaWMgY29uc3RhbnQgYW5kCnRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIGNhcGFjaXRvciBwbGF0ZXMgb2YgdGhlIHBvbHltZXItZmlsbGVkIGNoZW1pY2FwYWNpdG9ycyBpcwptb2R1bGF0ZWQgYnkgdGhlIGFkc29yYmVkIG9yIGRlc29yYmVkIGFuYWx5dGVzIGFuZCBjYW4gYmUgZGV0ZWN0ZWQgZWl0aGVyIHZpYSBhCm1lYXN1cmVtZW50IG9mIHRoZSB0aW1lLWNvbnN0YW50IG9mIGEgY2hhcmdlIG9yIGRpc2NoYXJnZSBvcGVyYXRpb24gb2YgdGhlIGNhcGFjaXRvciBvcgp2aWEgcmVzb25hbnQgZnJlcXVlbmN5IGluIGFuIGVsZWN0cmljIHJlc29uYW5jZSBjaXJjdWl0LiBBIEZFVCBjYW4gYmUgdXNlZCBhcyBhIGdhcwpzZW5zb3IgcHJvdmlkZWQgdGhhdCB0aGUgYW5hbHl0ZSwgdXBvbiBiaW5kaW5nLCBpcyBjYXBhYmxlIG9mIGFsdGVyaW5nIHRoZSBmaWVsZAplbmhhbmNlbWVudCBvZiB0aGUgRkVULiBUaGUgY29tYmluYXRpb24gb2YgdWx0cmEgbG93LXBvd2VyIENvbXBsZW1lbnRhcnkgTWV0YWwKT3hpZGUgU2VtaWNvbmR1Y3RvciAoQ01PUykgdHJhbnNpc3RvciB0ZWNobm9sb2d5IGFuZCBhIGNvbmR1Y3RpbmcgcG9seW1lciBnYXRlIGhhcwpyZXN1bHRlZCBpbiBhIHRyYW5zaXN0b3IgY2FsbGVkIGEgY2hlbUZFVCwgd2hvc2UgY29uZHVjdGFuY2UgaXMgYSBmdW5jdGlvbiBvZiBnYXMKY29uY2VudHJhdGlvbiBbODBdLgoKMTAuMiBDb21tZXJjaWFsIFBvbHltZXIgR2FzIFNlbnNvcnMKUG9seW1lci1iYXNlZCBzZW5zb3JzIGFyZSBjdXJyZW50bHkgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21tZXJjaWFsaXphdGlvbiwgd2l0aCB0d28KY29tcGFuaWVzIG9mZmVyaW5nIGNoZW1pY2FsIHNlbnNpbmcgdW5pdHMgbGlzdGVkIGluIFRhYmxlIDE5LiBCbG9vZGhvdW5kIFNlbnNvcnMgTHRkLgooYWNxdWlyZWQgYnkgU2NlbnNpdmUgVGVjaG5vbG9naWVzKSBoYXMgZGV2ZWxvcGVkIGEgcHJvZHVjdCBjYWxsZWQgdGhlIEJsb29kaG91bmQKU1QyMTQuIFRoZSBzZW5zaW5nIHVuaXQgZmVhdHVyZXMgYW4gYXJyYXkgb2YgMTQgY2hlbWlyZXNpc3RvciBzZW5zb3JzOyB0aGUgbWFudWZhY3R1cmVyCmNsYWltcyBsb3dlc3QgZGV0ZWN0aW9uIGxpbWl0cyBvZiBwcGLigJlzIHRvIHBwbeKAmXMgYW5kIHNhbXBsaW5nIHRpbWVzIHJhbmdpbmcgYmV0d2Vlbgp0d2VudHkgdG8gc2l4dHkgc2Vjb25kcy4gQ3lyYW5vIFNjaWVuY2UgSW5jLiAoYWNxdWlyZWQgYnkgU21pdGhzIERldGVjdGlvbikKbWFudWZhY3R1cmVzIGFuZCBzZWxscyB0aGUgQ3lyYW5vc2UgMzIwLCB3aG9zZSBzZW5zaW5nIHVuaXQgY29uc2lzdHMgb2YgMzIgcG9seW1lcgpuYW5vY29tcG9zaXRlIHNlbnNvcnMgb24gYSAxIGluY2ggc3F1YXJlIGNoaXAuIFRoZSBtYW51ZmFjdHVyZXIgY2xhaW1zIGxvd2VzdApkZXRlY3Rpb24gbGltaXRzIGluIHRoZSBwcGLigJlzLCBhbmQgcmVzcG9uc2UgdGltZXMgd2hpY2ggYXJlIGxlc3MgdGhhbiBhIG1pbnV0ZS4KCjU1CgoMVGFibGUgMTkgLSBDb21tZXJjaWFsIHBvbHltZXItYmFzZWQgZ2FzIHNlbnNvciBjb21wYW5pZXMKQ29tcGFueQoKUHJvZHVjdChzKQoKeAoKQmxvb2Rob3VuZApUZWNobm9sb2dpZXMpCgp4CgpDeXJhbm8gU2NpZW5jZSBJbmMuIChTbWl0aHMgRGV0ZWN0aW9uKQoKU2Vuc29ycwoKTHRkLgoKKFNjZW5zaXZlCgp4CgpCbG9vZGhvdW5kIFNUMjE0Cgp4CgpDeXJhbm9zZSAzMjAKCjEwLjMgUmVjZW50IFJlc2VhcmNoIG9uIFBvbHltZXIgR2FzIFNlbnNvcnMKQ2hlbWlyZXNpc3RvcnMKVGhlIGNoZW1pcmVzaXN0b3Igc2Vuc29ycyBmYWJyaWNhdGVkIGJ5IFN1dGFyIGV0IGFsLiB3ZXJlIGFibGUgdG8gZGV0ZWN0IGFtbW9uaWEgbGV2ZWxzIGFzCmxvdyBhcyAwLjUgcHBtIFs4MV0uIFRoZSBzZW5zaW5nIGZpbG0gY29uc2lzdGVkIG9mIGludHJpbnNpYyBjb25kdWN0aW5nIHBvbHlhbmlsaW5lCm5hbm9maWJlcnMgYXJyYW5nZWQgaW4gYSBjcnlzdGFsbGluZSBuYW5vZmlicm91cyBzdHJ1Y3R1cmUuIFhpZSBldCBhbC4gdXRpbGl6ZWQgcG9seW1lcmNhcmJvbiBibGFjayBjb21wb3NpdGUgY2hlbWlyZXNpc3RvcnMgYW5kIHBhdHRlcm4gcmVjb2duaXRpb24gYW5hbHlzaXMgdG8gcmVjb2duaXplCmFjZXRvbmUsIGV0aGFub2wsIHRvbHVlbmUsIG1ldGhhbm9sLCBhbmQgdGV0cmFoeWRyb2Z1cmFuIGF0IGNvbmNlbnRyYXRpb25zIGJldHdlZW4gMjAwCmFuZCAyMDAwIHBwbSBbODJdLiBJbmRpdmlkdWFsIHNlbnNvcnMgd2l0aGluIHRoZSBhcnJheSB1c2VkIGVpdGhlciBQVlBILCBQRU8sIG9yIFBDTAphcyB0aGUgcG9seW1lciBzZW5zaW5nIGZpbG0uIEtpbSBldCBhbC4gZGV2ZWxvcGVkIGEgcG9ydGFibGUgc2Vuc2luZyBzeXN0ZW0gYmFzZWQgb24gYQpQREE7IHRoZSBzZW5zb3IgaXRzZWxmIGNvbnNpc3RzIG9mIDE2IHNlbnNpbmcgZWxlbWVudHMgaW50ZWdyYXRlZCBvbiB0aGUgc2FtZSBzaWxpY29uCnN1YnN0cmF0ZSBbODNdLiBUaGUgbGltaXQgb2YgZGV0ZWN0aW9uIGZvciBhY2V0b25lIHdhcyBlc3RpbWF0ZWQgdG8gYmUgbGVzcyB0aGFuIDcgcHBtLAphbmQgYmV0d2VlbiAxLTIwIHBwbSBmb3Igb3RoZXIgVk9D4oCZcyBzdWNoIGFzIGV0aGFub2wsIHRvbHVlbmUsIGFuZCBhY2V0aWMgYWNpZC4gSG8gZXQKYWwuIGRldmVsb3BlZCBtaWNyb2NoZW1pY2FsIHNlbnNvcnMgYW5kIHN5c3RlbXMgZm9yIHVuYXR0ZW5kZWQgcmVhbC10aW1lIG1vbml0b3Jpbmcgb2YKVk9D4oCZcyBpbiBzb2lsIGFuZCBncm91bmR3YXRlciBbODRdLiBUaGUgdGhlb3JldGljYWwgbGltaXRzIG9mIGRldGVjdGlvbiBmb3IgUEVDSCwKUE5WUCwgUElCLCBhbmQgUEVWQSBiYXNlZCBwb2x5bWVyIGNoZW1pcmVzaXN0b3JzIHRvIFRDRSBpcyA2My44IHBwbSwgMzg2LjAgcHBtLAoyMi4zIHBwbSwgYW5kIDY3LjAgcHBtLiBDaGVtaXJlc2lzdG9yIHNlbnNvcnMgcmVzcG9uZCBmYWlybHkgcXVpY2tseSB0byBhbmFseXRlcywgdGhlCnNlbnNvcnMgZmFicmljYXRlZCBieSBNYW4gZXQgYWwuIGhhZCBhIHJlc3BvbnNlIHRpbWUgb2YgMi0zIHNlYyBbODVdLgpDaGVtaWNhcGFjaXRvcnMKTWxzbmEgZXQgYWwuIG9mIFNlYWNvYXN0IFNjaWVuY2UgSW5jLiB1c2VkIG1pY3JvZmFicmljYXRpb24gdGVjaG5pcXVlcyB0byBwcm9kdWNlCmNoZW1pY2FwYWNpdGl2ZSBzZW5zb3JzLCB3aXRoIDEwIGludGVyZGlnaXRhdGVkIGNhcGFjaXRvcnMgb24gYSBzaW5nbGUgY2hpcCBbNzldLiBUaGUKZGV0ZWN0aW9uIGxpbWl0IGZvciB2YXJpb3VzIGNoZW1pY2FsIHdhcmZhcmUgYWdlbnRzIChDV0HigJlzKSBhbmQgdG94aWMgaW5kdXN0cmlhbApjb21wb3VuZHMgKFRJQ+KAmXMpIHdlcmUgaW52ZXN0aWdhdGVkOyB0aGUgb25seSBhbmFseXRlIHJlbGV2YW50IHRvIHRoaXMgc3VydmV5IGlzCmFtbW9uaWEsIHdpdGggYSBkZXRlY3Rpb24gbGltaXQgb2YgMTEwIHBwbS4gUGF0ZWwgZXQgYWwuIGRldmVsb3BlZCBhIG1pY3JvbWFjaGluZWQKcGFyYWxsZWwtcGxhdGUgY2hlbWljYXBhY2l0b3IsIHdoaWNoIGNvbnNpc3RzIG9mIGEgYm90dG9tIGxheWVyIG9mIG1ldGFsLCBhIGxheWVyIG9mCnBvbHltZXIgaW4gdGhlIG1pZGRsZSwgYW5kIGEgcG9yb3VzIGxheWVyIG9mIG1ldGFsIG9uIHRvcCBvZiB0aGUgcG9seW1lciBbODZdLiBUaGUKcmVzZWFyY2hlcnMgZXN0aW1hdGUgdGhlIGxpbWl0IG9mIGRldGVjdGlvbiBmb3IgYWNldG9uZSwgYmVuemVuZSwgZXRoYW5vbCwgbWV0aGFub2wsIG9jdGFuZSwKYW5kIHRvbHVlbmUgdG8gYmUgMiBwcG0sIDg1IHBwbSwgMTYgcHBtLCA3IHBwbSwgMjkgcHBtLCBhbmQgNTUgcHBtIHJlc3BlY3RpdmVseS4KQ2hlbUZFVOKAmXMKRG9tYW5za3kgZXQgYWwuIGRldmVsb3BlZCBhbmQgdGVzdGVkIGEgc2Vuc29yIGFycmF5IGNvbnNpc3Rpbmcgb2YgZm91ciBjaGVtRkVU4oCZcyBbODddLgpBIGNvbWJpbmF0aW9uIG9mIGNhdGFseXRpYyAocGFsbGFkaXVtKSBhbmQgbm9uLWNhdGFseXRpYyAocG9seWFuaWxpbmUpIHRoaW4gbGF5ZXJzIHdlcmUKdXNlZCBvbiB0aGUgY2hlbUZFVOKAmXMgdG8gZGV0ZWN0IGh5ZHJvZ2VuIGFuZCBhbW1vbmlhIGdhcy4gV2l0aCBhIHNpZ25hbC10by1ub2lzZQpyYXRpbyBvZiAxMCwgdGhlIHJlc2VhcmNoZXJzIGVzdGltYXRlZCB0aGUgYmVzdCBpbmRpdmlkdWFsIHNlbnNvcnMgaW4gdGhlIGFycmF5IHRvIGhhdmUKZGV0ZWN0aW9uIGxpbWl0cyBvZiA1IHBwbSBmb3IgaHlkcm9nZW4gYW5kIDMgcHBtIGZvciBhbW1vbmlhLCB3aXRoIHJlbGF0aXZlIGh1bWlkaXR5CnJhbmdpbmcgZnJvbSAwIHRvIDcwJS4gQ292aW5ndG9uIGV0IGFsLiBjaGFyYWN0ZXJpemVkIHRoZSByZXNwb25zZSBvZiBjb25kdWN0aW5nCnBvbHltZXIgZ2F0ZSBjaGVtRkVU4oCZcyB0byBldGhhbm9sIGFuZCB0b2x1ZW5lIHZhcG91ciwgYW5kIGRldGVybWluZWQgdGhlIGRldGVjdGlvbgpsaW1pdCBmb3IgdG9sdWVuZSBhbmQgZXRoYW5vbCB0byBiZSBiZWxvdyAxIHBwbSBbODBdLgoKNTYKCgwxMC40IFByb3BlcnRpZXMgb2YgUG9seW1lci1iYXNlZCBDaGVtaWNhbCBTZW5zb3JzClBvbHltZXJzIGFyZSBhdHRyYWN0aXZlIGZvciB1c2UgYXMgdGhlIHNlbnNpbmcgbGF5ZXIgaW4gY2hlbWljYWwgc2Vuc29ycyBkdWUgdG8gdGhlaXIgZWFzZQpvZiBwcm9jZXNzaW5nIGFuZCBmYWJyaWNhdGlvbiAod2hpY2ggbGVhZHMgdG8gbG93IGNvc3QpLCB0dW5lYWJsZSBzdHJ1Y3R1cmUgZm9yIGFuYWx5dGUKc3BlY2lmaWNpdHksIGFuZCByZXNpbGllbmNlIHRvIHBvaXNvbmluZyBieSBjb21wb3VuZHMgdGhhdCBub3JtYWxseSBpbmFjdGl2YXRlIHNvbWUKaW5vcmdhbmljIHNlbWljb25kdWN0b3ItdHlwZSBzZW5zb3JzLiBJbiBhZGRpdGlvbiwgcG9seW1lciBzY2llbmNlIGlzIHZlcnkgYWR2YW5jZWQgYW5kCnRoZSBhYmlsaXR5IG9mIGNoZW1pc3RzIHRvIGRlc2lnbiB2ZXJ5IHNwZWNpZmljIHBvbHltZXJzLCB3aGljaCB0YXJnZXQgcGFydGljdWxhciBnYXNlcywgaXMgYQpzaWduaWZpY2FudCBhZHZhbnRhZ2UgdG8gbWFraW5nIHNlbnNvcnMgYmFzZWQgb24gdGhlc2UgbWF0ZXJpYWxzLiBIb3dldmVyLCBwb2x5bWVycwpkZWdyYWRlIG92ZXIgdGltZSB1bmRlciB0aGUgaW5mbHVlbmNlIG9mIGVudmlyb25tZW50YWwgZmFjdG9ycyBzdWNoIGFzIGhlYXQsIGxpZ2h0LCBvcgpjaGVtaWNhbHMsIGFuZCB0aGVpciBwcm9wZXJ0aWVzICh0ZW5zaWxlIHN0cmVuZ3RoLCBzaGFwZSwgZXRjLikgY2FuIGNoYW5nZS4gVGhpcyBtZWFucyB0aGUKcG9seW1lci1iYXNlZCBzZW5zaW5nIGxheWVyIGhhcyBhIGZpbml0ZSBsaWZldGltZSwgYW5kIHRoZSBzZW5zb3IgbWF5IGV4cGVyaWVuY2UgZHJpZnQKb3ZlciB0aW1lLiBUaGUgcG9seW1lciBkcmlmdCBjYW4gYmUgaGFuZGxlZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlbGVjdHJvbmljcyBvcgpjb21wZW5zYXRpb24uCgoxMS4gVGhlcm1hbCBDaGVtaWNhbCBTZW5zb3JzCjExLjEgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24gb2YgVGhlcm1hbCBHYXMgU2Vuc29ycwpNYW55IG9mIHRoZSB0YXJnZXQgY2hlbWljYWxzIGFyZSB2b2xhdGlsZSwgb3JnYW5pYywgYW5kIGNvbWJ1c3RpYmxlLiBUaGVybWFsIGdhcyBzZW5zb3JzCnN1Y2ggYXMgdGhlIGNhdGFseXRpYyBiZWFkIHNlbnNvciBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIGNvbWJ1c3RpYmxlIHZvbGF0aWxlIG9yZ2FuaWMKY29tcG91bmRzIGJ5IGNvbWJ1c3RpbmcgdGhlIGdhcyBpbiBhIHJlYWN0aW9uIGNoYW1iZXIuIENhdGFseXN0cyByZWR1Y2UgdGhlIHJlcXVpcmVkCmNvbWJ1c3Rpb24gdGVtcGVyYXR1cmUgb2YgdGhlIGFuYWx5dGUgYnkgbG93ZXJpbmcgdGhlIGFjdGl2YXRpb24gcG90ZW50aWFsLiBXaGVuIHRoZQphbmFseXRlIG94aWRpemVzIG9uIHRoZSBzdXJmYWNlIG9mIHRoZSBzZW5zb3IsIHRoZSBoZWF0IG9mIGNvbWJ1c3Rpb24gd2lsbCBjYXVzZSB0aGUKdGVtcGVyYXR1cmUgb2YgdGhlIHNlbnNvciB0byByaXNlLCB0aGVyZWZvcmUgY2hhbmdpbmcgdGhlIGVsZWN0cmljYWwgcmVzaXN0YW5jZSBvZiBhIHNlbnNpbmcKd2lyZS4gRWFjaCBnYXMgaGFzIGEgdW5pcXVlIGhlYXQgb2YgY29tYnVzdGlvbiBhbmQgY29ycmVzcG9uZGluZyBjaGFuZ2UgaW4gZWxlY3RyaWNhbApyZXNpc3RhbmNlLCB3aGljaCBjYW4gYmUgZGV0ZWN0ZWQgdXNpbmcgYW4gZWxlY3RyaWNhbCBjaXJjdWl0IGNvbnNpc3Rpbmcgb2YgdGhlIHNlbnNvciBhbmQgYQpyZWZlcmVuY2UgZGV2aWNlIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgc2Vuc29yIGJ1dCBpcyBub24tcmVhY3RpdmUuIEhvd2V2ZXIsIGEgZGlzdGluY3Rpb24KYmV0d2VlbiB0eXBlIG9mIGdhcyBhbmQgY29uY2VudHJhdGlvbiBmcm9tIHRoZSBzZW5zb3Igc2lnbmFsIGlzIG5vdCBwb3NzaWJsZS4KCkZpZ3VyZSAxOCAtIENvbW1lcmNpYWwgY2F0YWx5dGljIGdhcyBzZW5zb3IsIHdpdGggc2Vuc2luZyBiZWFkIGFuZCByZWZlcmVuY2UgYmVhZCBbODhdCgpDYXRhbHl0aWMgY29tYnVzdGlibGUgZ2FzIHNlbnNvcnMgaGF2ZSBiZWVuIGluIHVzZSBmb3IgbW9yZSB0aGFuIDUwIHllYXJzLCBhbmQgaW4gaXRzCnNpbXBsZXN0IGZvcm0sIHRoZSBzZW5zb3IgaXMgYSBzaW5nbGUgcGxhdGludW0gd2lyZSBbODhdLiBBIG1vZGVybiwgY29tbWVyY2lhbCBzZW5zb3IgaXMKCjU3CgoMc2hvd24gaW4gRmlndXJlIDE4LiBQbGF0aW51bSwgcGFsbGFkaXVtLCBhbmQgdGhvcmlhIGNvbXBvdW5kcyBhcmUgYWxsIGdvb2QgY2F0YWx5c3RzCmZvciBjb21idXN0aW9uLiBQbGF0aW51bSBpcyBwcmVmZXJyZWQgZHVlIHRvIGl0cyBzZW5zaXRpdml0eSB0byB0ZW1wZXJhdHVyZSwgaGlnaCBwaHlzaWNhbApzdHJlbmd0aCwgcmVzaXN0YW5jZSB0byBjb3Jyb3Npb24sIGFuZCBhYmlsaXR5IHRvIHdpdGhzdGFuZCBlbGV2YXRlZCB0ZW1wZXJhdHVyZXMgZm9yIGEgbG9uZwpwZXJpb2Qgb2YgdGltZS4gSG93ZXZlciwgdGhlIGJhcmUgcGxhdGludW0gd2lyZSBuZWVkcyB0byBiZSBoZWF0ZWQgdG8gYmV0d2VlbiA5MDAgwrpDCmFuZCAxMDAwIMK6QyBpbiBvcmRlciB0byBjYXRhbHl6ZSB0aGUgY29tYnVzdGlvbiBvZiBoeWRyb2NhcmJvbiBnYXNlcy4gQXQgc3VjaAp0ZW1wZXJhdHVyZXMsIHRoZSBwbGF0aW51bSB3aXJlIGRlZ3JhZGVzIHF1aWNrbHkuIFRoZSBzdGFiaWxpdHkgYW5kIHVzYWJpbGl0eSBvZiB0aGUKc2Vuc29yIGlzIGVuaGFuY2VkIGJ5IGNvYXRpbmcgdGhlIHdpcmUgd2l0aCBjYXRhbHl0aWNhbGx5LXRyZWF0ZWQgbWV0YWwgb3hpZGUsIGZvcm1pbmcgYQpjYXRhbHl0aWMgYmVhZCBzZW5zb3IgWzg4XS4gSW4gYWRkaXRpb24gdG8gdGhlIGluY3JlYXNlZCByb2J1c3RuZXNzLCB0aGUgY2F0YWx5dGljIGNvYXRpbmcKcmVkdWNlcyB0aGUgdGVtcGVyYXR1cmUgb2Ygb3BlcmF0aW9uIHRvIGJldHdlZW4gNDAwIMK6QyB0byA2MDAgwrpDLgoKMTEuMiBDb21tZXJjaWFsIFRoZXJtYWwgR2FzIFNlbnNvcnMKQ29tbWVyY2lhbCBjb21wYW5pZXMgdGhhdCBvZmZlciB0aGVybWFsIHNlbnNpbmcgdW5pdHMgYXJlIHNob3duIGluIFRhYmxlIDIwLgpUYWJsZSAyMCAtIENvbXBhbmllcyBvZmZlcmluZyB0aGVybWFsIGdhcyBzZW5zb3JzCkNvbXBhbnkKClByb2R1Y3QocykKCngKCngKCkdhc0FsZXJ0IE1pY3JvY2xpcAoKeAoKR2FzQWxlcnQgTWljcm8KCngKCkdhc0FsZXJ0IE1pY3JvIDUKCngKCkRldGVjdGl2ZSsKCngKClhnYXJkCgp4CgpFWC01MTAwCgp4CgpPTU5JLTQwMDAKCngKClZRNDFUU0IKCngKClZRNTQ3VFMKCngKClRpdGFuCgp4CgpVbHRpbWEgWCBTZXJpZXMKCngKClRveGdhcmQKCngKeAp4CngKCkJXIFRlY2hub2xvZ2llcyAoSG9uZXl3ZWxsIEludGVybmF0aW9uYWwpCgpDcm93Y29uIChIYWxtYSBwbGMpCgpFTk1FVAoKZTJWIHRlY2hub2xvZ2llcyBMdGQuCgpNaW5lIFNhZmV0eSBBcHBsaWFuY2VzCgp4CgpOZW1vdG8gJiBDb21wYW55Cgp4CgpOQVAtMTAwIHNlcmllcwoKeAoKVHljbyBTY290dCBJbnN0cnVtZW50cwoKeAoKNDg4OEEtTklDIElJIExFTAoKMTEuMyBSZWNlbnQgUmVzZWFyY2ggb24gVGhlcm1hbCBHYXMgU2Vuc29ycwpDYXRhbHl0aWMgZ2FzIHNlbnNvcnMgYXJlIGEgbWF0dXJlIHRlY2hub2xvZ3ksIGJ1dCBzb21lIHJlc2VhcmNoIGlzIHN0aWxsIGJlaW5nIGNvbmR1Y3RlZAppbiB0aGlzIGFyZWEgd2l0aCBkZXZpY2UgbWluaWF0dXJpemF0aW9uIGJlaW5nIGEga2V5IHRyZW5kLiBSZWNlbnRseSwgU2FzYWhhcmEgZXQgYWwuCmZhYnJpY2F0ZWQgYSBtaWNyb3NjYWxlIGNvbWJ1c3Rpb24tdHlwZSBzZW5zb3IgdXNpbmcgYSBtaXh0dXJlIG9mIHBhbGxhZGl1bSBhbmQgQWwyTzMKYXMgdGhlIHNlbnNpbmcgbWF0ZXJpYWwgWzg5XS4gVGhlIHNlbnNvciBkZXRlY3RlZCB0b2x1ZW5lIGF0IGEgY29uY2VudHJhdGlvbiBhcyBsb3cgYXMKMTAgcHBiLCBhbmQgdGhlIHJlc3BvbnNlIHdhcyBtb3N0bHkgaW5kZXBlbmRlbnQgb2YgYW1iaWVudCB0ZW1wZXJhdHVyZSBhbmQgaHVtaWRpdHkuClNjaHJlaXRlciBldCBhbC4gZmFicmljYXRlZCBhbmQgdGVzdGVkIGEgY2Fsb3JpbWV0cmljIGdhcyBzZW5zb3IgYmFzZWQgb24gaW50ZWdyYXRlZApweXJvZWxlY3RyaWMgZGV0ZWN0b3IgYXJyYXlzLiBBIHBvbHlkaW1ldGh5bHNpbG94YW5lIChQRE1TKSBwb2x5bWVyIGNvYXRpbmcgZW5hYmxlZAp0aGUgZGV0ZWN0aW9uIG9mIGhlcHRhbmUgZG93biB0byAxMCBwcG0uCgo1OAoKDDExLjQgUHJvcGVydGllcyBvZiBUaGVybWFsIEdhcyBTZW5zb3JzClRoZXJtYWwgZ2FzIHNlbnNvcnMgaGF2ZSBiZWVuIGluIHVzZSBmb3IgbW9yZSB0aGFuIDUwIHllYXJzLCBtYWlubHkgdG8gZGV0ZWN0CmNvbWJ1c3RpYmxlIGdhc2VzIHN1Y2ggYXMgaGV4YW5lIGFuZCB0b2x1ZW5lIFs4OF0uIEEgbWFqb3IgYWR2YW50YWdlIG9mIHRoZXJtYWwgZ2FzCnNlbnNvcnMgbGllcyBpbiB0aGVpciBzaW1wbGUgZmFicmljYXRpb24uIERpc2FkdmFudGFnZXMgaW5jbHVkZSBzdXNjZXB0aWJpbGl0eSB0byBjYXRhbHlzdApwb2lzb25pbmcgKGkuZS4gc2lsaWNvbiBjb21wb3VuZHMsIHN1bHBodXIgY29tcG91bmRzLCBldGMuKSwgc3VzY2VwdGliaWxpdHkgdG8gc2Vuc29yCmluaGliaXRvcnMgKGkuZS4gaGFsb2dlbiBjb21wb3VuZHMpLCBhbmQgc2Vuc29yIGNyYWNraW5nIHVuZGVyIGhpZ2ggaGVhdCBhbmQvb3IgZ2FzCmNvbmNlbnRyYXRpb25zLiBJbiBhZGRpdGlvbiwgdGhlcm1hbCBnYXMgc2Vuc29ycyBhcmUgbm9uLXNlbGVjdGl2ZSBhbmQgY2Fubm90IGJlIHVzZWQgdG8KZGV0ZWN0IGEgbWl4dHVyZSBvZiBnYXNlczsgYSBzZW5zb3IgaXMgY2FsaWJyYXRlZCBmb3Igc3BlY2lmaWMgaW5kaXZpZHVhbCBjb21idXN0aWJsZSBnYXNlcwpieSBhcHBseWluZyBhIGNvcnJlY3Rpb24gZmFjdG9yIHRvIHRoZSByZWFkaW5nLgoKMTIuIFN1bW1hcnkgb2YgU2Vuc29yIFNwZWNpZmljYXRpb25zClRoZSBzcGVjaWZpY2F0aW9ucyBvZiB0aGUgcmVzZWFyY2gtc3RhZ2UgYW5kIGNvbW1lcmNpYWwgZGV2aWNlcyBkaXNjdXNzZWQgaW4gdGhlIHNlY3Rpb25zCmFib3ZlIGhhdmUgYmVlbiBzdW1tYXJpemVkIGludG8gdHdvIHRhYmxlcywgb25lIGxpc3RpbmcgdGhlIGRldGVjdGlvbiBsaW1pdHMgKFRhYmxlIDIyCmFuZCBUYWJsZSAyMykgYW5kIHRoZSBvdGhlciBkZXNjcmliaW5nIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgc2Vuc2l0aXZpdHksIHJlc3BvbnNlIHRpbWUsCnBvd2VyIGNvbnN1bXB0aW9uLCBjb3N0LCBhbmQgc2l6ZSAoVGFibGUgMjEpLiBUaGUgc3BlY2lmaWNhdGlvbnMgd2VyZSBhY3F1aXJlZCB0aHJvdWdoCmxpdGVyYXR1cmUgc2VhcmNoZXMsIGdlbmVyYWwgSW50ZXJuZXQgc2VhcmNoZXMsIGFuZCBtYW51ZmFjdHVyZXJz4oCZIGRhdGEgc2hlZXRzLgpUYWJsZSAyMSAtIFNlbnNvciBwZXJmb3JtYW5jZSBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHNlbnNpbmcgdGVjaG5vbG9naWVzIHJldmlld2VkClNlbnNpbmcgVGVjaC4KRWxlY3Ryb2NoZW1pY2FsCkdyYXZpbWV0cmljCklNUwpNT1MKTWljcm9jYW50aWxldmVycwpOYW5vbWF0ZXJpYWxzCk9wdGljYWwKUElEClBvbHltZXItYmFzZWQKVGhlcm1hbAoKUmVzZWFyY2gKQ29tbWVyY2lhbApSZXNlYXJjaApDb21tZXJjaWFsClJlc2VhcmNoCkNvbW1lcmNpYWwKUmVzZWFyY2gKQ29tbWVyY2lhbApSZXNlYXJjaApDb21tZXJjaWFsClJlc2VhcmNoCkNvbW1lcmNpYWwKUmVzZWFyY2gKQ29tbWVyY2lhbApSZXNlYXJjaApDb21tZXJjaWFsClJlc2VhcmNoCkNvbW1lcmNpYWwKUmVzZWFyY2gKQ29tbWVyY2lhbAoKU2Vuc2l0aXZpdHkKClJlc3BvbnNlClRpbWUKClBvd2VyCkNvbnN1bXB0aW9uCgo5MCBuQS9wcG0gwrEgNDAgbkEvcHBtCjE1Ljg4IHBwbS9wcG0KCjEwIHNlYwoyMCBzZWMKMTAgc2VjCgowLjggVyAoZW50aXJlIHVuaXQpCgpDb3N0CgokNDAwCgo1MCBXIChlbnRpcmUgdW5pdCkKCjwgMjAgc2VjCgpTaXplCgo4MiBnIChlbnRpcmUgdW5pdCBpbmNsLiBzZW5zb3IpCjIuNiBrZyAoZW50aXJlIHVuaXQpCgokMTAtMTJLIChlbnRpcmUgdW5pdCkKCjwgMSBtaW4KCjIzMCBtVyAoc2Vuc29yIG9ubHkpCgozIHNlYwoKNjQgbVcKCjMwIHBwbSBwZXIgbWljcm9uIGRlZmxlY3QKCjIwIHNlYwoyMCBtVi8gJSB2b2wgZ2FzCgoxMCBzZWMKCjggZyAoc2Vuc29yIG9ubHkpCjMyIG96LiAoZW50aXJlIHVuaXQpCgoyNTAgbVcKCjI1MCBnIChlbnRpcmUgdW5pdCkKCjU5CgoMVGFibGUgMjIgLSBTZW5zb3IgZGV0ZWN0aW9uIGxpbWl0cyBmb3IgYWxsIHNlbnNpbmcgdGVjaG5vbG9naWVzIHJldmlld2VkLCBpbm9yZ2FuaWMgYW5hbHl0ZXMKClNlbnNpbmcgVGVjaG5vbG9neQoKSW5vcmdhbmljCgpFbGVjdHJvY2hlbWljYWwgUmVzZWFyY2gKCk5IMwoxMCBwcG0KCkhDbAoxIHZwbQoKSEkKUEgzCjMuNWUtNiBNIDAuMDEgcHBtCgoxIHBwbQowLjU2IHBwbQowLjUgcHBtCjI1IHBwYgowLjEgcHBiCjEgcHBtCjEgcHBtCjAuMSBwcG0KMTAgcHBtCjEgcHBiCjAuOCBwcGIKCjAuMyBwcG0KMC41IHBwbQoKMC4xIHBwbQoKQ29tbWVyY2lhbApSZXNlYXJjaApDb21tZXJjaWFsClJlc2VhcmNoCkNvbW1lcmNpYWwKTU9TClJlc2VhcmNoCkNvbW1lcmNpYWwKTWljcm9jYW50aWxldmVycyBSZXNlYXJjaApOYW5vbWF0ZXJpYWxzIFJlc2VhcmNoCk9wdGljYWwKUmVzZWFyY2gKQ29tbWVyY2lhbApQSUQKUmVzZWFyY2gKQ29tbWVyY2lhbApQb2x5bWVyLWJhc2VkIFJlc2VhcmNoCkNvbW1lcmNpYWwKVGhlcm1hbApSZXNlYXJjaApDb21tZXJjaWFsCkdyYXZpbWV0cmljCihTQVcpCklNUwoKSW9kaW5lCjAuMSBwcGIKCjAuMDIgcHBtCjAuNSBwcG0KCjAuNSBwcGIKNSBwcG0KCjEwMCBwcGIKPCAxIHBwbQoKNSBwcG0KPCAxIHBwbQowLjgzIHBwYiAwLjEgcHBtCgoxIHBwbQoxIHBwbQoyMCBwcG0KcHBtLXBwYidzCgo1IHBwYgo8IDAuNSBwcG0gbG93IHBwYidzCjwgMC4yIHBwbQoKNi4yIHBwYgoKPCAxMCBwcGIgPCAxMCBwcGIKCjYwMCBwcG0KCjAuMSBwcG0KMyBwcG0KNSBwcGIKCjI2JSBvZiBDSDQgTEVMCgpUYWJsZSAyMyAtIFNlbnNvciBkZXRlY3Rpb24gbGltaXRzIGZvciBhbGwgc2Vuc2luZyB0ZWNobm9sb2dpZXMgcmV2aWV3ZWQsIG9yZ2FuaWMgYW5hbHl0ZXMKU2Vuc2luZyBUZWNobm9sb2d5CgpPcmdhbmljCgpFbGVjdHJvY2hlbWljYWwgUmVzZWFyY2gKCmFjZXRpYyBhbmguIGZvcm1pYwpoZXhhbmUKMTAgcHBiCjwgMSBtZy9tXjMKCkNvbW1lcmNpYWwKUmVzZWFyY2gKQ29tbWVyY2lhbApSZXNlYXJjaApDb21tZXJjaWFsCk1PUwpSZXNlYXJjaApDb21tZXJjaWFsCk1pY3JvY2FudGlsZXZlcnMgUmVzZWFyY2gKTmFub21hdGVyaWFscwpSZXNlYXJjaApPcHRpY2FsClJlc2VhcmNoCkNvbW1lcmNpYWwKUElEClJlc2VhcmNoCkNvbW1lcmNpYWwKUG9seW1lci1iYXNlZCBSZXNlYXJjaApDb21tZXJjaWFsClRoZXJtYWwKUmVzZWFyY2gKQ29tbWVyY2lhbApHcmF2aW1ldHJpYwooU0FXKQpJTVMKCjwgNSBwcG0KNy4yIG1nL21eMyAwLjcgcHBtCjUwIHBwYgoxNzAgcHBtCjwgMTAwIHBwYiA8IGxvdyBwcG0ncyBwcGIncwo8IDMzMCBwcG0KMjAgcHBtCjIuMSUgYWNldGljCjEgcHBtCjMuNiBwcG0gPCAzMCBwcG0KNCBtbW9sL2wKNSUKCmhlcHRhbmUKCmN5Y2xvaGV4YW5lbWV0aHlsYW1pbmUgTi1tZXRoeWxmb3IgUDJQCgo8IDIxIHBwbQoKMC4xIG1nL21sCgo1ZS03IG1vbC9sCgpwcGIncwpwcGIncwo8IDIwMCBwcG0gPCAxIHBwbQpwcG0tcHBiJ3MgcHBtLXBwYidzCjElIExFTAoKMyUgcmFuZ2UKCnRvbHVlbmUKCjwgNiBwcHQgKHRob3UxIHBwbQoKbG93IHBwbSdzCjUgcHBiCjwgbG93IHBwbSdzCjwgMC4xIHBwYgo8IDUgcHBtCjIwIHBwbQoyMCBwcG0KMSBwcG0KPCAyMDAgcHBtCjAuMDIlCjwgMTAgcHBtCgpwcGIncwpwcGIncwpwcGIncwpwcGIncwo1MCBwcG0KPCA1MCBwcG0KcHBtLXBwYidzIHBwbS1wcGIncyBwcG0tcHBiJ3MgcHBtLXBwYidzCjEwIHBwbQoxJSBMRUwKMTEwIHBwbQoxMDUgcHBtCgpwaGVueWxhY2V0aWNUSEYKCjEwIHBwYgp+IDEwIHBwYgoKMi0zIHBwYgoKMTAgcHBiCjEwIHBwbQoxMCBwcG0KMTAgcHBtCgo0MCBwcG0KCjI5MCBwcGIKCjgwIHBwYgpwcGIncwpwcGIncwo0MDAgcHBtCjggcHBtCnBwbS1wcGIncyBwcG0tcHBiJ3MgcHBtLXBwYidzIHBwbS1wcGIncyBwcG0tcHBiJ3MKMTAgcHBiCjEyMCBwcG0KcHBiJ3MKCnBwYidzCgpwcGIncwoKNjAKCgwxMy4gVGVjaG5vbG9neSBBc3Nlc3NtZW50ClRoZSByZXN1bHRzIG9mIHRoZSBwZXJmb3JtYW5jZSBhc3Nlc3NtZW50IG9mIGF2YWlsYWJsZSBjb21tZXJjaWFsIGFuZCByZXNlYXJjaCBzZW5zb3IKdW5pdHMvZGV2aWNlcyBhcmUgc3VtbWFyaXplZCBhbmQgcHJlc2VudGVkIGluIFRhYmxlIDIyIGFuZCBUYWJsZSAyMyAoZGV0ZWN0aW9uIGxpbWl0cykKYW5kIGluIFRhYmxlIDIxIChvdGhlciBzcGVjaWZpY2F0aW9ucyBzdWNoIGFzIHNlbnNpdGl2aXR5LCByZXNwb25zZSB0aW1lLCBldGMuKS4gSXQgaXMgY2xlYXIKdGhhdCBub3QgYWxsIHRhcmdldCBjaGVtaWNhbHMgY2FuIGJlIGRldGVjdGVkIGJ5IGFueSBvbmUgb2YgdGhlIHNlbnNpbmcgdGVjaG5vbG9naWVzLAphbHRob3VnaCBtb3N0IGlub3JnYW5pYyBhbmQgb3JnYW5pYyBjb21wb3VuZHMgY2FuIGJlIGRldGVjdGVkIGJ5IG1vcmUgdGhhbiBvbmUKc2Vuc2luZyB0ZWNobm9sb2d5LiBUaGUgaW5mb3JtYXRpb24gcHJlc2VudGVkIGluIHRoZSB0YWJsZXMgd2FzIGFjcXVpcmVkIGZyb20gcmVzZWFyY2gKbGl0ZXJhdHVyZSwgdGhlIEludGVybmV0LCBhbmQgY29tcGFueSBkYXRhIHNoZWV0cy4gSG93ZXZlciwgbm90IGFsbCBjb21wYW5pZXMgYW5kCnJlc2VhcmNoZXJzIGRpc2Nsb3NlIHBlcmZvcm1hbmNlIHNwZWNpZmljYXRpb25zIG9mIHRoZWlyIHNlbnNvciBkZXZpY2VzOyBhcyBhIHJlc3VsdCwKcGVyZm9ybWFuY2Ugc3BlY2lmaWNhdGlvbnMgZm9yIHNvbWUgc2Vuc29ycyBjb3VsZCBub3QgYmUgb2J0YWluZWQuCkluIG5lYXJseSBhbGwgY2FzZXMsIGlvbiBtb2JpbGl0eSBzcGVjdHJvbWV0ZXJzIGFuZCBwaG90b2lvbml6YXRpb24gZGV0ZWN0b3JzIHByb3ZpZGUgdGhlCmJlc3QgZGV0ZWN0aW9uIGxpbWl0cyBmb3IgYm90aCBpbm9yZ2FuaWMgYW5kIG9yZ2FuaWMgdGFyZ2V0IGdhc2VzLiBFbGVjdHJvY2hlbWljYWwgc2Vuc29ycwpjdXJyZW50bHkgZG9taW5hdGUgdGhlIG1hcmtldCBmb3IgdG94aWMgaW5kdXN0cmlhbCBjaGVtaWNhbCBtb25pdG9yaW5nIChtb3N0IG9mIHRoZQppbm9yZ2FuaWMgY29tcG91bmRzIGV4Y2VwdCBmb3IgaW9kaW5lIGFyZSB0b3hpYyBpbm9yZ2FuaWMgY29tcG91bmRzKSwgYnV0IGNhbm5vdCBtYXRjaAp0aGUgbG93IGRldGVjdGlvbiBsaW1pdHMgb2ZmZXJlZCBieSBJTVMgKGxvdyBwcGIpIGFuZCBQSUQgKGxvdyBwcGIpLiBIb3dldmVyLCBJTVMKdW5pdHMgYXJlIGV4dHJlbWVseSBzdXNjZXB0aWJsZSB0byBjb250YW1pbmF0aW9uIGFuZCBodW1pZGl0eSwgYW5kIGNhbiBiZSBjb3N0bHksIGFuZApQSUQgc2Vuc29ycyBzdWZmZXIgZnJvbSBwb29yIHNlbGVjdGl2aXR5IHNpbmNlIHRoZXkgZGV0ZWN0IGFsbCBnYXNlcyB3aXRoIGlvbml6YXRpb24KcG90ZW50aWFscyBiZWxvdyB0aGUgZW5lcmd5IGxldmVsIG9mIHRoZSBleGNpdGF0aW9uIHNvdXJjZS4gSWYgdGhlIGRldGVjdGlvbiBzdHJhdGVneQpyZXF1aXJlcyB0aGF0IHRoZSBkZXRlY3Rpb24gdW5pdHMgYmUgbW91bnRlZCBvbnRvIHBhdHJvbCB2ZWhpY2xlcywgSU1TIHRlY2hub2xvZ3kgbWF5Cm5vdCBiZSBwcmFjdGljYWwgZHVlIHRvIGl0cyBzdXNjZXB0aWJpbGl0eSB0byBjb250YW1pbmF0aW9uIGFuZCBodW1pZGl0eS4gU29tZQpjb250YW1pbmFudHMgbWF5IHRha2UgYW55d2hlcmUgZnJvbSBtaW51dGVzIHRvIGRheXMgdG8gZXhpdCB0aGUgZGV0ZWN0aW9uIGNoYW1iZXIuIEFzCmZvciBodW1pZGl0eSwgSU1TIG9wZXJhdGVzIGJlc3QgaW4gdGhlIGFic2VuY2Ugb2Ygd2F0ZXIgYnV0IGlmIHdhdGVyIHdhcyBwcmVzZW50LCB0aGUKY29uY2VudHJhdGlvbiBzaG91bGQgYmUgYXQgYSBjb25zdGFudCBsZXZlbCBzbyB0aGF0IHJlYWRpbmdzIGFyZSByZXByb2R1Y2libGU7IHRoaXMKY29uZGl0aW9uIGNhbm5vdCBiZSBndWFyYW50ZWVkIGluIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudC4gUElEIHRlY2hub2xvZ3kgbWF5IGFsc28KcHJvdmUgdG8gaGF2ZSBmYXIgdG9vIGxvdyBhIHNlbGVjdGl2aXR5IHRvIHByb3ZpZGUgYSBzdWZmaWNpZW50IGxldmVsIG9mIGNlcnRhaW50eSBhYm91dCB0aGUKY29tcG91bmQgYmVpbmcgZGV0ZWN0ZWQuIEVtZXJnaW5nIHNlbnNpbmcgdGVjaG5vbG9naWVzIHN1Y2ggYXMgbmFub21hdGVyaWFscy1iYXNlZCwKU0FXLCBhbmQgcG9seW1lci1iYXNlZCBzZW5zb3JzIGNhbm5vdCB5ZXQgYWNoaWV2ZSB0aGUgbG93IGRldGVjdGlvbiBsaW1pdHMgb2ZmZXJlZCBieQpJTVMgYW5kIFBJRCwgYWx0aG91Z2ggdGhleSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gYmUgZmFyIG1vcmUgc2VsZWN0aXZlIHRoYW4gUElEIGFuZApsb3dlciBjb3N0IHRoYW4gSU1TIHRlY2hub2xvZ3kuCkl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIG1vc3QgZWZmZWN0aXZlIGFuZCBsb3cgY29zdCBkZXRlY3Rpb24gdW5pdCB3aWxsIHJlcXVpcmUgYSBoeWJyaWQKdGVjaG5vbG9neSBhcHByb2FjaCwgY29uc2lzdGluZyBvZiBib3RoIFBJRCBhbmQgb3RoZXIgbW9yZSBzZWxlY3RpdmUgc2Vuc29ycyBzdWNoIGFzCnRob3NlIGJhc2VkIG9uIG5hbm9zdHJ1Y3R1cmVkIG1hdGVyaWFscy4gSW4gdGhpcyBhcHByb2FjaCwgdGhlIFBJRCBzeXN0ZW0gd291bGQgcHJvdmlkZQp0aGUgZmlyc3QgbGV2ZWwgb2YgZGV0ZWN0aW9uIGF0IGEgaGlnaCBzcGF0aWFsIHJlc29sdXRpb24gYW5kIGxvdyBzcGVjaWZpY2l0eSwgd2hpbGUgYSBzZWNvbmQKbGV2ZWwgb2YgaW5leHBlbnNpdmUgYW5kIGhpZ2hseSBzZWxlY3RpdmUgc2Vuc29ycyB3b3VsZCBwZXJmb3JtIHRoZSBzaWduYXR1cmUKaWRlbnRpZmljYXRpb24uIEluIG9yZGVyIHRvIG92ZXJjb21lIHRoZSBoaWdoIGRldGVjdGlvbiBsaW1pdCBvZiB0aGlzIHNlY29uZCBsYXllciwgYSBwcmVjb25jZW50cmF0b3Igc3RhZ2UgY291bGQgYmUgdXNlZCB0byBpbmNyZWFzZSB0aGUgZWZmZWN0aXZlIGdhcyBjb25jZW50cmF0aW9uLgoKNjEKCgxQYXJ0IEM6IFJlY29tbWVuZGF0aW9ucwpUaGUgaWRlbnRpZmljYXRpb24gb2YgdGFyZ2V0IGdhc2VzIGFuZCBhbiBhc3Nlc3NtZW50IG9mIHNlbnNpbmcgdGVjaG5vbG9neSBoYXZlIGxlZCB0bwppbXBvcnRhbnQgcHJlbGltaW5hcnkgY29uY2x1c2lvbnMgcmVnYXJkaW5nIGEgcG9zc2libGUgdGVjaG5vbG9naWNhbCBhcHByb2FjaCB0bwpkZXRlY3RpbmcgY2xhbmRlc3RpbmUgbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcmllcy4gSG93ZXZlciwgdGhlc2UgaW52ZXN0aWdhdGlvbnMgaGF2ZQphbHNvIGRlbW9uc3RyYXRlZCB0aGF0IHNvbWUgY3JpdGljYWwgaW5mb3JtYXRpb24gaXMgbWlzc2luZyBvciBpbmFjY2Vzc2libGUsIHN1Y2ggYXMKb3V0ZG9vciB0YXJnZXQgZ2FzIGNvbmNlbnRyYXRpb25zLCB3aGljaCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8gY29tcGlsZSBkZXRhaWxlZCBzZW5zb3IKc3BlY2lmaWNhdGlvbnMuCkFzIGEgcmVzdWx0IG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgYXZhaWxhYmxlIGluZm9ybWF0aW9uLApyZWNvbW1lbmRhdGlvbnMgZm9yIGV4cGVyaW1lbnRhbCBpbnZlc3RpZ2F0aW9ucyBhcmUgcHJvcG9zZWQgdG8gYXNzZXNzIHRoZSBmZWFzaWJpbGl0eSBvZgp0aGUgcHJvamVjdC4KCjEuIExpbWl0YXRpb25zIG9mIEF2YWlsYWJsZSBJbmZvcm1hdGlvbgpUaGUgbW9zdCBzaWduaWZpY2FudCBjaGFsbGVuZ2UgZW5jb3VudGVyZWQgd2hpbGUgcHJlcGFyaW5nIHRoaXMgcmVwb3J0IHdhcyBhc3NvY2lhdGVkCndpdGggdGhlIGFjcXVpc2l0aW9uIG9mIGluZm9ybWF0aW9uIG9uIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aGFtcGhldGFtaW5lCm1hbnVmYWN0dXJpbmcgbWV0aG9kcyBhbmQgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgbW9zdCBjb21tb25seSBlbmNvdW50ZXJlZAptZXRoYW1waGV0YW1pbmUgbGFib3JhdG9yaWVzLiBJbmZvcm1hdGlvbiBvbiBtZXRoYW1waGV0YW1pbmUgc3ludGhlc2lzIHByb2Nlc3NlcwpjYW4gYmUgZm91bmQgaW4gc2NpZW50aWZpYyBhbmQgcG9wdWxhciBsaXRlcmF0dXJlLCBhcyB3ZWxsIGFzIHRoZSBJbnRlcm5ldDsgaG93ZXZlciwKaW5mb3JtYXRpb24gb24gdGhlIG1vc3Qgd2lkZWx5IGFwcGxpZWQgbWV0aG9kcyBpbiBCcml0aXNoIENvbHVtYmlhIGlzIG5vdCBwdWJsaWNseQphdmFpbGFibGUuIFRoZSBjb21iaW5hdGlvbiBvZiBtZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMgYW5kIHRoZQpwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgY2xhbmRlc3RpbmUgZHJ1ZyBsYWJvcmF0b3JpZXMgYW5kL29yIGNoZW1pY2FsIHdhc3RlIGR1bXBzCmRldGVybWluZSB0aGUgZXhhY3QgdGFyZ2V0IGNoZW1pY2FscyBhbmQgdGhlaXIgY29uY2VudHJhdGlvbnMuCk9ubHkgbGltaXRlZCBpbmZvcm1hdGlvbiBvbiBhaXJib3JuZSBjaGVtaWNhbCBjb25jZW50cmF0aW9ucyBwcmVzZW50IGR1cmluZwptZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLiBBIHJlc2VhcmNoIGdyb3VwIGF0IHRoZSBOYXRpb25hbApKZXdpc2ggTWVkaWNhbCBDZW50ZXIsIFUuUy5BLiwgbGVhZCBieSBEci4gTWFydHlueSwgaGFzIHB1Ymxpc2hlZCBzdHVkaWVzIG9uIGNoZW1pY2FsCmNvbmNlbnRyYXRpb25zIGluc2lkZSBzdGFnZWQgbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcmllcy4gSG93ZXZlciwgbm8gc2ltdWxhdGVkCm1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIGZvciBzdHVkeWluZyBvdXRkb29yIGdhcyBjb25jZW50cmF0aW9ucyBoYXMgYmVlbgpjb25kdWN0ZWQgYnkgdGhpcyBncm91cC4gSW4gcmVjZW50IGNvcnJlc3BvbmRlbmNlIHdpdGggRHIuIE1hcnR5bnksIGl0IHdhcyBkZXRlcm1pbmVkCnRoYXQgaGlzIGdyb3VwIGhhcyBubyBpbnRlbnRpb24gb2YgY29uZHVjdGluZyBhbiBvdXRkb29yIHN0dWR5IG5vciBkb2VzIGhlIGtub3cgb2YKYW55Ym9keSB3aG8gaXMgY29uZHVjdGluZyBzdWNoIGEgc3R1ZHkuIEFzIGEgcmVzdWx0LCB0aGUgcHJlc2VudCBzdHVkeSBjb3VsZCBub3QgaWRlbnRpZnkKYSBkZWZpbml0ZSBzZXQgb2YgcmVxdWlyZWQgc2Vuc29yIHNwZWNpZmljYXRpb25zIHN1Y2ggYXMgZGV0ZWN0aW9uIGxpbWl0cyBmb3IgdGhlIHRhcmdldCBnYXNlcy4KQWRkaXRpb25hbGx5LCBtYW55IG9mIHRoZSBzZW5zb3JzIGF2YWlsYWJsZSBjb21tZXJjaWFsbHkgYXJlIGFscmVhZHkgaW50ZWdyYXRlZCBhbmQKc2Vuc29yIHNwZWNpZmljYXRpb25zIGFyZSBwcm92aWRlZCBmb3IgdGhlIGVudGlyZSB1bml0IGFuZCBub3QgdGhlIHNlbnNvciBpdHNlbGYsIHNvIHRoYXQgY29zdAphbmQgcG93ZXIgY29uc3VtcHRpb24gZm9yIHRoZSBzZW5zb3IgY2FuIG9ubHkgYmUgZXN0aW1hdGVkLiBBbHNvLCB0aGUgdHlwZXMgb2YKc3BlY2lmaWNhdGlvbnMgcHJvdmlkZWQgYnkgdGhlIG1hbnVmYWN0dXJlcnMgZm9yIHRoZSBzZW5zb3JzIGFzc2Vzc2VkIGluIHRoaXMgc3R1ZHkgYXJlIG5vdAp1bmlmb3JtLCB3aGljaCBtYWtlcyBhIGZhaXIgY29tcGFyaXNvbiBiZXR3ZWVuIHRlY2hub2xvZ2llcyBjaGFsbGVuZ2luZy4gRm9yIGV4YW1wbGUsCnNvbWUgY29tcGFuaWVzIGxpc3RlZCB0aGUgZGV0ZWN0aW9uIGxpbWl0IG9mIHRoZWlyIHNlbnNvcnMsIHdoaWxlIG90aGVycyBsaXN0ZWQgb25seSB0aGUKYWxhcm0gbGV2ZWxzIG9mIHRoZSB1bml0LiBGdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHNlbnNvcnMgdXNlZCBpbiBjb21tZXJjaWFsbHkgYXZhaWxhYmxlCnVuaXRzIGNvdWxkIG5vdCBiZSBvYnRhaW5lZCBiZWNhdXNlIG1hbnkgbWFudWZhY3R1cmVycyB3ZXJlIHJlbHVjdGFudCB0byBkaXNjbG9zZSB0aGUKZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgb2YgdGhlaXIgcHJvZHVjdHMuCgoyLiBPdXRzdGFuZGluZyBRdWVzdGlvbnMKVGhlIGZvbGxvd2luZyBsaXN0IG9mIG91dHN0YW5kaW5nIHF1ZXN0aW9ucyByZXF1aXJlcyBhY2Nlc3MgdG8gc2Vuc2l0aXZlIGluZm9ybWF0aW9uIG9uCmRpc2NvdmVyZWQgbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcmllcyB0aGF0IGNvdWxkIG5vdCBiZSBhY3F1aXJlZCB3aGlsZSBwcmVwYXJpbmcgdGhpcwpyZXBvcnQuIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24gaXMgbmVjZXNzYXJ5IHRvIGZvcm11bGF0ZSBhIG1vcmUgc3BlY2lmaWMgdGVjaG5vbG9neQoKNjIKCgxhc3Nlc3NtZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBzdWl0YWJsZSBmb3IgZGV0ZWN0aW5nIG1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nCmluIEJyaXRpc2ggQ29sdW1iaWEuClF1ZXN0aW9uIDE6IFdoYXQgYXJlIHRoZSBtb3N0IGNvbW1vbiBtZXRoYW1waGV0YW1pbmUgc3ludGhlc2lzIG1ldGhvZHMgdXNlZAppbiBjbGFuZGVzdGluZSBsYWJvcmF0b3JpZXMgaW4gQnJpdGlzaCBDb2x1bWJpYT8KRGlmZmVyZW50IG1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIHByb2Nlc3NlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgdW5pcXVlCnNpZ25hdHVyZSBvZiByZWxlYXNlZCBhaXJib3JuZSBjaGVtaWNhbHMuIFRoZXJlZm9yZSwgdGhlIG1hbnVmYWN0dXJpbmcgbWV0aG9kIHVzZWQgaGFzCmEgc2lnbmlmaWNhbnQgaW1wYWN0IG9uIHRoZSB0eXBlIGFuZCBzcGVjaWZpY2F0aW9ucyBvZiBzZW5zaW5nIHRlY2hub2xvZ3kgcmVxdWlyZWQuIEZvcgpleGFtcGxlLCBwaGVueWxhY2V0b25lLCB3aGljaCBpcyBvbmx5IHVzZWQgaW4gdGhlIFAyUCBwcm9jZXNzIChhbmQgaXRzIGRlcml2YXRpdmVzKSwgaXMKZWFzaWVyIHRvIHNtdWdnbGUgaW50byBDYW5hZGEgKFZhbmNvdXZlciBpbiBwYXJ0aWN1bGFyKSB0aGFuIGludG8gdGhlIFVuaXRlZCBTdGF0ZXMgWzkwXS4KQXMgYSByZXN1bHQsIG1ldGhhbXBoZXRhbWluZSBsYWJvcmF0b3JpZXMgaW4gQnJpdGlzaCBDb2x1bWJpYSBtYXkgdXNlIHBoZW55bGFjZXRvbmViYXNlZCBwcm9jZXNzZXMgbW9yZSBvZnRlbiB3aGVyZWFzIGxhYm9yYXRvcmllcyBpbiBXYXNoaW5ndG9uIFN0YXRlIG1heSB1c2UKcHNldWRvZXBoZWRyaW5lLWJhc2VkIHByb2Nlc3NlcyBtb3JlIG9mdGVuLgpRdWVzdGlvbiAyOiBXaGF0IGlzIHRoZSB0eXBpY2FsIGxheW91dCBhbmQgc29waGlzdGljYXRpb24gb2YgYSBzbWFsbC9tZWRpdW0vbGFyZ2VzY2FsZSBjbGFuZGVzdGluZSBsYWI/IElzIGFueSBzcGVjaWFsIGVxdWlwbWVudCBpbnN0YWxsZWQsIHN1Y2ggYXMgdmVudGlsYXRpb24KZXF1aXBtZW50PwpUaGUgdHlwaWNhbCBsYXlvdXQgYW5kIGluc3RhbGxlZCBlcXVpcG1lbnQgaW4gYSBjbGFuZGVzdGluZSBtZXRoYW1waGV0YW1pbmUgbGFib3JhdG9yeQp3aWxsIGRldGVybWluZSB0aGUgY29uY2VudHJhdGlvbnMgb2YgY2hlbWljYWxzIHJlbGVhc2VkIGludG8gdGhlIHN1cnJvdW5kaW5nIGFpciBhbmQgd2lsbApkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYWlyYm9ybmUgZGV0ZWN0aW9uIG9mIGNoZW1pY2FscyBpcyBmZWFzaWJsZS4gSXQgY2FuIGJlIGFzc3VtZWQKdGhhdCBtb3N0IHNtYWxsLXNjYWxlIGxhYm9yYXRvcmllcyBkbyBub3QgdXNlIHNvcGhpc3RpY2F0ZWQgZW52aXJvbm1lbnRhbCBtYW5hZ2VtZW50CmVxdWlwbWVudCBhcyB0aGlzIGNvdWxkIHNlZW0gc3VzcGljaW91cyBkdXJpbmcgaW5zdGFsbGF0aW9uIGFuZCBwdXJjaGFzZS4KUXVlc3Rpb24gMzogV2hhdCBpcyB0aGUgdHlwaWNhbCBleHRlcm5hbCBlbnZpcm9ubWVudCBvZiBhIGNsYW5kZXN0aW5lIGxhYm9yYXRvcnkgaW4KQnJpdGlzaCBDb2x1bWJpYT8KVGhlIGV4dGVybmFsIGVudmlyb25tZW50IG9mIHRoZSBidWlsZGluZyBpbiB3aGljaCBhIGNsYW5kZXN0aW5lIGxhYm9yYXRvcnkgaXMgbG9jYXRlZCB3aWxsCmhhdmUgYW4gaW5mbHVlbmNlIG9uIHRoZSBjb25jZW50cmF0aW9uIG9mIG1hbnVmYWN0dXJpbmctcmVsYXRlZCBnYXNlcyBwcmVzZW50IGluIHRoZQp2aWNpbml0eSBvZiB0aGUgYnVpbGRpbmcuIFRoZSBleHBvc3VyZSBvZiB0aGUgYnVpbGRpbmcgd2lsbCBhZmZlY3QgdGhlIGdhcyBkaXNwZXJzaW9uIGJ5CndpbmQuIFRoZSBkaXN0YW5jZSBvZiB0aGUgbGFib3JhdG9yeSBmcm9tIHB1YmxpYyBzdHJlZXRzIHdpbGwgaGF2ZSBhbiBpbXBhY3Qgb24gdGhlIGdhcwpjb25jZW50cmF0aW9uIGxldmVscyBwcmVzZW50IG9uIHB1YmxpYyBncm91bmRzOyB0aGlzIGltcGFjdCB3aWxsIGJlIHNpZ25pZmljYW50IGZvcgpsYWJvcmF0b3JpZXMgbG9jYXRlZCBpbiBzZW1pLXJ1cmFsIGFyZWFzIGZhciBhd2F5IGZyb20gcHVibGljIHN0cmVldHMuClF1ZXN0aW9uIDQ6IFdoYXQgYXJlIHRoZSBleGFjdCB0ZW1wb3JhbCBzaWduYXR1cmVzIG9mIGdhc2VzIHJlbGVhc2VkIGR1cmluZyB0aGUKZGlmZmVyZW50IHByb2R1Y3Rpb24gcHJvY2Vzc2VzIHVzZWQgaW4gQnJpdGlzaCBDb2x1bWJpYT8gSG93IGxvbmcgYXJlIHR5cGljYWwKcHJvZHVjdGlvbiBjeWNsZXMgZm9yIHRoZSBkaWZmZXJlbnQgbWV0aG9kcz8gRG8gY3ljbGVzIG92ZXJsYXA/Ck1ldGhhbXBoZXRhbWluZSBtYW51ZmFjdHVyaW5nIGludm9sdmVzIGRpZmZlcmVudCBzdGFnZXMgKHN5bnRoZXNpcywgY29udmVyc2lvbiwKZXh0cmFjdGlvbiwgZXRjLiksIGFuZCBjb25jZW50cmF0aW9ucyBvZiByZWxlYXNlZCBhaXJib3JuZSBjaGVtaWNhbHMgdmFyeSBkdXJpbmcgdGhlCmRpZmZlcmVudCBzdGFnZXMuIFRoaXMgbWVhbnMgdGhhdCBldmVyeSBtYW51ZmFjdHVyaW5nIHByb2Nlc3MgaGFzIGEgdW5pcXVlIHRlbXBvcmFsCnNpZ25hdHVyZSwgd2hpY2ggaW5jbHVkZXMgdGhlIHNlcXVlbmNlIG9mIGdhcyBjb25jZW50cmF0aW9ucyBhcyB3ZWxsIGFzIHRoZSBkdXJhdGlvbiBvZgp0aGUgZGlmZmVyZW50IHN0YWdlcy4gSWRlbnRpZnlpbmcgYSB0ZW1wb3JhbCBzaWduYXR1cmUgd2lsbCBmYWNpbGl0YXRlIHRoZSBpZGVudGlmaWNhdGlvbiBvZgp0aGUgbGFib3JhdG9yaWVzIHdpdGggZ3JlYXRlciBjb25maWRlbmNlIHRocm91Z2ggdGhlIHByb3Bvc2VkIGRldGVjdGlvbiBzY2hlbWUuIFRoZQo2MwoKDGR1cmF0aW9uIG9mIG9uZSBwcm9kdWN0aW9uIGN5Y2xlIHRvZ2V0aGVyIHdpdGggdGhlIHNlcXVlbmNlIG9mIGdhcyBjb25jZW50cmF0aW9ucwpkaWN0YXRlcyB0aGUgcmVxdWlyZWQgc2FtcGxpbmcgZnJlcXVlbmN5IHRvIG1ha2UgYW4gYXNzZXNzbWVudCBvZiBsYWIgYWN0aXZpdHkgd2l0aCBhCmhpZ2hlciBsZXZlbCBvZiBjb25maWRlbmNlLiBJbiB0aGUgZXZlbnQgdGhhdCBwcm9kdWN0aW9uIGN5Y2xlcyBpbiB0aGUgc2FtZSBsYWJvcmF0b3J5Cm92ZXJsYXAsIGdhc2VzIGZyb20gZGlmZmVyZW50IHN0YWdlcyBtYXkgYmUgcmVsZWFzZWQgc2ltdWx0YW5lb3VzbHksIHdoaWNoIHRoZSBwcm9wb3NlZApkZXRlY3Rpb24gc2NoZW1lIG5lZWRzIHRvIHRha2UgaW50byBhY2NvdW50LgpRdWVzdGlvbiA1OiBEbyBjbGFuZGVzdGluZSBsYWIgb3BlcmF0b3JzIHR5cGljYWxseSBkdW1wIGFsbCBvZiB0aGVpciB3YXN0ZSBwcm9kdWN0cwphdCBvbmUgbG9jYXRpb24sIG9yIHNlcGFyYXRlIHRoZW0gaW50byBzb2xpZCBhbmQgbGlxdWlkIHdhc3RlcyBmb3IgZXhhbXBsZSBhbmQgZHVtcAp0aGVtIGF0IGRpZmZlcmVudCBsb2NhdGlvbnM/Ck1ldGhhbXBoZXRhbWluZSB3YXN0ZSBkdW1wcyBjYW4gYmUgZGlmZmVyZW50aWF0ZWQgZnJvbSBub3JtYWwgaW5kdXN0cmlhbCB3YXN0ZQpkdW1wcyAobGVnYWwgb3IgaWxsZWdhbCkgYnkgdGhlIHR5cGVzIG9mIGNoZW1pY2FscyBwcmVzZW50LiBFYWNoIG1ldGhhbXBoZXRhbWluZQptYW51ZmFjdHVyaW5nIHByb2Nlc3MgaGFzIGEgdW5pcXVlIHNldCBvZiBhc3NvY2lhdGVkIHdhc3RlIG1hdGVyaWFscy4gSWYgbGFiIG9wZXJhdG9ycyBkbwpzZXBhcmF0ZSBwcm9kdWN0aW9uIHdhc3RlcyBpdCB3aWxsIG1ha2UgZGV0ZWN0aW9uIG1vcmUgZGlmZmljdWx0LiBJbiBhZGRpdGlvbiwgaXQgd291bGQgYmUKdXNlZnVsIHRvIGtub3cgdGhlIGxldmVsIG9mIGNhcmUgdGhhdCBpcyB0eXBpY2FsbHkgdGFrZW4gdG8gZGlzcG9zZSBvZiB0aGVzZSBjaGVtaWNhbHMg4oCTCndoZXRoZXIgdGhleSBhcmUgd2VsbCBjb250YWluZWQgaW4gYXBwcm9wcmlhdGUgY29udGFpbmVycyBvciB3aGV0aGVyIHRoZXkgYXJlIHBvdXJlZCBpbnRvCnRoZSBlbnZpcm9ubWVudCB3aWxsIGxlYWQgdG8gZGlmZmVyZW50IGRldGVjdGFibGUgY2hlbWljYWwgY29uY2VudHJhdGlvbnMuCgozLiBHZW5lcmFsIFJlY29tbWVuZGF0aW9ucwpUaGlzIHJlc2VhcmNoIHJlcG9ydCBoYXMgcHJvdmlkZWQgc3Vic3RhbnRpYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2YXJpb3VzIGNvbW1vbgptZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBtZXRob2RzIHRoYXQgd2VyZSBpZGVudGlmaWVkIGluIHRoZSBsaXRlcmF0dXJlLCB0aGUKcG90ZW50aWFsIHRhcmdldCBnYXNlcyByZWxlYXNlZCwgYW5kIHRoZSBwZXJmb3JtYW5jZSBvZiBhdmFpbGFibGUgc2Vuc2luZyB0ZWNobm9sb2d5IGluCnRoZSBjb250ZXh0IG9mIHRob3NlIGdhc2VzLiBEaXJlY3QgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBleGFjdCBtZXRob2RzIHVzZWQgaW4KQnJpdGlzaCBDb2x1bWJpYW4gY2xhbmRlc3RpbmUgbGFib3JhdG9yaWVzIHdhcyBub3Qgb2J0YWluZWQgZm9yIHRoaXMgcmVwb3J0IGR1ZSB0byB0aGUKc2Vuc2l0aXZpdHkgb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIGxhY2sgb2YgdGhpcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBoYXMgcHJldmVudGVkIHRoaXMKcmVzZWFyY2ggZnJvbSBpZGVudGlmeWluZyBhIHNwZWNpZmljIGRldGVjdGlvbiB0ZWNobm9sb2d5IGZvciB0YXJnZXRpbmcgQnJpdGlzaCBDb2x1bWJpYW4KY2xhbmRlc3RpbmUgbGFib3JhdG9yaWVzLiBBbHRob3VnaCB0aGUgcHJvYmxlbSBvZiBjbGFuZGVzdGluZSBkcnVnIGxhYnMgYW5kIGNoZW1pY2FsCndhc3RlIGR1bXBzIGlzIG5vdCBzcGVjaWZpYyB0byBCcml0aXNoIENvbHVtYmlhLCB0aGVyZSBhcmUgdW5pcXVlIGZhY3RvcnMgcHJlc2VudCB0aGF0IHdpbGwKaGF2ZSBhIHNpZ25pZmljYW50IGVmZmVjdCBvbiB0aGUgY2hvaWNlIG9mIHNlbnNpbmcgdGVjaG5vbG9neSB0byB1c2UgZm9yIGEgc3BlY2lmaWMKZ2VvZ3JhcGhpYyBhcmVhLiBUaGVzZSBmYWN0b3JzIGluY2x1ZGUgcHJlY3Vyc29yIG1hdGVyaWFsIGF2YWlsYWJpbGl0eSwgd2hpY2ggaXMgaGVhdmlseQppbmZsdWVuY2VkIGJ5IGZlZGVyYWwgY2hlbWljYWwgaW1wb3J0IHJlc3RyaWN0aW9ucyBhbmQgcG9ydC9ib3JkZXIgc2VjdXJpdHksIGFzIHdlbGwgYXMgdGhlCmxlZ2FsIGZyYW1ld29yay4KVGhlIG1ham9yaXR5IG9mIGRhdGEgZ2F0aGVyZWQgb24gY2hlbWljYWwgY29uY2VudHJhdGlvbnMgcHJlc2VudCBhdCBzdGFnZWQgY2xhbmRlc3RpbmUKbGFib3JhdG9yaWVzIHdhcyBvYnRhaW5lZCBmcm9tIHJlcG9ydHMgYnkgRHIuIEpvaG4gTWFydHlueSBvZiB0aGUgTmF0aW9uYWwgSmV3aXNoCk1lZGljYWwgQ2VudGVyLiBVbmZvcnR1bmF0ZWx5LCBvbmx5IGluZG9vciBhaXJib3JuZSBjaGVtaWNhbCBjb25jZW50cmF0aW9ucyB3ZXJlCm9idGFpbmVkIGluIHRoZSByZXBvcnRlZCBzdHVkaWVzLCBhbmQgb3V0ZG9vciBjb25jZW50cmF0aW9ucyB3ZXJlIG5vdCBtZWFzdXJlZC4KSG93ZXZlciwgYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBtZWFzdXJlbWVudHMsIGl0IGlzIGV4cGVjdGVkIHRoYXQgb3V0ZG9vciBjb25jZW50cmF0aW9ucwp3aWxsIG9jY3VyIGF0IGxvdyBwcGIgbGV2ZWxzIGZvciB0aGUgdGFyZ2V0IGdhc2VzLiBXaXRob3V0IG91dGRvb3IgY29uY2VudHJhdGlvbgptZWFzdXJlbWVudHMgaXQgaXMgY2hhbGxlbmdpbmcgdG8gcHJvdmlkZSBleGFjdCBzZW5zb3IgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnRzLgpCYXNlZCBvbiBhdmFpbGFibGUgaW5mb3JtYXRpb24sIGZ1cnRoZXIgc3R1ZHkgaXMgbmVlZGVkIGJlZm9yZSBhIGNvbmNsdXNpdmUgZmVhc2liaWxpdHkKYXNzZXNzbWVudCBjYW4gYmUgZGV2ZWxvcGVkIGFuZCByZWNvbW1lbmRhdGlvbnMgY2FuIGJlIG1hZGUgb24gdGhlIG1vc3Qgc3VpdGFibGUKY2xhbmRlc3RpbmUgbGFib3JhdG9yeSBkZXRlY3Rpb24gdGVjaG5vbG9neSBhbmQgaW1wbGVtZW50YXRpb24uIEhlcmUgd2Ugb2ZmZXIKcHJlbGltaW5hcnkgcmVjb21tZW5kYXRpb25zIGZvciBleHBlcmltZW50YWwgaW52ZXN0aWdhdGlvbnMgaW4gY29sbGFib3JhdGlvbiB3aXRoIHRoZQo2NAoKDENhbmFkaWFuIFBvbGljZSBSZXNlYXJjaCBDZW50cmUgYW5kIG11bmljaXBhbCBGaXJlIERlcGFydG1lbnRzLiBUaGUgb2JqZWN0aXZlcyBvZgp0aGVzZSBpbnZlc3RpZ2F0aW9ucyB3aWxsIGJlIHR3b2ZvbGQ6IDEuIHRvIGFjcXVpcmUgdGhlIHJlbWFpbmluZyBpbmZvcm1hdGlvbiBvbgpwZXJmb3JtYW5jZSByZXF1aXJlbWVudHMgZm9yIHNlbnNpbmcgdGVjaG5vbG9neTsgMi4gdG8gcGVyZm9ybSBhIHByZWxpbWluYXJ5IHRlY2hub2xvZ3kKYXNzZXNzbWVudCB0aHJvdWdoIGV4cGVyaW1lbnRzLiBUaGUgcmVjb21tZW5kYXRpb25zIGFyZSBkZXZlbG9wZWQgc3VjaCB0aGF0IHRoZQpyZXN1bHRzIGZyb20gZWFjaCBzdGVwIGNhbiBiZSB1c2VkIHRvIGFzc2VzcyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBmZWFzaWJsZSB0byBjb250aW51ZSB3aXRoCnRoZSBwcm9qZWN0LiBBcyB3ZWxsLCBlYWNoIHN0ZXAgcmVwcmVzZW50cyBsZXNzIGludmVzdG1lbnQgdGhhbiB0aGUgc3Vic2VxdWVudCBzdGVwcyBhbmQKdGhlcmVmb3JlLCB0aGUgcmVjb21tZW5kYXRpb25zIHByb3ZpZGUgYSBib290c3RyYXBwaW5nIG1ldGhvZCBmb3IgYnVpbGRpbmcgdXAgdGhlCnByb2plY3QuClJlY29tbWVuZGF0aW9uIDE6IFNldCB1cCBhIG1vY2sgY2xhbmRlc3RpbmUgbGFiIHNldHRpbmcgZm9yIHRoZSByZWxlYXNlIGFuZApkZXRlY3Rpb24gb2YgaGFybWxlc3Mgc2FtcGxlIGdhc2VzLgpBIHR5cGljYWwgY2xhbmRlc3RpbmUgbGFib3JhdG9yeSBzZXR0aW5nIHNob3VsZCBiZSB1c2VkIHRvIHJlbGVhc2UgaGFybWxlc3Mgc2ltdWxhbnQgZ2FzZXMKKHRvIGJlIGRldGVybWluZWQpIGZyb20gaW5zaWRlIGEgYnVpbGRpbmcgYXQgY29uY2VudHJhdGlvbnMgc2ltaWxhciB0byB0aG9zZSByZXBvcnRlZCBpbgp0aGUgbGl0ZXJhdHVyZSBmb3IgY29udHJvbGxlZCBtZXRoYW1waGV0YW1pbmUgbWFudWZhY3R1cmluZyBwcm9jZXNzZXMuIFRoZXNlIGdhc2VzCnNob3VsZCBoYXZlIHNpbWlsYXIgcHJvcGVydGllcyB0byB0aGUgdGFyZ2V0IGdhc2VzLCBzdWNoIGFzIGRlbnNpdHkgYW5kIG1hc3MgZGlmZnVzaXZpdHkuClRoZSBjb25jZW50cmF0aW9uIG9mIHRoZXNlIGdhc2VzIHNob3VsZCBiZSBtZWFzdXJlZCBvdXRzaWRlIG9mIHRoZSBidWlsZGluZyB3aXRoIGEKaGlnaGx5IHNlbnNpdGl2ZSBkZXRlY3RvciwgYXMgd2VsbCBhcyB3aXRoIGNvbG9yaW1ldHJpYyBnYXMgZGV0ZWN0aW9uIHR1YmVzLiBUaGUgcmVmZXJlbmNlCmRldGVjdG9yIHdpbGwgZ2l2ZSBhbiBhY2N1cmF0ZSBtZWFzdXJlbWVudCBvZiBnYXMgY29uY2VudHJhdGlvbiwgd2hpbGUgdGhlIHRlc3QgdHViZXMgd2lsbApiZSBldmFsdWF0ZWQgb24gdGhlaXIgY2FwYWJpbGl0eSB0byBhY2N1bXVsYXRlIGdhcyBzYW1wbGVzIGF0IGxvdyBjb25jZW50cmF0aW9uIGxldmVscy4gSW4KYWRkaXRpb24sIHRoZSBzZW5zb3JzLCBlc3BlY2lhbGx5IHRoZSBjb2xvcmltZXRyaWMgdHViZXMsIHNob3VsZCBiZSBtb3VudGVkIHRvIGEgdmVoaWNsZSB0bwp2ZXJpZnkgd2hldGhlciBvciBub3QgdGhlIHRhcmdldCBnYXNlcyBjYW4gYmUgZGV0ZWN0ZWQgd2l0aCBhIG1vYmlsZSBkZXRlY3Rpb24gdW5pdC4KUmVjb21tZW5kYXRpb24gMjogUGVyZm9ybSBsb25nLXRlcm0gdGVzdGluZyBpbiBhIGNpdHkgZW52aXJvbm1lbnQgdXNpbmcKY29sb3JpbWV0cmljIHRlc3QgdHViZXMgbW91bnRlZCB0byB2ZWhpY2xlcy4KSWYgdGhlIGV4cGVyaW1lbnRhbCByZXN1bHRzIGZyb20gUmVjb21tZW5kYXRpb24gMSBpbmRpY2F0ZSB0aGF0IHRoZSBnYXMgbGV2ZWxzIGF0IHRoZQpleHRlcmlvciBvZiB0aGUgdGVzdCBzaXRlIGFyZSBzdWZmaWNpZW50bHkgaGlnaCBmb3IgZGV0ZWN0aW9uIHVzaW5nIGNvbG9yaW1ldHJpYyBkZXRlY3Rpb24KdHViZXMsIHRoZW4gYSBkZXZpY2UgY29udGFpbmluZyBzaW1pbGFyIGRldGVjdGlvbiB0dWJlcywgd2hpY2ggYXJlIHNlbnNpdGl2ZSB0byBhIHNlbGVjdGlvbgpvZiB0aGUgdGFyZ2V0IGdhc2VzLCBzaG91bGQgYmUgbW91bnRlZCBvbnRvIHNldmVyYWwgcGF0cm9sIHZlaGljbGVzLiBUaGUgZGV2aWNlIGNvbnRhaW5pbmcKdGhlc2UgdHViZXMgd2lsbCBiZSBlcXVpcHBlZCB3aXRoIGFpciBwdW1wcyB0aGF0IHByb3ZpZGUgY29udGludW91cyBzYW1wbGluZyBhaXIgdG8gdGhlCnR1YmVzLiBBZnRlciBhbiBhcHByb3ByaWF0ZSBhbW91bnQgb2YgdGltZSwgdGhlIGRldGVjdGlvbiB0dWJlcyB3aWxsIGJlIGFuYWx5emVkIGZvciB0aGUKc2FtcGxlIGdhc2VzIHVzaW5nIGhpZ2hseSBzZW5zaXRpdmUgZGV0ZWN0aW9uIG1ldGhvZHMgaW4gYSByZXNlYXJjaCBsYWJvcmF0b3J5IChpLmUuIGdhcwpjaHJvbWF0b2dyYXBoLW1hc3Mgc3BlY3Ryb21ldGVyKSB0byB2ZXJpZnkgaWYgdGhlIGRldGVjdGlvbiB0dWJlcyBoYXZlIGJlZW4gZXhwb3NlZCB0bwphbnkgb2YgdGhlIHRhcmdldCBjaGVtaWNhbHMuIFRoaXMgaW52ZXN0aWdhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIG92ZXIgYSBzcGFuIG9mIHNldmVyYWwKd2Vla3MuIEFsdGhvdWdoIHRoZXNlIGRldGVjdGlvbnMgdHViZXMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgcGVybWFuZW50IGFwcGxpY2F0aW9uIGR1ZSB0bwp0aGUgcmVxdWlyZWQgcG9zdCBwcm9jZXNzaW5nIGFuZCBmcmVxdWVudCByZXBsYWNlbWVudHMsIHRoZXkgcHJvdmlkZSBhIGxvdy1jb3N0IGNoZWNrIG9mCnRoZSBmZWFzaWJpbGl0eSBvZiB0aGlzIHByb2plY3QuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgcGF0cm9sIHZlaGljbGVzIHdpbGwKYmUgZXhwb3NlZCB0byB0aGUgdmFwb3VycyBlbWl0dGVkIGZyb20gYW4gb3BlcmF0aW9uYWwgbWV0aGFtcGhldGFtaW5lIGxhYm9yYXRvcnkuClRoZXJlZm9yZSwgaW4gdGhlIGV2ZW50IHRoYXQgbm9uZSBvZiB0aGUgY2hlbWljYWxzIGFyZSBkZXRlY3RlZCwgYSBkZWNpc2lvbiBjYW4gYmUgbWFkZSBhcwp0byB3aGV0aGVyIHRvIGV4dGVuZCB0aGUgZXhwZXJpbWVudCBvciBwcm9jZWVkIHRvIFJlY29tbWVuZGF0aW9uIDMuCgo2NQoKDFJlY29tbWVuZGF0aW9uIDM6IFNldCB1cCBhIG1vZGVsIGNsYW5kZXN0aW5lIGxhYiBhbmQvb3Igd2FzdGUgZHVtcCBpbiBvcmRlciB0bwpvYnRhaW4gYWlyYm9ybmUgdGFyZ2V0IGdhcyBjb25jZW50cmF0aW9ucyBpbiB0aGUgdmljaW5pdHkgb2YgdGhlIGxhYm9yYXRvcnkgZm9yIHRoZQptb3N0IGNvbW1vbiBtYW51ZmFjdHVyaW5nIG1ldGhvZHMuCkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYSBjb250cm9sbGVkIGV4cGVyaW1lbnQgaW5jbHVkaW5nIGEgbW9kZWwgY2xhbmRlc3RpbmUgbGFib3JhdG9yeQpiZSBjb25zdHJ1Y3RlZCBpbiBvcmRlciB0byBhY3F1aXJlIG91dGRvb3IgYWlyYm9ybmUgZ2FzIGNvbmNlbnRyYXRpb25zLiBGb3IgdGhpcyBzdHVkeSwgdGhlCnVzZSBvZiBzZXZlcmFsIGZpeGVkIGxvY2F0aW9uIGdhcyBjb2xsZWN0aW9uIGRldmljZXMsIHN1Y2ggYXMgZ2FzIGNvbGxlY3Rpb24gdHViZXMsIGFzIHdlbGwKYXMgb3RoZXIgcG9pbnQgYW5kIHJlbW90ZSBzZW5zaW5nIHRlY2hub2xvZ3kgaXMgcmVjb21tZW5kZWQuIFRoZSB0dWJlcyB3aWxsIGJlCmFuYWx5emVkIHVzaW5nIGhpZ2hseSBzZW5zaXRpdmUgZXF1aXBtZW50IHN1Y2ggYXMgYSBnYXMgY2hyb21hdG9ncmFwaC1tYXNzCnNwZWN0cm9tZXRlci4gVXNpbmcgdGhpcyBleHBlcmltZW50LCBib3RoIGdhcyBsZXZlbHMgYW5kIGEgdGVtcG9yYWwgc2lnbmF0dXJlIHdpbGwgYmUKYWNxdWlyZWQuIEluIGFkZGl0aW9uLCB0aGlzIHdvdWxkIHByb3ZpZGUgdGhlIGFwcHJvcHJpYXRlIHRlc3Qgc2l0ZSBmb3IgdGhlIEFCQiBGVElSCnN5c3RlbSB0byBkZXRlcm1pbmUgaWYgaXQgaXMgcG9zc2libGUgdG8gcGlucG9pbnQgdGhlIGxhYm9yYXRvcnkgbG9jYXRpb24gdXNpbmcgdGhpcwp0ZWNobm9sb2d5LiBUaGUgZXhhY3Qgc3BlY2lmaWNhdGlvbnMgb2YgcmVxdWlyZWQgc2Vuc2luZyB0ZWNobm9sb2d5IHdpbGwgYmUgZGV0ZXJtaW5lZAp1c2luZyB0aGUgcmVzdWx0cyBvZiB0aGlzIHN0dWR5LiBJbiBhZGRpdGlvbiwgdGhlIHJlc3VsdHMgd2lsbCBkZXRlcm1pbmUgd2hlcmUgZnVydGhlcgpzZW5zaW5nIHRlY2hub2xvZ3kgcmVzZWFyY2ggYW5kIGRldmVsb3BtZW50IGFyZSByZXF1aXJlZC4KCjY2CgoMUkVGRVJFTkNFUwpbMV0gRC5SLiBDaHJpc3RpYW4sIEZvcmVuc2ljIEludmVzdGlnYXRpb24gb2YgQ2xhbmRlc3RpbmUgTGFib3JhdG9yaWVzLCBDUkMgUHJlc3MsIDIwMDQuClsyXSBNLlMuIFNjb3R0LCDigJxDbGFuZGVzdGluZSBEcnVnIExhYnMs4oCdIFdhc2hpbmd0b24sIERDOiBVUyBEZXBhcnRtZW50IG9mIEp1c3RpY2UuIFJldHJpZXZlZCBmcm9tCmh0dHA6Ly93d3cuIGNvcHMuIHVzZG9qLiBnb3YvcGRmL2UxMjAxMTQwNi4gcGRmLCAyMDAyLgpbM10gSi4gTWFydHlueSBldCBhbC4sIOKAnENoZW1pY2FsIEV4cG9zdXJlcyBBc3NvY2lhdGVkIHdpdGggQ2xhbmRlc3RpbmUgTWV0aGFtcGhldGFtaW5lIExhYm9yYXRvcmllcyBVc2luZwp0aGUgQW5oeWRyb3VzIEFtbW9uaWEgTWV0aG9kIG9mIFByb2R1Y3Rpb24s4oCdIEluYXVndXJhbCBOYXRpb25hbCBEcnVnIEVuZGFuZ2VybWVudCBDaGlsZHJlbgpDb25mZXJlbmNlLCAyMDA0LCBwcC4gMjktMzAuCls0XSBSQ01QIERydWdzICYgT3JnYW5pemVkIENyaW1lIEF3YXJlbmVzcyBTZXJ2aWNlLCDigJxEcnVnIEF3YXJlbmVzcyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uc+KAnTsKaHR0cDovL3d3dy5yY21wLWdyYy5nYy5jYS9kb2Nhcy9kcnVnX2F3YXJlX2ZhcV9lLmh0bSNsYWJzLgpbNV0gVmFuY291dmVyIFBvbGljZSBEZXBhcnRtZW50LCDigJxEcnVnIFVuaXQgQ2xhbmRlc3RpbmUgYW5kIENoZW1pY2FsIExhYnPigJ07Cmh0dHA6Ly93d3cuY2l0eS52YW5jb3V2ZXIuYmMuY2EvcG9saWNlL09wc1N1cHAvR2FuZ3NEcnVncy9jaGVtaWNhbExhYi5odG0uCls2XSBVLiBGZXN0ZXIsIFNlY3JldHMgb2YgTWV0aGFtcGhldGFtaW5lIE1hbnVmYWN0dXJlOiBJbmNsdWRpbmcgUmVjaXBlcyBmb3IgTWRhLCBFY3N0YXN5LCBMb29tcGFuaWNzClVubGltaXRlZCwgMjAwMi4KWzddIFIuTC4gU2V4dG9uIGV0IGFsLiwg4oCcUGF0dGVybnMgb2YgaWxsaWNpdCBtZXRoYW1waGV0YW1pbmUgcHJvZHVjdGlvbiAoImNvb2tpbmciKSBhbmQgYXNzb2NpYXRlZCByaXNrcyBpbiB0aGUKcnVyYWwgc291dGg6IGFuIGV0aG5vZ3JhcGhpYyBleHBsb3JhdGlvbizigJ0gSm91cm5hbCBvZiBEcnVnIElzc3Vlcywgdm9sLiAzNiwgRmFsbC4gMjAwNiwgcHAuIDg1My04NzYuCls4XSBXaWtpcGVkaWEsIOKAnENvbnRyb2xsZWQgRHJ1Z3MgYW5kIFN1YnN0YW5jZXMgQWN04oCdOwpodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRyb2xsZWRfRHJ1Z3NfYW5kX1N1YnN0YW5jZXNfQWN0LgpbOV0gSi5XLiBNYXJ0eW55IGV0IGFsLiwg4oCcQ2hlbWljYWwgY29uY2VudHJhdGlvbnMgYW5kIGNvbnRhbWluYXRpb24gYXNzb2NpYXRlZCB3aXRoIGNsYW5kZXN0aW5lCm1ldGhhbXBoZXRhbWluZSBsYWJvcmF0b3JpZXMs4oCdIEpvdXJuYWwgb2YgQ2hlbWljYWwgSGVhbHRoICYgU2FmZXR5LCB2b2wuIDE0LCAyMDA3LCBwcC4gNDAtNTIuClsxMF0gV2lraXBlZGlhLCDigJxNZXRoYW1waGV0YW1pbmUs4oCdIFdpa2lwZWRpYTsgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRoYW1waGV0YW1pbmUuClsxMV0gSi4gTWFydHlueSBldCBhbC4sIENoZW1pY2FsIEV4cG9zdXJlcyBBc3NvY2lhdGVkIHdpdGggQ2xhbmRlc3RpbmUgTWV0aGFtcGhldGFtaW5lIExhYm9yYXRvcmllcyBVc2luZwp0aGUgSHlwb3Bob3NwaG9yb3VzIGFuZCBQaG9zcGhvcm91cyBGbGFrZSBNZXRob2Qgb2YgUHJvZHVjdGlvbiwgRGVudmVyLCBDb2xvcmFkbzogTmF0aW9uYWwgSmV3aXNoCk1lZGljYWwgYW5kIFJlc2VhcmNoIENlbnRlciwgMjAwNS4KWzEyXSBKLiBNYXJ0eW55IGV0IGFsLiwgQSAyNC1Ib3VyIFN0dWR5IHRvIEludmVzdGlnYXRlIENoZW1pY2FsIEV4cG9zdXJlcyBBc3NvY2lhdGVkIHdpdGggQ2xhbmRlc3RpbmUKTWV0aGFtcGhldGFtaW5lIExhYm9yYXRvcmllcywgRGVudmVyLCBDb2xvcmFkbzogTmF0aW9uYWwgSmV3aXNoIE1lZGljYWwgYW5kIFJlc2VhcmNoIENlbnRlciwgMjAwNS4KWzEzXSBTdXJyZXkgRmlyZSBTZXJ2aWNlIGFuZCBTdXJyZXkgUGFya3MgQm9hcmQsIOKAnENpdHkgb2YgU3VycmV5IEFzc2Vzc21lbnQgb2YgRHVtcCBTaXRlcyzigJ0gMjAwNy4KWzE0XSBSLkkuIFN0ZWZhbiwgSi5GLiB2YW4gU3RhZGVuLCBhbmQgSC5ZLiBBYm91bC1FbmVpbiwg4oCcRWxlY3Ryb2NoZW1pY2FsIFNlbnNvciBBcnJheXMs4oCdIENyaXRpY2FsIFJldmlld3MgaW4KQW5hbHl0aWNhbCBDaGVtaXN0cnksIHZvbC4gMjksIDE5OTksIHBwLiAxMzMtMTUzLgpbMTVd4oCcRWxlY3Ryb2NoZW1pc3RyeSzigJ0gV2lraXBlZGlhOyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VsZWN0cm9jaGVtaXN0cnkuClsxNl0gSi5SLiBTdGV0dGVyLCBXLlIuIFBlbnJvc2UsIGFuZCBTLiBZYW8sIOKAnFNlbnNvcnMsIENoZW1pY2FsIFNlbnNvcnMsIEVsZWN0cm9jaGVtaWNhbCBTZW5zb3JzLCBhbmQgRUNTLOKAnQpKb3VybmFsIG9mIFRoZSBFbGVjdHJvY2hlbWljYWwgU29jaWV0eSwgdm9sLiAxNTAsIDIwMDMsIHAuIFMxMS4KWzE3XSBJbnRlcm5hdGlvbmFsIFNlbnNvciBUZWNobm9sb2d5LCDigJxDaGFwdGVyIDIgLSBFbGVjdHJvY2hlbWljYWwgU2Vuc29yc+KAnTsKaHR0cDovL3d3dy5pbnRsc2Vuc29yLmNvbS9wZGYvZWxlY3Ryb2NoZW1pY2FsLnBkZi4KWzE4XSBJbnRlcm5hdGlvbmFsIFNlbnNvciBUZWNobm9sb2d5LCDigJxDaGFwdGVyIDYgLSBQaG90b2lvbml6YXRpb24gRGV0ZWN0b3Jz4oCdOwpodHRwOi8vd3d3LmludGxzZW5zb3IuY29tL3BkZi9waG90b2lvbml6YXRpb24ucGRmLgpbMTldIE4uIE5ha2FubyBhbmQgUy4gT2dhd2EsIOKAnFByZXBhcmF0aW9uIG9mIHRoaW4gZ29sZC1maWxtIGVsZWN0cm9kZSBmb3IgYW4gZWxlY3Ryb2NoZW1pY2FsIGdhcyBzZW5zb3IgZm9yCnBob3NwaGluZSBhbmQgYXJzaW5lLOKAnSBTZW5zb3JzIGFuZCBBY3R1YXRvcnMgQjogQ2hlbWljYWwsIHZvbC4gMjEsIEp1bC4gMTk5NCwgcHAuIDUxLTU1LgpbMjBdIEsuIE5hZ2FzaGltYSBhbmQgUy4gU3V6dWtpLCDigJxBIGdhbHZhbmljIHNvbGlkLXN0YXRlIHNlbnNvciBmb3IgbW9uaXRvcmluZyBpb2RpbmUgdmFwb3IsIG96b25lLCBhbmQKbml0cm9nZW4gZGlveGlkZSB1c2luZyBjb252ZXJ0ZXIs4oCdIEphcGFuIGFuYWx5c3QsIHZvbC4gMzIsIHBwLiA1NDEtNTQ2LgpbMjFdIFAuIExhdXF1ZSBldCBhbC4sIOKAnFNwdXR0ZXJlZCB0aGluIGZpbG1zIG9mIEN1QnIgYXMgZWxlY3Ryb2NoZW1pY2FsIG1pY3Jvc2Vuc29ycyBmb3IgTkgzIGdhczogc3RydWN0dXJlLApzZW5zaXRpdml0eSBhbmQgYWdpbmcgZWZmZWN0cyzigJ0gU29saWQgU3RhdGUgSW9uaWNzLCB2b2wuIDEzNi0xMzcsIE5vdi4gMjAwMCwgcHAuIDYwMy02MDYuClsyMl0gUC4gTGF1cXVlIGV0IGFsLiwg4oCcSW1wZWRhbmNlIGFuYWx5c2lzIG9mIEN1QnIgZmlsbXMgZm9yIGFtbW9uaWEgZ2FzIGRldGVjdGlvbizigJ0gU2Vuc29ycyBhbmQgQWN0dWF0b3JzIEI6CkNoZW1pY2FsLCB2b2wuIDg3LCBEZWMuIDIwMDIsIHBwLiA0MzEtNDM2LgoKNjcKCgxbMjNdIEouUi4gU3RldHRlciwgUC5DLiBKdXJzLCBhbmQgUy5MLiBSb3NlLCDigJxEZXRlY3Rpb24gb2YgaGF6YXJkb3VzIGdhc2VzIGFuZCB2YXBvcnM6IHBhdHRlcm4gcmVjb2duaXRpb24KYW5hbHlzaXMgb2YgZGF0YSBmcm9tIGFuIGVsZWN0cm9jaGVtaWNhbCBzZW5zb3IgYXJyYXks4oCdIEFuYWx5dGljYWwgQ2hlbWlzdHJ5LCB2b2wuIDU4LCAxOTg2LCBwcC4gODYwLTg2Ni4KWzI0XSBDLksuIEhvIGV0IGFsLiwg4oCcUmV2aWV3IG9mIENoZW1pY2FsIFNlbnNvcnMgZm9yIEluLVNpdHUgTW9uaXRvcmluZyBvZiBWb2xhdGlsZSBDb250YW1pbmFudHMs4oCdIFNhbmRpYQpOYXRpb25hbCBMYWJvcmF0b3JpZXMsIEFsYnVxdWVycXVlLCBOZXcgTWV4aWNvLCBTQU5ESUEgUkVQT1JUIE1hcmNoLCB2b2wuIDIwMDEsIDIwMDEuClsyNV0gSy5KLiBBbGJlcnQgZXQgYWwuLCDigJxDcm9zcy1yZWFjdGl2ZSBjaGVtaWNhbCBzZW5zb3IgYXJyYXlzLOKAnSBDaGVtLiBSZXYsIHZvbC4gMTAwLCAyMDAwLCBwcC4gMjU5NeKAkzI2MjYuClsyNl0gSi5ELk4uIENoZWVrZSwgRnVuZGFtZW50YWxzIGFuZCBBcHBsaWNhdGlvbnMgb2YgVWx0cmFzb25pYyBXYXZlcywgQ1JDIFByZXNzLCAyMDAyLgpbMjddIEQuIEphbWVzIGV0IGFsLiwg4oCcQ2hlbWljYWwgU2Vuc29ycyBmb3IgRWxlY3Ryb25pYyBOb3NlIFN5c3RlbXMs4oCdIE1pY3JvY2hpbWljYSBBY3RhLCB2b2wuIDE0OSwgMjAwNSwgcHAuCjEtMTcuClsyOF0gQy4gU2hlbiwgQy4gSHVhbmcsIGFuZCBXLiBIdWFuZywg4oCcR2FzLWRldGVjdGluZyBwcm9wZXJ0aWVzIG9mIHN1cmZhY2UgYWNvdXN0aWMgd2F2ZSBhbW1vbmlhIHNlbnNvcnMs4oCdClNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiAxMDEsIEp1bi4gMjAwNCwgcHAuIDEtNy4KWzI5XSBNLiBQZW56YSwgRi4gQW50b2xpbmksIGFuZCBNLiBWaXR0b3JpLUFudGlzYXJpLCDigJxDYXJib24gbmFub3R1YmVzLWJhc2VkIHN1cmZhY2UgYWNvdXN0aWMgd2F2ZXMgb3NjaWxsYXRpbmcKc2Vuc29yIGZvciB2YXBvdXIgZGV0ZWN0aW9uLOKAnSBUaGluIFNvbGlkIEZpbG1zLCB2b2wuIDQ3MiwgSmFuLiAyMDA1LCBwcC4gMjQ2LTI1Mi4KWzMwXSBELiBMaSBhbmQgTS4gTWEsIOKAnFN1cmZhY2UgYWNvdXN0aWMgd2F2ZSBtaWNyb3NlbnNvcnMgYmFzZWQgb24gY3ljbG9kZXh0cmluIGNvYXRpbmdzLOKAnSBTZW5zb3JzIGFuZApBY3R1YXRvcnMgQjogQ2hlbWljYWwsIHZvbC4gNjksIFNlcC4gMjAwMCwgcHAuIDc1LTg0LgpbMzFdIFkuIEhhbiBLaW0gYW5kIEsuIEphZSBDaG9pLCDigJxGYWJyaWNhdGlvbiBhbmQgYXBwbGljYXRpb24gb2YgYW4gYWN0aXZhdGVkIGNhcmJvbi1jb2F0ZWQgcXVhcnR6IGNyeXN0YWwKc2Vuc29yLOKAnSBTZW5zb3JzIGFuZCBBY3R1YXRvcnMgQjogQ2hlbWljYWwsIHZvbC4gODcsIE5vdi4gMjAwMiwgcHAuIDE5Ni0yMDAuClszMl0gWm9sdMOhbiBCYWNzaWssIErDoW5vcyBNaW5rLCBhbmQgR8OhYm9yIEtlcmVzenR1cnksIOKAnEZUSVIgU3BlY3Ryb3Njb3B5IG9mIHRoZSBBdG1vc3BoZXJlLiBJLiBQcmluY2lwbGVzCmFuZCBNZXRob2Rz4oCdOyBodHRwOi8vd3d3LmluZm9ybWF3b3JsZC5jb20vc21wcC9jb250ZW50fmNvbnRlbnQ9YTcxMzYxNjQxNC4KWzMzXSBUQVBQU0EsIEZUSVIgU3BlY3RydW0gb2YgSHlkcm9jYXJib24gb2lsLCBTaWxpY29uZSwgYW5kIFNpbGljYSBFc3RlcnMgTWV0YWwgc29hcHM7Cmh0dHA6Ly93d3cudGFwcHNhLmNvLnphL2FyY2hpdmUyL0FQUFdfMjAwNC9UaXRsZTIwMDQvRGV0ZXJtaW5hdGlvbl9vZl9zaWxpY29uZV9kZWZvLzIwMDQtMWZpZzIuanBnLgpbMzRdIEVudmlyb25pY3MgT3ksIOKAnElEMTAwIC0gUG9ydGFibGUgRlRJUiBHYXMgQW5hbHl6ZXLigJ07IGh0dHA6Ly93d3cuZW52aXJvbmljcy5maS9pbmRleC5waHA/cGFnZT1pZDEwMC4KWzM1XSBTLiBDaHJpc3RpZSBldCBhbC4sIOKAnFJlbW90ZSBkZXRlY3Rpb24gb2YgZ2FzZW91cyBhbW1vbmlhIHVzaW5nIHRoZSBuZWFyIGluZnJhcmVkIHRyYW5zbWlzc2lvbiBwcm9wZXJ0aWVzIG9mCnBvbHlhbmlsaW5lLOKAnSBTZW5zb3JzICYgQWN0dWF0b3JzOiBCLiBDaGVtaWNhbCwgdm9sLiA5MCwgMjAwMywgcHAuIDE2My0xNjkuClszNl0gUC5BLiBNYXJ0aW4sIOKAnE5lYXItaW5mcmFyZWQgZGlvZGUgbGFzZXIgc3BlY3Ryb3Njb3B5IGluIGNoZW1pY2FsIHByb2Nlc3MgYW5kIGVudmlyb25tZW50YWwgYWlyCm1vbml0b3Jpbmcs4oCdIENoZW1pY2FsIFNvY2lldHkgUmV2aWV3cywgdm9sLiAzMSwgMjAwMiwgcHAuIDIwMS0yMTAuClszN10gSW50ZXJuYXRpb25hbCBTZW5zb3IgVGVjaG5vbG9neSwg4oCcQ2hhcHRlciA1IC0gSW5mcmFyZWQgR2FzIFNlbnNvcnPigJ07Cmh0dHA6Ly93d3cuaW50bHNlbnNvci5jb20vcGRmL2luZnJhcmVkLnBkZi4KWzM4XSBDZW50ZXIgZm9yIEhpZ2gtVGhyb3VnaHB1dCBNaW5pbWFsbHktSW52YXNpdmUgUmFkaWF0aW9uIEJpb2Rvc2ltZXRyeSwgSW9uIE1vYmlsaXR5IFNwZWN0cm9tZXRlcjsKaHR0cDovL3d3dy5jbWNyLmNvbHVtYmlhLmVkdS9pbWFnZXMvcHJvamVjdDMtMy5qcGcuClszOV0gSC5ILiBIaWxsIGFuZCBHLiBTaW1wc29uLCDigJxDYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIG9mIGlvbiBtb2JpbGl0eSBzcGVjdHJvbWV0cnkgZm9yIGZpZWxkIHNjcmVlbmluZwphcHBsaWNhdGlvbnMs4oCdIEZpZWxkIEFuYWx5dGljYWwgQ2hlbWlzdHJ5ICYgVGVjaG5vbG9neSwgdm9sLiAxLCAxOTk3LCBwcC4gMTE5LTEzNC4KWzQwXSBSLiBFd2luZyBldCBhbC4sIOKAnEEgY3JpdGljYWwgcmV2aWV3IG9mIGlvbiBtb2JpbGl0eSBzcGVjdHJvbWV0cnkgZm9yIHRoZSBkZXRlY3Rpb24gb2YgZXhwbG9zaXZlcyBhbmQKZXhwbG9zaXZlIHJlbGF0ZWQgY29tcG91bmRzLOKAnSBUYWxhbnRhKE94Zm9yZCksIHZvbC4gNTQsIDIwMDEsIHBwLiA1MTUtNTI5LgpbNDFdIFIuQS4gTWlsbGVyIGV0IGFsLiwg4oCcQSBNRU1TIHJhZGlvLWZyZXF1ZW5jeSBpb24gbW9iaWxpdHkgc3BlY3Ryb21ldGVyIGZvciBjaGVtaWNhbCB2YXBvciBkZXRlY3Rpb24s4oCdClNlbnNvcnMgYW5kIEFjdHVhdG9ycyBBOiBQaHlzaWNhbCwgdm9sLiA5MSwgMjAwMSwgcHAuIDMwMS0zMTIuCls0Ml0gSi4gU3RhY2ggYW5kIEouIEJhdW1iYWNoLCDigJxJb24gTW9iaWxpdHkgU3BlY3Ryb21ldHJ5IC0gQmFzaWMgRWxlbWVudHMgYW5kIEFwcGxpY2F0aW9ucyzigJ0gSUpJTVMsIHZvbC4gNSwKMjAwMiwgcHAuIDEtMjEuCls0M10gVC5DLiBQZWFyY2UsIEhhbmRib29rIG9mIE1hY2hpbmUgT2xmYWN0aW9uOiBFbGVjdHJvbmljIE5vc2UgVGVjaG5vbG9neSwgV2lsZXktVkNILCAyMDAzLgpbNDRdIEIuIFRpbW1lciwgVy4gT2x0aHVpcywgYW5kIEEuIEJlcmcsIOKAnEFtbW9uaWEgc2Vuc29ycyBhbmQgdGhlaXIgYXBwbGljYXRpb25zLSBhIHJldmlldyzigJ0gU2Vuc29ycyBhbmQKQWN0dWF0b3JzIEIsIHZvbC4gMTA3LCAyMDA1LCBwcC4gNjY2LTY3Ny4KWzQ1XSBLLiBUb2RhLCBULiBTaGltaXp1LCBhbmQgSS4gU2FuZW1hc2EsIOKAnERvdWJsZSBTY2hvdHRreSBEaW9kZS1UeXBlIEdhcyBTZW5zb3IgZm9yIERpc2NyaW1pbmF0aXZlCkRldGVjdGlvbiBvZiBQaG9zcGhpbmUgYW5kIEh5ZHJvZ2VuLOKAnSBBbmFseXRpY2FsIFNjaWVuY2VzLCB2b2wuIDExLCBBcHIuIDE5OTUuCls0Nl0gTS4gU3UsIFMuIExpLCBhbmQgVi4gRHJhdmlkLCDigJxNaW5pYXR1cml6ZWQgQ2hlbWljYWwgTXVsdGlwbGV4ZWQgU2Vuc29yIEFycmF5LOKAnSBKb3VybmFsIG9mIHRoZSBBbWVyaWNhbgpDaGVtaWNhbCBTb2NpZXR5LCB2b2wuIDEyNSwgQXVnLiAyMDAzLCBwcC4gOTkzMC05OTMxLgoKNjgKCgxbNDddIFkuUy4gS2ltIGV0IGFsLiwg4oCcUm9vbS10ZW1wZXJhdHVyZSBzZW1pY29uZHVjdG9yIGdhcyBzZW5zb3IgYmFzZWQgb24gbm9uc3RvaWNoaW9tZXRyaWMgdHVuZ3N0ZW4gb3hpZGUKbmFub3JvZCBmaWxtLOKAnSBBcHBsaWVkIFBoeXNpY3MgTGV0dGVycywgdm9sLiA4NiwgTWF5LiAyMDA1LCBwcC4gMjEzMTA1LTMuCls0OF0gVC5KLkEuUi4gSGl0Y2ggYW5kIEMuTC4gSG9uZXlib3VybmUsIOKAnFZhcG91ciBzZW5zaW5nIHByb3BlcnRpZXMgb2YgYSBjYWRtaXVtIG94aWRlLWFudGltb255IG94aWRlCnN5c3RlbSBjZXJhbWljLCBDZDJTYjJPNi44LOKAnSBKb3VybmFsIG9mIE1hdGVyaWFscyBDaGVtaXN0cnksIHZvbC4gNiwgMTk5NiwgcHAuIDI4NS0yODguCls0OV0gTi5WLiBMYXZyaWssIE0uSi4gU2VwYW5pYWssIGFuZCBQLkcuIERhdHNrb3MsIOKAnENhbnRpbGV2ZXIgdHJhbnNkdWNlcnMgYXMgYSBwbGF0Zm9ybSBmb3IgY2hlbWljYWwgYW5kCmJpb2xvZ2ljYWwgc2Vuc29ycyzigJ0gUmV2aWV3IG9mIFNjaWVudGlmaWMgSW5zdHJ1bWVudHMsIHZvbC4gNzUsIEp1bC4gMjAwNCwgcHAuIDIyMjktMjI1My4KWzUwXSBQLlMuIFdhZ2dvbmVyIGFuZCBILkcuIENyYWlnaGVhZCwg4oCcTWljcm8tYW5kIG5hbm9tZWNoYW5pY2FsIHNlbnNvcnMgZm9yIGVudmlyb25tZW50YWwsIGNoZW1pY2FsLCBhbmQKYmlvbG9naWNhbCBkZXRlY3Rpb24s4oCdIExhYiBvbiBhIENoaXAsIHZvbC4gNywgMjAwNywgcHAuIDEyMzgtMTI1NS4KWzUxXSBNLksuIEJhbGxlciBldCBhbC4sIOKAnEEgY2FudGlsZXZlciBhcnJheS1iYXNlZCBhcnRpZmljaWFsIG5vc2Us4oCdIFVsdHJhbWljcm9zY29weSwgdm9sLiA4MiwgRmViLiAyMDAwLCBwcC4gMS05LgpbNTJdIEEuIEhpZXJsZW1hbm4gYW5kIEguIEJhbHRlcywg4oCcQ01PUy1iYXNlZCBjaGVtaWNhbCBtaWNyb3NlbnNvcnMs4oCdIFRoZSBBbmFseXN0LCB2b2wuIDEyOCwgMjAwMywgcHAuIDE1MjguCls1M10gVC5BLiBCZXR0cyBldCBhbC4sIOKAnFNlbGVjdGl2aXR5IG9mIGNoZW1pY2FsIHNlbnNvcnMgYmFzZWQgb24gbWljcm8tY2FudGlsZXZlcnMgY29hdGVkIHdpdGggdGhpbiBwb2x5bWVyCmZpbG1zLOKAnSBBbmFseXRpY2EgQ2hpbWljYSBBY3RhLCB2b2wuIDQyMiwgMjAwMCwgcHAuIDg5LTk5LgpbNTRdIFAuRy4gRGF0c2tvcyBldCBhbC4sIOKAnENoZW1pY2FsIGRldGVjdGlvbiBiYXNlZCBvbiBhZHNvcnB0aW9uLWluZHVjZWQgYW5kIHBob3RvaW5kdWNlZCBzdHJlc3NlcyBpbgptaWNyb2VsZWN0cm9tZWNoYW5pY2FsIHN5c3RlbXMgZGV2aWNlcyzigJ0gSm91cm5hbCBvZiBWYWN1dW0gU2NpZW5jZSAmIFRlY2hub2xvZ3kgQjogTWljcm9lbGVjdHJvbmljcwphbmQgTmFub21ldGVyIFN0cnVjdHVyZXMsIHZvbC4gMTksIDIwMDEsIHAuIDExNzMuCls1NV0gUC4gTGkgYW5kIFguIExpLCDigJxBIHNpbmdsZS1zaWRlZCBtaWNyb21hY2hpbmVkIHBpZXpvcmVzaXN0aXZlIFNpTyAyIGNhbnRpbGV2ZXIgc2Vuc29yIGZvciB1bHRyYS1zZW5zaXRpdmUKZGV0ZWN0aW9uIG9mIGdhc2VvdXMgY2hlbWljYWxzLOKAnSBKb3VybmFsIG9mIE1pY3JvbWVjaGFuaWNzIGFuZCBNaWNyb2VuZ2luZWVyaW5nLCB2b2wuIDE2LCAyMDA2LCBwcC4KMjUzOS0yNTQ2LgpbNTZdIEguTC4gVHVsbGVyIGFuZCBSLiBNbGNhaywg4oCcSW5vcmdhbmljIHNlbnNvcnMgdXRpbGl6aW5nIE1FTVMgYW5kIG1pY3JvZWxlY3Ryb25pYyB0ZWNobm9sb2dpZXMs4oCdIEN1cnJlbnQKT3BpbmlvbiBpbiBTb2xpZCBTdGF0ZSBhbmQgTWF0ZXJpYWxzIFNjaWVuY2UsIHZvbC4gMywgT2N0LiAxOTk4LCBwcC4gNTAxLTUwNC4KWzU3XSBYLkouIEh1YW5nIGFuZCBZLksuIENob2ksIOKAnENoZW1pY2FsIHNlbnNvcnMgYmFzZWQgb24gbmFub3N0cnVjdHVyZWQgbWF0ZXJpYWxzLOKAnSBTZW5zb3JzICYgQWN0dWF0b3JzOiBCLgpDaGVtaWNhbCwgdm9sLiAxMjIsIDIwMDcsIHBwLiA2NTktNjcxLgpbNThdIEUuUy4gU25vdyBldCBhbC4sIOKAnENoZW1pY2FsIERldGVjdGlvbiB3aXRoIGEgU2luZ2xlLVdhbGxlZCBDYXJib24gTmFub3R1YmUgQ2FwYWNpdG9yLOKAnSBTY2llbmNlLCB2b2wuCjMwNywgMjAwNSwgcHAuIDE5NDItMTk0NS4KWzU5XSBaaG9uZyBMaW4gV2FuZywg4oCcRnVuY3Rpb25hbCBPeGlkZSBOYW5vYmVsdHM6IE1hdGVyaWFscywgUHJvcGVydGllcyBhbmQgUG90ZW50aWFsIEFwcGxpY2F0aW9ucyBpbgpOYW5vc3lzdGVtcyBhbmQgQmlvdGVjaG5vbG9neSzigJ0gQXByLiAyMDA0OwpodHRwOi8vYXJqb3VybmFscy5hbm51YWxyZXZpZXdzLm9yZy9kb2kvYWJzLzEwLjExNDYlMkZhbm51cmV2LnBoeXNjaGVtLjU1LjA5MTYwMi4wOTQ0MTYuCls2MF0gVC4gU29tZXlhIGV0IGFsLiwg4oCcQWxjb2hvbCB2YXBvciBzZW5zb3JzIGJhc2VkIG9uIHNpbmdsZS13YWxsZWQgY2FyYm9uIG5hbm90dWJlIGZpZWxkIGVmZmVjdCB0cmFuc2lzdG9ycyzigJ0KTmFubyBMZXR0LCB2b2wuIDMsIDIwMDMsIHBwLiA4NzfigJM4ODEuCls2MV0gRC4gWmhhbmcgZXQgYWwuLCDigJxEb3BpbmcgZGVwZW5kZW50IE5IW3N1YiAzXSBzZW5zaW5nIG9mIGluZGl1bSBveGlkZSBuYW5vd2lyZXMs4oCdIEFwcGxpZWQgUGh5c2ljcwpMZXR0ZXJzLCB2b2wuIDgzLCAyMDAzLCBwcC4gMTg0NS0xODQ3LgpbNjJdIFguVC4gWmhvdSBldCBhbC4sIOKAnFNpbGljb24gbmFub3dpcmVzIGFzIGNoZW1pY2FsIHNlbnNvcnMs4oCdIENoZW1pY2FsIFBoeXNpY3MgTGV0dGVycywgdm9sLiAzNjksIEZlYi4gMjAwMywKcHAuIDIyMC0yMjQuCls2M10gSi4gSmFuZywgTS4gQ2hhbmcsIGFuZCBILiBZb29uLCDigJxDaGVtaWNhbCBTZW5zb3JzIEJhc2VkIG9uIEhpZ2hseSBDb25kdWN0aXZlIFBvbHkgKDMsIDRldGh5bGVuZWRpb3h5dGhpb3BoZW5lKSBOYW5vcm9kcyzigJ0gQWR2YW5jZWQgTWF0ZXJpYWxzKEZSRyksIHZvbC4gMTcsIDIwMDUsIHBwLiAxNjE2LTE2MjAuCls2NF0gSi4gSmFuZyBhbmQgSi4gQmFlLCDigJxDYXJib24gbmFub2ZpYmVyL3BvbHlweXJyb2xlIG5hbm9jYWJsZSBhcyB0b3hpYyBnYXMgc2Vuc29yLOKAnSBTZW5zb3JzIGFuZCBhY3R1YXRvcnMuIEIsCkNoZW1pY2FsLCB2b2wuIDEyMiwgMjAwNywgcHAuIDctMTMuCls2NV0gSS4gUmFpYmxlIGV0IGFsLiwg4oCcVjJPNSBuYW5vZmlicmVzOiBub3ZlbCBnYXMgc2Vuc29ycyB3aXRoIGV4dHJlbWVseSBoaWdoIHNlbnNpdGl2aXR5IGFuZCBzZWxlY3Rpdml0eSB0bwphbWluZXMs4oCdIFNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiAxMDYsIE1heS4gMjAwNSwgcHAuIDczMC03MzUuCls2Nl0gVC5BLiBEaWNraW5zb24gZXQgYWwuLCDigJxBIGNoZW1pY2FsLWRldGVjdGluZyBzeXN0ZW0gYmFzZWQgb24gYSBjcm9zcy1yZWFjdGl2ZSBvcHRpY2FsIHNlbnNvciBhcnJheSzigJ0gTmF0dXJlLAp2b2wuIDM4MiwgMTk5NiwgcHAuIDY5Ny03MDAuCls2N10gQy4gRGkgTmF0YWxlIGV0IGFsLiwg4oCcUG9ycGh5cmlucy1iYXNlZCBvcHRvLWVsZWN0cm9uaWMgbm9zZSBmb3Igdm9sYXRpbGUgY29tcG91bmRzIGRldGVjdGlvbizigJ0gU2Vuc29ycyAmCkFjdHVhdG9yczogQi4gQ2hlbWljYWwsIHZvbC4gNjUsIDIwMDAsIHBwLiAyMjAtMjI2LgpbNjhdIEhvbmV5d2VsbCBBbmFseXRpY3MsIOKAnENoZW1jYXNzZXR0ZeKAnTsgaHR0cDovL3d3dy5ob25leXdlbGxhbmFseXRpY3MuY29tL2RvY0dhbGxlcnkvOTM2LlBERi4KCjY5CgoMWzY5XSBLLiBOYWthZ2F3YSBldCBhbC4sIOKAnEhDbCBnYXMgc2Vuc2luZyBwcm9wZXJ0aWVzIG9mIFRQUEgyIGRpc3BlcnNlZCBpbiB2YXJpb3VzIGNvcG9seW1lcnMs4oCdIFNlbnNvcnMgYW5kCkFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiA2NSwgSnVuLiAyMDAwLCBwcC4gMTM4LTE0MC4KWzcwXSBBLiBDdXNhbm8gZXQgYWwuLCDigJxOb3ZlbCBPcHRvY2hlbWljYWwgU2Vuc29ycyBCYXNlZCBvbiBIb2xsb3cgRmliZXJzIGFuZCBTaW5nbGUgV2FsbGVkIENhcmJvbgpOYW5vdHViZXMs4oCdIFBob3RvbmljcyBUZWNobm9sb2d5IExldHRlcnMsIElFRUUsIHZvbC4gMTgsIDIwMDYsIHBwLiAyNDMxLTI0MzMuCls3MV0gQS4gQWJkZWxnaGFuaSBldCBhbC4sIOKAnE9wdGljYWwgZmlicmUgc2Vuc29yIGNvYXRlZCB3aXRoIHBvcm91cyBzaWxpY2EgbGF5ZXJzIGZvciBnYXMgYW5kIGNoZW1pY2FsIHZhcG91cgpkZXRlY3Rpb24s4oCdIFNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiA0NCwgT2N0LiAxOTk3LCBwcC4gNDk1LTQ5OC4KWzcyXSBDLiBSb25vdCBldCBhbC4sIOKAnE9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2Ugb2YgYSBzcGVjaWZpY2FsbHkgY29hdGVkIGludHJpbnNpYyBvcHRpY2FsLWZpYnJlIHNlbnNvciBmb3IgdGhlCmRldGVjdGlvbiBvZiBhbGthbmUgY29tcG91bmRzLOKAnSBTZW5zb3JzIGFuZCBBY3R1YXRvcnMgQTogUGh5c2ljYWwsIHZvbC4gNDIsIEFwci4gMTk5NCwgcHAuIDUyOS01MzQuCls3M10gVy4gUWluIGV0IGFsLiwg4oCcT3B0aWNhbCBTZW5zb3IgZm9yIEFtaW5lIFZhcG9ycyBCYXNlZCBvbiBEaW1lci1Nb25vbWVyIEVxdWlsaWJyaXVtIG9mIEluZGl1bShJSUkpCk9jdGFldGh5bHBvcnBoeXJpbiBpbiBhIFBvbHltZXJpYyBGaWxtLOKAnSBBbmFseXRpY2FsIENoZW1pc3RyeSwgdm9sLiA3NSwgSmFuLiAyMDAzLCBwcC4gMzMyLTM0MC4KWzc0XSBNLiBDb25zYWxlcyBldCBhbC4sIOKAnENhcmJvbiBuYW5vdHViZXMgdGhpbiBmaWxtcyBmaWJlciBvcHRpYyBhbmQgYWNvdXN0aWMgVk9DcyBzZW5zb3JzOiBQZXJmb3JtYW5jZXMKYW5hbHlzaXMs4oCdIFNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiAxMTgsIE9jdC4gMjAwNiwgcHAuIDIzMi0yNDIuCls3NV0gQy4gQmFyaWFpbiBldCBhbC4sIOKAnE9wdGljYWwgZmliZXIgc2Vuc29yIGJhc2VkIG9uIGx1dGV0aXVtIGJpc3BodGhhbG9jeWFuaW5lIGZvciB0aGUgZGV0ZWN0aW9uIG9mIGdhc2VzIHVzaW5nCnN0YW5kYXJkIHRlbGVjb21tdW5pY2F0aW9uIHdhdmVsZW5ndGhzLOKAnSBTZW5zb3JzIGFuZCBBY3R1YXRvcnMgQjogQ2hlbWljYWwsIHZvbC4gOTMsIEF1Zy4gMjAwMywgcHAuCjE1My0xNTguCls3Nl0gVi4gQnJvd24sIOKAnFNlbnNvciBTZWxlY3Rpb24gZm9yIEhhbmQtSGVsZCBQb3J0YWJsZSBHYXMgRGV0ZWN0b3JzLOKAnSAyMDA2LgpbNzdd4oCcUG9seW1lcizigJ0gV2lraXBlZGlhOyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BvbHltZXIuCls3OF0gQi4gQWRoaWthcmkgYW5kIFMuIE1hanVtZGFyLCDigJxQb2x5bWVycyBpbiBzZW5zb3IgYXBwbGljYXRpb25zLOKAnSBQcm9ncmVzcyBpbiBQb2x5bWVyIFNjaWVuY2UsIHZvbC4gMjksCjIwMDQsIHBwLiA2OTktNzY2LgpbNzldIFQuRS4gTWxzbmEgZXQgYWwuLCDigJxDaGVtaWNhcGFjaXRpdmUgbWljcm9zZW5zb3JzIGZvciBjaGVtaWNhbCB3YXJmYXJlIGFnZW50IGFuZCB0b3hpYyBpbmR1c3RyaWFsIGNoZW1pY2FsCmRldGVjdGlvbizigJ0gU2Vuc29ycyBhbmQgYWN0dWF0b3JzLiBCLCBDaGVtaWNhbCwgdm9sLiAxMTYsIDIwMDYsIHBwLiAxOTItMjAxLgpbODBdIEouQS4gQ292aW5ndG9uIGV0IGFsLiwg4oCcQ29uZHVjdGl2ZSBwb2x5bWVyIGdhdGUgRkVUIGRldmljZXMgZm9yIHZhcG91ciBzZW5zaW5nLOKAnSBDaXJjdWl0cywgRGV2aWNlcyBhbmQKU3lzdGVtcywgSUVFIFByb2NlZWRpbmdzIFtzZWUgYWxzbyBJRUUgUHJvY2VlZGluZ3MgRy1DaXJjdWl0cywgRGV2aWNlcyBhbmQgU3lzdGVtcywgdm9sLiAxNTEsIDIwMDQsIHBwLgozMjYtMzM0LgpbODFdIEQuIFN1dGFyIGV0IGFsLiwg4oCcUHJlcGFyYXRpb24gb2YgbmFub2ZpYnJvdXMgcG9seWFuaWxpbmUgZmlsbXMgYW5kIHRoZWlyIGFwcGxpY2F0aW9uIGFzIGFtbW9uaWEgZ2FzIHNlbnNvcizigJ0KU2Vuc29ycyBhbmQgQWN0dWF0b3JzIEI6IENoZW1pY2FsLCB2b2wuIDEyOCwgRGVjLiAyMDA3LCBwcC4gMjg2LTI5Mi4KWzgyXSBILiBYaWUgZXQgYWwuLCDigJxHYXMgc2Vuc29yIGFycmF5cyBiYXNlZCBvbiBwb2x5bWVyLWNhcmJvbiBibGFjayB0byBkZXRlY3Qgb3JnYW5pYyB2YXBvcnMgYXQgbG93CmNvbmNlbnRyYXRpb24s4oCdIFNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiAxMTMsIDIwMDYsIHBwLiA4ODctODkxLgpbODNdIFkuUy4gS2ltIGV0IGFsLiwg4oCcUG9ydGFibGUgZWxlY3Ryb25pYyBub3NlIHN5c3RlbSBiYXNlZCBvbiB0aGUgY2FyYm9uIGJsYWNrLXBvbHltZXIgY29tcG9zaXRlIHNlbnNvcgphcnJheSzigJ0gU2Vucy4gQWN0dWF0b3JzIEIsIHZvbC4gMTA4LCAyMDA1LCBwLiAyLgpbODRdIEMuSy4gSG8gZXQgYWwuLCDigJxGaWVsZCBEZW1vbnN0cmF0aW9ucyBvZiBDaGVtaXJlc2lzdG9yIGFuZCBTdXJmYWNlIEFjb3VzdGljIFdhdmUgTWljcm9jaGVtaWNhbCBTZW5zb3JzCmF0IHRoZSBOZXZhZGEgVGVzdCBTaXRlLOKAnSBTQU5EMjAwMy0wNzk5LCBTYW5kaWEgTmF0aW9uYWwgTGFib3JhdG9yaWVzIFJlcG9ydCwgQWxidXF1ZXJxdWUsIE5NLCAyMDAzLgpbODVdIEcuIE1hbiBldCBhbC4sIOKAnFBvbHltZXItQmFzZWQgQ2hlbWljYWwgU2Vuc29ycyBmb3IgQ2xhbmRlc3RpbmUgTGFiIERldGVjdGlvbizigJ0gQ01DIFdvcmtzaG9wIG9uCk1FTVMgYW5kIE1pY3JvZmx1aWRpY3MsIE1vbnRyZWFsLCBRdWViZWMsIENhbmFkYTogMjAwNy4KWzg2XSBTLlYuIFBhdGVsIGV0IGFsLiwg4oCcQ2hlbWljYXBhY2l0aXZlIG1pY3Jvc2Vuc29ycyBmb3Igdm9sYXRpbGUgb3JnYW5pYyBjb21wb3VuZCBkZXRlY3Rpb24s4oCdIFNlbnNvcnMgYW5kCkFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiA5NiwgRGVjLiAyMDAzLCBwcC4gNTQxLTU1My4KWzg3XSBLLiBEb21hbnNreSBldCBhbC4sIOKAnERldmVsb3BtZW50IGFuZCBDYWxpYnJhdGlvbiBvZiBGaWVsZC1FZmZlY3QgVHJhbnNpc3Rvci1CYXNlZCBTZW5zb3IgQXJyYXkgZm9yCk1lYXN1cmVtZW50IG9mIEh5ZHJvZ2VuIGFuZCBBbW1vbmlhIEdhcyBNaXh0dXJlcyBpbiBIdW1pZCBBaXIs4oCdIEFuYWx5dGljYWwgQ2hlbWlzdHJ5LCB2b2wuIDcwLCBGZWIuCjE5OTgsIHBwLiA0NzMtNDgxLgpbODhdIEludGVybmF0aW9uYWwgU2Vuc29yIFRlY2hub2xvZ3ksIOKAnENoYXB0ZXIgMyAtIENhdGFseXRpYyBDb21idXN0aWJsZSBHYXMgU2Vuc29yc+KAnTsKaHR0cDovL3d3dy5pbnRsc2Vuc29yLmNvbS9wZGYvY2F0YWx5dGljYmVhZC5wZGYuCls4OV0gVC4gU2FzYWhhcmEgZXQgYWwuLCDigJxEZXZlbG9wbWVudCBvZiBhIHBwYi1sZXZlbCBzZW5zb3IgYmFzZWQgb24gY2F0YWx5dGljIGNvbWJ1c3Rpb24gZm9yIHRvdGFsIHZvbGF0aWxlCm9yZ2FuaWMgY29tcG91bmRzIGluIGluZG9vciBhaXIs4oCdIFNlbnNvcnMgYW5kIEFjdHVhdG9ycyBCOiBDaGVtaWNhbCwgdm9sLiAxMjYsIE9jdC4gMjAwNywgcHAuIDUzNi01NDMuCls5MF0gQ2FuYWRpYW4gUG9saWNlIFJlc2VhcmNoIENlbnRyZSwg4oCcTWV0aGFtcGhldGFtaW5lIFNlbWluYXIs4oCdIEp1bi4gMjAwNy4KCjcwCgoM
Add Comment
Please, Sign In to add comment