@novasamatech/host-papp 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.papi/descriptors/dist/common-types.d.ts +1483 -1359
- package/.papi/descriptors/dist/descriptors-BLqmZ_vS.js +25 -0
- package/.papi/descriptors/dist/index.d.ts +1 -1
- package/.papi/descriptors/dist/index.js +8 -6
- package/.papi/descriptors/dist/metadataTypes-wXgvb64i.js +3 -0
- package/.papi/descriptors/dist/metadataTypes.d.ts +1 -1
- package/.papi/descriptors/dist/people_lite.d.ts +1175 -1001
- package/.papi/descriptors/dist/people_lite_metadata-CwU9OBGy.js +3 -0
- package/.papi/descriptors/generated.json +1 -1
- package/.papi/descriptors/package.json +1 -1
- package/.papi/metadata/people_lite.scale +0 -0
- package/.papi/polkadot-api.json +3 -3
- package/README.md +85 -79
- package/dist/identity/identifierKey.d.ts +19 -0
- package/dist/identity/identifierKey.js +17 -0
- package/dist/identity/impl.js +12 -17
- package/dist/identity/index.d.ts +2 -0
- package/dist/identity/index.js +1 -0
- package/dist/identity/rpcAdapter.d.ts +5 -1
- package/dist/identity/rpcAdapter.js +9 -3
- package/dist/identity/types.d.ts +9 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/package.json +9 -5
- package/.papi/descriptors/dist/descriptors-D5oN4i7I.js +0 -25
- package/.papi/descriptors/dist/metadataTypes-BaUy_4gO.js +0 -3
- package/.papi/descriptors/dist/people_lite_metadata-Cj1JLFI2.js +0 -3
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const binMeta = "bWV0YRDBDQAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCFBwZW9wbGVfcGFzZW9fcnVudGltZSxSdW50aW1lQ2FsbAABiBhTeXN0ZW0EACQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3lzdGVtLCBSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAEAB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluU3lzdGVtLCBSdW50aW1lPgABACRUaW1lc3RhbXAEALABuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgACADRQYXJhY2hhaW5JbmZvBAC4AckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpbkluZm8sIFJ1bnRpbWU+AAMAUE11bHRpQmxvY2tNaWdyYXRpb25zBAC8AeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAEACBCYWxhbmNlcwQA6AG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgAYQXNzZXRzBAABAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+AAwAJEFzc2V0UmF0ZQQATQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgANAERPcmlnaW5SZXN0cmljdGlvbgQAVQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8T3JpZ2luUmVzdHJpY3Rpb24sIFJ1bnRpbWU+ABEARENvbGxhdG9yU2VsZWN0aW9uBABdAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAYQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBABtAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABxAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAQQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBABFAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACIAHFV0aWxpdHkEAE0DAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAC5AwG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEAMUDAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqACBJZGVudGl0eQQA0QMBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SWRlbnRpdHksIFJ1bnRpbWU+ADIAGFBlb3BsZQQAcQQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlLCBSdW50aW1lPgAzABxNb2JSdWxlBACBBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNb2JSdWxlLCBSdW50aW1lPgA0AChQcm9vZk9mSW5rBACRBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm9vZk9mSW5rLCBSdW50aW1lPgA1ABBHYW1lBACtBAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHYW1lLCBSdW50aW1lPgA3ABRTY29yZQQA6QQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NvcmUsIFJ1bnRpbWU+ADgAIER1bW15RGltBAANBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEdW1teURpbSwgUnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAJQUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlTGl0ZSwgUnVudGltZT4APgAkUmVzb3VyY2VzBAA1BQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXNvdXJjZXMsIFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAEEFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENodW5rc01hbmFnZXIsIFJ1bnRpbWU+AEAAHE1lbWJlcnMEAFEFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnMsIFJ1bnRpbWU+AEMAHENvaW5hZ2UEAFkFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvaW5hZ2UsIFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAmQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVyc05vdGlmaWVyLCBSdW50aW1lPgBFABxBaXJkcm9wBACxBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgBGABhIb25vdXIEALkFAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhvbm91ciwgUnVudGltZT4ARwAQU3VkbwQAxQUBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4A/wAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEsGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDwBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZRgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4oAAAFBgAsAAACMAAwAAAECBgYADQAAAIYADgAAAUFADwIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhRAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGF8AUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUgBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVQAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNYAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHQBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBPAROATgAEAEscGFyZW50X2hlYWRMASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAEwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAUAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1QBREJUcmVlU2V0PFZlYzx1OD4+AABUBCBCVHJlZVNldAQEVAEYAAQANAAAAFgAAAJcAFwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaDwBMEhhc2g6Ok91dHB1dAABGG51bWJlcmABGE51bWJlcgABKHN0YXRlX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAARhkaWdlc3RkARhEaWdlc3QAAGAAAAY4AGQQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzaAE8VmVjPERpZ2VzdEl0ZW0+AABoAAACbABsEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHAAAAMEAAAADAB0BBhPcHRpb24EBFQBeAEIEE5vbmUAAAAQU29tZQQAeAAAAQAAeAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHwMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzgAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOUAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGEAAgBNGZ1bGxfbWVzc2FnZXOIATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOMAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIgAAAKEAIwAAAKQAJAIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoPAE0c3BfY29yZTo6SDI1NgAAlAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZgACAE0ZnVsbF9tZXNzYWdlc6QBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6gBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJgAAAQInKAAnAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKAIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKQAAAKYAKgAAAKsAKwAAAQInJAAsAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e0ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAAABigAuAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy68DERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29ywAFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29y0AFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTUAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9y2AGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwAQYT3B0aW9uBARUAcQBCBBOb25lAAAAEFNvbWUEAMQAAAEAAMQIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAcgsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAzAGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAMgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADMCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgHILEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3LQAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAA0AQYT3B0aW9uBARUAcgBCBBOb25lAAAAEFNvbWUEAMgAAAEAANQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADYCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQB3AEIIFNwZWNpZmljBADgARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTUASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvcuQBPE9wdGlvbjxWZWM8dTg+PgABAADcDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA4AAAAtwA5AQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAOgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVl7AEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWXsAShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZewBKFQ6OkJhbGFuY2UAAxhZAVNhbWUgYXMgdGhlIFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90YGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgDoOTklIG9mIHRoZSB0aW1lIHlvdSB3YW50IFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBpbnN0ZWFkLgDwW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdOiBzdHJ1Y3QuUGFsbGV0Lmh0bWwjbWV0aG9kLnRyYW5zZmVyMHRyYW5zZmVyX2FsbAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmX0ARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW508AEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG/4AURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZewBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9u/AFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRh7AEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWXsAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZfQBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7AAABvAA8AAABQcA9AAABQAA+AAAAgQA/Aw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAAQEMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZfABKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW509AEQYm9vbAABLG1pbl9iYWxhbmNl7AEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW507AEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudOwBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudOwBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTsAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW507AEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVu9AEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2XsAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudPQBEGJvb2wAASRpc19mcm96ZW70ARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudOwBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudOwBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybvQBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2XwAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkBQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZAUBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmX0ARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQFAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzQQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FARAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yCQEBJEp1bmN0aW9ucwAACQEQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQADQEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAJQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAKQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQALQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAMQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQANQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAOQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAPQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAAANAQAAAwEAAAARAQARARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrFQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmsVAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrFQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA7AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkHQEBGEJvZHlJZAABEHBhcnQhAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAZAQEkTmV0d29ya0lkAAkAABUBBBhPcHRpb24EBFQBGQEBCBBOb25lAAAAEFNvbWUEABkBAAABAAAZARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAHQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAACEBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAAAlAQAAAwIAAAARAQApAQAAAwMAAAARAQAtAQAAAwQAAAARAQAxAQAAAwUAAAARAQA1AQAAAwYAAAARAQA5AQAAAwcAAAARAQA9AQAAAwgAAAARAQBBAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUUBBFMAAAQASQEBGFZlYzxUPgAARQEMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlBQEBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxl9AEQYm9vbAAASQEAAAJFAQBNAQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0EENhbGwEBFQAAQwYY3JlYXRlCAEoYXNzZXRfa2luZAUBAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGVRAQEkRml4ZWRVMTI4AAAQDQFJbml0aWFsaXplIGEgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRh1cGRhdGUIAShhc3NldF9raW5kBQEBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZVEBASRGaXhlZFUxMjgAARAFAVVwZGF0ZSB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRhyZW1vdmUEAShhc3NldF9raW5kBQEBREJveDxUOjpBc3NldEtpbmQ+AAIQJQFSZW1vdmUgYW4gZXhpc3RpbmcgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKQQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RAQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCRGaXhlZFUxMjgAAAQA8AEQdTEyOAAAVQEMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHlZAQFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuWQEMUHBlb3BsZV9wYXNlb19ydW50aW1lGHBlb3BsZUBSZXN0cmljdGVkRW50aXR5AAEYNFBlcnNvbmFsQWxpYXMEAAgBFEFsaWFzAAAAQFBlcnNvbmFsSWRlbnRpdHkEACgBDHU2NAABAERSZWZlcnJlZENhbmRpZGF0ZQQABAEkQWNjb3VudElkAAIASEFjY291bnRQYXJ0aWNpcGFudAQABAEkQWNjb3VudElkAAMAQEludml0ZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAAEAChMaXRlUGVyc29uBAAEASRBY2NvdW50SWQABQAAXQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXf4AURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmTwATBCYWxhbmNlT2Y8VD4AAhx4U2V0IHRoZSBjYW5kaWRhY3kgYm9uZCBhbW91bnQuAFEBSWYgdGhlIGNhbmRpZGFjeSBib25kIGlzIGluY3JlYXNlZCBieSB0aGlzIGNhbGwsIGFsbCBjdXJyZW50IGNhbmRpZGF0ZXMgd2hpY2ggaGF2ZSBhTQFkZXBvc2l0IGxvd2VyIHRoYW4gdGhlIG5ldyBib25kIHdpbGwgYmUga2lja2VkIGZyb20gdGhlIGxpc3QgYW5kIGdldCB0aGVpciBkZXBvc2l0cxRiYWNrLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLlRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAxBBAVJlZ2lzdGVyIHRoaXMgYWNjb3VudCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gVGhlIGFjY291bnQgbXVzdCAoYSkgYWxyZWFkeSBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cyBhbmQgKGIpIGJlIGFibGUgdG8gcmVzZXJ2ZSB0aGUgYENhbmRpZGFjeUJvbmRgLgDcVGhpcyBjYWxsIGlzIG5vdCBhdmFpbGFibGUgdG8gYEludnVsbmVyYWJsZWAgY29sbGF0b3JzLjBsZWF2ZV9pbnRlbnQABBRVAURlcmVnaXN0ZXIgYG9yaWdpbmAgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIE5vdGUgdGhhdCB0aGUgY29sbGF0b3IgY2FuIG9ubHkgbGVhdmUgb24NAXNlc3Npb24gY2hhbmdlLiBUaGUgYENhbmRpZGFjeUJvbmRgIHdpbGwgYmUgdW5yZXNlcnZlZCBpbW1lZGlhdGVseS4AGQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FuZGlkYXRlcyB3b3VsZCBkcm9wIGJlbG93XGBNaW5FbGlnaWJsZUNvbGxhdG9yc2AuQGFkZF9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABRBFAUFkZCBhIG5ldyBhY2NvdW50IGB3aG9gIHRvIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGB3aG9gIG11c3QgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuIElmIGB3aG9gIGlzIGEgY2FuZGlkYXRlLCB0aGV5IHdpbGwgYmUgcmVtb3ZlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5McmVtb3ZlX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAGEGEBUmVtb3ZlIGFuIGFjY291bnQgYHdob2AgZnJvbSB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgSW52dWxuZXJhYmxlc2AgbXVzdChiZSBzb3J0ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuLHVwZGF0ZV9ib25kBAEsbmV3X2RlcG9zaXTwATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXTwATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuYQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c2UBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5lAQhQcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmFpAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAaQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAbQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3R1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2XBAQFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3R1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5dQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHMFAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdHUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnl1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0cwUDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2UJAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodAECARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbgUBATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u1AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbnUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb251AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdHUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnl1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0cwUDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0OQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdHUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnl1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0cwUDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0OQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZPQBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3R1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5dQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHMFAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRzBQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnl1AQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0dQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHMFAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZTUDAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkOQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZTUDAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdMEBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXQ5AgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcnUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlcz0DASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcnUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAHkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAjQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQABQEBMHY1OjpMb2NhdGlvbgAFAAB5ARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcn0BASRKdW5jdGlvbnMAAH0BEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBACBAQEgSnVuY3Rpb24AAQAIWDIIAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAAIACFgzDACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAAMACFg0EACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24ABAAIWDUUAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAAUACFg2GACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAAYACFg3HACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24ABwAIWDggAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAACBAQEgSnVuY3Rpb24AAIEBASBKdW5jdGlvbgAAgQEBIEp1bmN0aW9uAAgAAIEBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrhQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmuFAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrhQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA7AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkHQEBGEJvZHlJZAABEHBhcnQhAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBACJAQEkTmV0d29ya0lkAAkAAIUBBBhPcHRpb24EBFQBiQEBCBBOb25lAAAAEFNvbWUEAIkBAAABAACJARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAACNARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9ykQEBJEp1bmN0aW9ucwAAkQEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAlQEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQApQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAqQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQArQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAsQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAtQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAuQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAvQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAACVAQAAAwEAAACZAQCZARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrnQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmudAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrnQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQA7AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkHQEBGEJvZHlJZAABEHBhcnQhAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAChAQEkTmV0d29ya0lkAAkAAJ0BBBhPcHRpb24EBFQBoQEBCBBOb25lAAAAEFNvbWUEAKEBAAABAAChARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAKUBAAADAgAAAJkBAKkBAAADAwAAAJkBAK0BAAADBAAAAJkBALEBAAADBQAAAJkBALUBAAADBgAAAJkBALkBAAADBwAAAJkBAL0BAAADCAAAAJkBAMEBCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAxQEBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAA9AgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAIkCAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAADFAQwMeGNtCHYzDFhjbQQQQ2FsbAAABADJAQFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAyQEAAALNAQDNAQwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANEBASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEANEBASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADRAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl8QEBIFJlc3BvbnNlAAEobWF4X3dlaWdodAECARhXZWlnaHQAARxxdWVyaWVyHQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz0QEBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnl5AQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9EBASxNdWx0aUFzc2V0cwABEGRlc3R5AQE0TXVsdGlMb2NhdGlvbgABDHhjbcUBARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmQhAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QBAgEYV2VpZ2h0AAEQY2FsbCUCAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAH0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEACkCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMtAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5eQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdHkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUtAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnTRAQEsTXVsdGlBc3NldHMAARxtYXhpbWFs9AEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZXkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdHkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8pAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMtAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz2QEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQ5AgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAMUBASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAMUBASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz0QEBLE11bHRpQXNzZXRzAAEYdGlja2V0eQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0AQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADRAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEANEBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAB0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAPUBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAFQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbykCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEACkCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAgQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JriQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9ufQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbcUBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V02QEBKE11bHRpQXNzZXQAASB1bmxvY2tlcnkBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTZAQEoTXVsdGlBc3NldAABGHRhcmdldHkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTZAQEoTXVsdGlBc3NldAABFG93bmVyeQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V02QEBKE11bHRpQXNzZXQAARhsb2NrZXJ5AQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd/QBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbh0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAA0QEQDHhjbQh2MyhtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEANUBATxWZWM8TXVsdGlBc3NldD4AANUBAAAC2QEA2QEQDHhjbQh2MyhtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlk3QEBHEFzc2V0SWQAAQxmdW7hAQEsRnVuZ2liaWxpdHkAAN0BEAx4Y20IdjMobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBAB5AQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQACAEgW3U4OyAzMl0AAQAA4QEQDHhjbQh2MyhtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADsARB1MTI4AAAALE5vbkZ1bmdpYmxlBADlAQE0QXNzZXRJbnN0YW5jZQABAADlARAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAOwBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQA6QEBHFt1ODsgOF0AAwAcQXJyYXkxNgQA7QEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAOkBAAADCAAAAAwA7QEAAAMQAAAADADxAQwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADRAQEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAD1AQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAAUCAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAFQIBOE1heWJlRXJyb3JDb2RlAAUAAPUBBBhPcHRpb24EBFQB+QEBCBBOb25lAAAAEFNvbWUEAPkBAAABAAD5AQAABAg4/QEA/QEQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAABAgEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAAABAgwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAAAUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCQIEUwAABAARAgEYVmVjPFQ+AAAJAgwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZQ0CAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lDQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAAANAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AABECAAACCQIAFQIMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBAAZAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEABkCAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAAAZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAB0CBBhPcHRpb24EBFQBeQEBCBBOb25lAAAAEFNvbWUEAHkBAAABAAAhAgwMeGNtCHYzKE9yaWdpbktpbmQAARAYTmF0aXZlAAAAQFNvdmVyZWlnbkFjY291bnQAAQAkU3VwZXJ1c2VyAAIADFhjbQADAAAlAgwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAApAgwMeGNtCHYzRFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbnkBATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodAECARhXZWlnaHQAAC0CEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADRAQEsTXVsdGlBc3NldHMAAAAQV2lsZAQAMQIBOFdpbGRNdWx0aUFzc2V0AAEAADECEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZN0BARxBc3NldElkAAEMZnVuNQIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTdAQEcQXNzZXRJZAABDGZ1bjUCATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAA1AhAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAADkCDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEAAECARhXZWlnaHQAAQAAPQIMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABABBAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAQQIAAAJFAgBFAgwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQASQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQASQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VhAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0AQIBGFdlaWdodAABHHF1ZXJpZXJ1AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzSQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5jQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzSQIBGEFzc2V0cwABEGRlc3SNAQEgTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kIQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0AQIBGFdlaWdodAABEGNhbGwlAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACRAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAeQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c30CASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5jQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAARBkZXN0jQEBIExvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmV9AgEsQXNzZXRGaWx0ZXIAARB3YW50SQIBGEFzc2V0cwABHG1heGltYWz0ARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzfQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZY0BASBMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAARBkZXN0jQEBIExvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm95AgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc1ECARRBc3NldAABMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAPQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAPQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNJAgEYQXNzZXRzAAEYdGlja2V0jQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodAECARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQASQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQASQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAHUCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAD1AQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEABUCAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm95AgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAB5AgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAJkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya6EBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbpEBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRRAgEUQXNzZXQAASB1bmxvY2tlco0BASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0UQIBFEFzc2V0AAEYdGFyZ2V0jQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRRAgEUQXNzZXQAARRvd25lco0BASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRRAgEUQXNzZXQAARhsb2NrZXKNAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXf0ARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBACNAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0OQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2ludQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAASQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABABNAgEoVmVjPEFzc2V0PgAATQIAAAJRAgBRAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkVQIBHEFzc2V0SWQAAQxmdW5ZAgEsRnVuZ2liaWxpdHkAAFUCECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAI0BASBMb2NhdGlvbgAAWQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADsARB1MTI4AAAALE5vbkZ1bmdpYmxlBABdAgE0QXNzZXRJbnN0YW5jZQABAABdAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAOwBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQA6QEBHFt1ODsgOF0AAwAcQXJyYXkxNgQA7QEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAGECDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQASQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAPUBAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAZQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAAVAgE4TWF5YmVFcnJvckNvZGUABQAAZQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFpAgRTAAAEAHECARhWZWM8VD4AAGkCDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWVtAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZW0CAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAbQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABxAgAAAmkCAHUCBBhPcHRpb24EBFQBjQEBCBBOb25lAAAAEFNvbWUEAI0BAAABAAB5Agwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9ujQEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodAECARhXZWlnaHQAAH0CECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQASQIBGEFzc2V0cwAAABBXaWxkBACBAgEkV2lsZEFzc2V0AAEAAIECECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRVAgEcQXNzZXRJZAABDGZ1boUCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkVQIBHEFzc2V0SWQAAQxmdW6FAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAhQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAACJAgwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAI0CAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACNAgAAApECAJECDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BACVAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAlQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BACVAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZa0CASBSZXNwb25zZQABKG1heF93ZWlnaHQBAgEYV2VpZ2h0AAEccXVlcmllcs0CAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHOVAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnkFAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOVAgEYQXNzZXRzAAEQZGVzdAUBASBMb2NhdGlvbgABDHhjbYkCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmQhAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHTRAgE4T3B0aW9uPFdlaWdodD4AARBjYWxsJQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQACQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEANUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPZAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeQUBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz2QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUBASBMb2NhdGlvbgABDHhjbYkCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl2QIBLEFzc2V0RmlsdGVyAAEQd2FudJUCARhBc3NldHMAARxtYXhpbWFs9AEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c9kCASxBc3NldEZpbHRlcgABHHJlc2VydmUFAQEgTG9jYXRpb24AAQx4Y22JAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz2QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUBASBMb2NhdGlvbgABDHhjbYkCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv1QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz2QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOdAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQ5AgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAIkCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAIkCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzlQIBGEFzc2V0cwABGHRpY2tldAUBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQBAgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAJUCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAJUCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADNAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAsQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAAVAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv1QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA1QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbYkCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0nQIBFEFzc2V0AAEgdW5sb2NrZXIFAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldJ0CARRBc3NldAABGHRhcmdldAUBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0nQIBFEFzc2V0AAEUb3duZXIFAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0nQIBFEFzc2V0AAEYbG9ja2VyBQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF39AEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQABQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbs0CAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldJ0CARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb24FAQEgTG9jYXRpb24AASxyZW1vdGVfZmVlc+UCAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW70ARBib29sAAEYYXNzZXRz7QIB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbYkCARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW71AgFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtiQIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRz+QIBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAACVAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAJkCAShWZWM8QXNzZXQ+AACZAgAAAp0CAJ0CECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWShAgEcQXNzZXRJZAABDGZ1bqUCASxGdW5naWJpbGl0eQAAoQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQABQEBIExvY2F0aW9uAAClAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAOwBEHUxMjgAAAAsTm9uRnVuZ2libGUEAKkCATRBc3NldEluc3RhbmNlAAEAAKkCECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA7AEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BADpAQEcW3U4OyA4XQADABxBcnJheTE2BADtAQEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAArQIMLHN0YWdpbmdfeGNtCHY1IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBACVAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAsQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAC9AgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEABUCAThNYXliZUVycm9yQ29kZQAFAACxAgQYT3B0aW9uBARUAbUCAQgQTm9uZQAAABBTb21lBAC1AgAAAQAAtQIAAAQIOLkCALkCEAx4Y20IdjUYdHJhaXRzFEVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkBAABAgEYV2VpZ2h0ACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAC9AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcECBFMAAAQAyQIBGFZlYzxUPgAAwQIMLHN0YWdpbmdfeGNtCHY1KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZcUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lxQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADFAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAMkCAAACwQIAzQIEGE9wdGlvbgQEVAEFAQEIEE5vbmUAAAAQU29tZQQABQEAAAEAANECBBhPcHRpb24EBFQBAQIBCBBOb25lAAAAEFNvbWUEAAECAAABAADVAgwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uBQEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodAECARhXZWlnaHQAANkCECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAlQIBGEFzc2V0cwAAABBXaWxkBADdAgEkV2lsZEFzc2V0AAEAAN0CECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWShAgEcQXNzZXRJZAABDGZ1buECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkoQIBHEFzc2V0SWQAAQxmdW7hAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAA4QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAADlAgQYT3B0aW9uBARUAekCAQgQTm9uZQAAABBTb21lBADpAgAAAQAA6QIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEANkCASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQA2QIBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQA2QIBLEFzc2V0RmlsdGVyAAIAAO0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB6QIEUwAABADxAgEYVmVjPFQ+AADxAgAAAukCAPUCBBhPcHRpb24EBFQBCQEBCBBOb25lAAAAEFNvbWUEAAkBAAABAAD5AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0CBFMAAAQAAQMBGFZlYzxUPgAA/QIMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb24FAQEgTG9jYXRpb24AAAAAAQMAAAL9AgAFAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQA0QEBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQASQIBKHY0OjpBc3NldHMABAAIVjUEAJUCASh2NTo6QXNzZXRzAAUAAAkDCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQADQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAAdAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEACkDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAANAwwMeGNtCHYzDFhjbQQQQ2FsbAAABAARAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAEQMAAAIVAwAVAwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANEBASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEANEBASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADRAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl8QEBIFJlc3BvbnNlAAEobWF4X3dlaWdodAECARhXZWlnaHQAARxxdWVyaWVyHQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz0QEBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnl5AQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9EBASxNdWx0aUFzc2V0cwABEGRlc3R5AQE0TXVsdGlMb2NhdGlvbgABDHhjbcUBARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmQhAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QBAgEYV2VpZ2h0AAEQY2FsbBkDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAH0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEACkCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMtAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5eQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdHkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUtAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnTRAQEsTXVsdGlBc3NldHMAARxtYXhpbWFs9AEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZXkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cy0CAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdHkBATRNdWx0aUxvY2F0aW9uAAEMeGNtxQEBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8pAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMtAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz2QEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXQ5AgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAA0DASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAA0DASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz0QEBLE11bHRpQXNzZXRzAAEYdGlja2V0eQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0AQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADRAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEANEBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAB0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAPUBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAFQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbykCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEACkCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAgQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JriQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9ufQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbcUBARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V02QEBKE11bHRpQXNzZXQAASB1bmxvY2tlcnkBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTZAQEoTXVsdGlBc3NldAABGHRhcmdldHkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTZAQEoTXVsdGlBc3NldAABFG93bmVyeQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V02QEBKE11bHRpQXNzZXQAARhsb2NrZXJ5AQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd/QBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbh0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAGQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAHQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAAhAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAIQMAAAIlAwAlAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQASQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQASQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VhAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0AQIBGFdlaWdodAABHHF1ZXJpZXJ1AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzSQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5jQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzSQIBGEFzc2V0cwABEGRlc3SNAQEgTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kIQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0AQIBGFdlaWdodAABEGNhbGwZAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACRAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAeQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c30CASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5jQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAARBkZXN0jQEBIExvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmV9AgEsQXNzZXRGaWx0ZXIAARB3YW50SQIBGEFzc2V0cwABHG1heGltYWz0ARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzfQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZY0BASBMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAARBkZXN0jQEBIExvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm95AgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHN9AgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc1ECARRBc3NldAABMHdlaWdodF9saW1pdDkCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAHQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAHQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNJAgEYQXNzZXRzAAEYdGlja2V0jQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodAECARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQASQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQASQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAHUCAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAD1AQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEABUCAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm95AgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAB5AgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAJkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya6EBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbpEBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRRAgEUQXNzZXQAASB1bmxvY2tlco0BASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0UQIBFEFzc2V0AAEYdGFyZ2V0jQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRRAgEUQXNzZXQAARRvd25lco0BASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRRAgEUQXNzZXQAARhsb2NrZXKNAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXf0ARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBACNAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0OQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2ludQIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAKQMMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABAAtAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAALQMAAAIxAwAxAwwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAlQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAJUCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAlQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WtAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0AQIBGFdlaWdodAABHHF1ZXJpZXLNAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzlQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzlQIBGEFzc2V0cwABEGRlc3QFAQEgTG9jYXRpb24AAQx4Y22JAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kIQIBKE9yaWdpbktpbmQAAUxmYWxsYmFja19tYXhfd2VpZ2h00QIBOE9wdGlvbjxXZWlnaHQ+AAEQY2FsbBkDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAAkBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADVAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz2QIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkFAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c9kCASxBc3NldEZpbHRlcgABEGRlc3QFAQEgTG9jYXRpb24AAQx4Y22JAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZdkCASxBc3NldEZpbHRlcgABEHdhbnSVAgEYQXNzZXRzAAEcbWF4aW1hbPQBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPZAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlBQEBIExvY2F0aW9uAAEMeGNtiQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c9kCASxBc3NldEZpbHRlcgABEGRlc3QFAQEgTG9jYXRpb24AAQx4Y22JAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb9UCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c9kCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVznQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0OQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAApAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAApAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c5UCARhBc3NldHMAARh0aWNrZXQFAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0AQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BACVAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BACVAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAzQIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEALECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAFQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb9UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEANUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAEQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrGQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uCQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y22JAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldJ0CARRBc3NldAABIHVubG9ja2VyBQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSdAgEUQXNzZXQAARh0YXJnZXQFAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldJ0CARRBc3NldAABFG93bmVyBQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldJ0CARRBc3NldAABGGxvY2tlcgUBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd/QBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQ5AgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7NAgFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXSdAgEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uBQEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXPlAgFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2lu9AEQYm9vbAABGGFzc2V0c+0CAeBCb3VuZGVkVmVjPEFzc2V0VHJhbnNmZXJGaWx0ZXIsIE1heEFzc2V0VHJhbnNmZXJGaWx0ZXJzPgABKHJlbW90ZV94Y22JAgEcWGNtPCgpPgAxAERFeGVjdXRlV2l0aE9yaWdpbggBRGRlc2NlbmRhbnRfb3JpZ2lu9QIBYE9wdGlvbjxJbnRlcmlvckxvY2F0aW9uPgABDHhjbSkDASRYY208Q2FsbD4AMgAgU2V0SGludHMEARRoaW50c/kCAYRCb3VuZGVkVmVjPEhpbnQsIEhpbnROdW1WYXJpYW50cz4AMwAANQMQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBAB1AQFEVmVyc2lvbmVkTG9jYXRpb24AAwAAOQMIDHhjbUBWZXJzaW9uZWRBc3NldElkAAEMCFYzBADdAQEsdjM6OkFzc2V0SWQAAwAIVjQEAFUCASx2NDo6QXNzZXRJZAAEAAhWNQQAoQIBLHY1OjpBc3NldElkAAUAAD0DBBhPcHRpb24EBFQBKAEIEE5vbmUAAAAQU29tZQQAKAAAAQAAQQMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW5JAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbkkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0AQIBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5JAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACcARhQYXJhSWQAAgAATQMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHNRAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXhVAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHNRAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2luWQMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc1EDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQBAgEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpblkDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RAwAAAiAAVQMAAAUEAFkDCFBwZW9wbGVfcGFzZW9fcnVudGltZTBPcmlnaW5DYWxsZXIAATAYc3lzdGVtBABdAwF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EAGEDAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAZQMBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAGFBlb3BsZQQAaQMBbGluZGl2X3BhbGxldF9wZW9wbGU6Ok9yaWdpbgAzAChQcm9vZk9mSW5rBAB1AwGoaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6T3JpZ2luPFJ1bnRpbWU+ADUAEEdhbWUEAHkDAYhpbmRpdl9wYWxsZXRfZ2FtZTo6T3JpZ2luPFJ1bnRpbWU+ADcAFFNjb3JlBAB9AwGMaW5kaXZfcGFsbGV0X3Njb3JlOjpPcmlnaW48UnVudGltZT4AOAAoUGVvcGxlTGl0ZQQAgQMBpGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6T3JpZ2luPFJ1bnRpbWU+AD4AJFJlc291cmNlcwQAhQMBeGluZGl2X3BhbGxldF9yZXNvdXJjZXM6Ok9yaWdpbgA/ABxNZW1iZXJzBACNAwGUaW5kaXZfcGFsbGV0X21lbWJlcnM6Ok9yaWdpbjxSdW50aW1lPgBDABxDb2luYWdlBACVAwGUaW5kaXZfcGFsbGV0X2NvaW5hZ2U6Ok9yaWdpbjxSdW50aW1lPgBEABhIb25vdXIEALEDAWxpbmRpdl9wYWxsZXRfaG9ub3VyOjpPcmlnaW4ARwAAXQMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAGEDDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAAFAQEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAAUBASBMb2NhdGlvbgABAABlAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAGkDDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBhPcmlnaW4AAQhAUGVyc29uYWxJZGVudGl0eQQAKAEoUGVyc29uYWxJZAAAADRQZXJzb25hbEFsaWFzBABtAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwABAABtAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAAMASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARByaW5nOAEkUmluZ0luZGV4AAEIY2FxAwE8Q29udGV4dHVhbEFsaWFzAABxAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAAdQMMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0GE9yaWdpbgQEVAABDFhBdXRob3JpemVkQXBwbHlXaXRoU2lnBAAEATBUOjpBY2NvdW50SWQAAABEUmVmZXJyZWRDYW5kaWRhdGUEAAQBMFQ6OkFjY291bnRJZAABAEBJbnZpdGVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAgAAeQMMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBhPcmlnaW4EBFQAAQQcSW52aXRlZAQABAEwVDo6QWNjb3VudElkAAAAAH0DDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0GE9yaWdpbgQEVAABBEhBY2NvdW50UGFydGljaXBhbnQEAAQBMFQ6OkFjY291bnRJZAAAAACBAwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBhPcmlnaW4EBFQAAQgoTGl0ZVBlcnNvbgQABAEwVDo6QWNjb3VudElkAAAAJExpdGVBbGlhcwQAbQMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAAhQMMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0GE9yaWdpbgABDEhGcmllbmRSZXF1ZXN0QWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAIkDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAACJAwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAACNAwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAGRAwEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAABtAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAAkQMIUHBlb3BsZV9wYXNlb19ydW50aW1lHFJ1bnRpbWUAAAAAlQMMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBhPcmlnaW4EBFQBkQMBDBBDb2luCAEcY29pbl9pZAQBMFQ6OkFjY291bnRJZAABEGNvaW6ZAwEQQ29pbgAAACxVbmxvYWRUb2tlbgwBMGFsaWFzX3Byb29mc6EDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEocHJvdmVuX21zZwgBIFt1ODsgMzJdAAEMZmVlrQMBJFVubG9hZEZlZQABAFhJbmZhbGxpYmxlVW5wYWlkU2lnbmVkBAEMd2hvBAEwVDo6QWNjb3VudElkAAIAAJkDDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQQQ29pbgAACAEUdmFsdWWdAwEkQ29pblZhbHVlAAEMYWdlVQMBDHUxNgAAnQMAAAUJAKEDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQMEUwAABACpAwEYVmVjPFQ+AAClAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAKkDAAACpQMArQMMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldCRVbmxvYWRGZWUAAQgcUHJlcGFpZAAAAChGcm9tT3V0cHV0CAFIZmVlX3JlY3ljbGVyX3ZhbHVlnQMBJENvaW5WYWx1ZQABSGZlZV9yZWN5Y2xlcl9pbmRleDgBJFJpbmdJbmRleAABAACxAwxMaW5kaXZfcGFsbGV0X2hvbm91chhwYWxsZXQYT3JpZ2luAAEEFFZvdGVyBAEcYWxpYXNlc7UDASxWb3RlQWxpYXNlcwAAAAC1AwxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyxWb3RlQWxpYXNlcwAACAE0c3ViamVjdF9hbGlhcwgBMFN1YmplY3RBbGlhcwABLHBvaW50X2FsaWFzCAEoUG9pbnRBbGlhcwAAuQMMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVz+AFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGRVAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXP4AURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludL0DAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHQBAgEYV2VpZ2h0AAGoVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAD0BKipJZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzIG1ldCAoaW5jbHVkaW5nIHRoZSBzZW5kZXIncyBhcHByb3ZhbCksIHRoaXMgd2lsbEUBaW1tZWRpYXRlbHkgZXhlY3V0ZSB0aGUgY2FsbC4qKiBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBleGVjdXRlIGEgbXVsdGlzaWcgY2FsbCAtwGBhcHByb3ZlX2FzX211bHRpYCB3aWxsIG5ldmVyIHRyaWdnZXIgZXhlY3V0aW9uLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgBNAU5PVEU6IEZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIChub3QgdGhlIGZpbmFsIGFwcHJvdmFsKSwgeW91IHNob3VsZCBnZW5lcmFsbHkgdXNlRQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwgYW5kIGlzIG1vcmUoZWZmaWNpZW50LgBZAVJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdCBpZiBgdGhyZXNob2xkYCBpcyBleGFjdGx5IGAxYC4gT3RoZXJ3aXNlVQFvbiBzdWNjZXNzLCByZXN1bHQgaXMgYE9rYCBhbmQgdGhlIHJlc3VsdCBmcm9tIHRoZSBpbnRlcmlvciBjYWxsLCBpZiBpdCB3YXMgZXhlY3V0ZWQs3G1heSBiZSBmb3VuZCBpbiB0aGUgZGVwb3NpdGVkIGBNdWx0aXNpZ0V4ZWN1dGVkYCBldmVudC4ANCMjIENvbXBsZXhpdHlQLSBgTyhTICsgWiArIENhbGwpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC4hAS0gT25lIGNhbGwgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFopYCB3aGVyZSBgWmAgaXMgdHgtbGVuLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5sLSBUaGUgd2VpZ2h0IG9mIHRoZSBgY2FsbGAuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLkBhcHByb3ZlX2FzX211bHRpFAEkdGhyZXNob2xkVQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVz+AFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnS9AwGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0AQIBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZFUDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc/gBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50wQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkVQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVz+AFEVmVjPFQ6OkFjY291bnRJZD4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQAENPRQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBleGlzdGluZyBtdWx0aXNpZyBvcGVyYXRpb24uAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgdGhlIG9yaWdpbmFsIGRlcG9zaXRvciBvZlx0aGUgbXVsdGlzaWcgb3BlcmF0aW9uLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AGQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIHRoaXMgbXVsdGlzaWcuPQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlLCAgbXVsdGlzaWcuBQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0aGlzIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZm9yLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQMEGE9wdGlvbgQEVAHBAwEIEE5vbmUAAAAQU29tZQQAwQMAAAEAAMEDCDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgE4AAgBGGhlaWdodDgBLEJsb2NrTnVtYmVyAAEUaW5kZXg4AQx1MzIAAMUDDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASwUcHJveHkMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlyQMBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlzQMBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZc0DATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAIcqFVucmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOiUBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIHJlbW92ZSBhcyBhIHByb3h5LkEBLSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgdGhlIHJlbW92ZWQgcHJveHkgYWNjb3VudC44cmVtb3ZlX3Byb3hpZXMAAxi0VW5yZWdpc3RlciBhbGwgcHJveHkgYWNjb3VudHMgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AXQFXQVJOSU5HOiBUaGlzIG1heSBiZSBjYWxsZWQgb24gYWNjb3VudHMgY3JlYXRlZCBieSBgY3JlYXRlX3B1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZc0DATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXhVAwEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlzQMBMFQ6OlByb3h5VHlwZQABFGluZGV4VQMBDHUxNgABGGhlaWdodGABREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXh0X2luZGV4YAEMdTMyAAVAoFJlbW92ZXMgYSBwcmV2aW91c2x5IHNwYXduZWQgcHVyZSBwcm94eS4ASQFXQVJOSU5HOiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKiBBbnkgZnVuZHMgaGVsZCBpbiBpdCB3aWxsIGJlNGluYWNjZXNzaWJsZS4AWQFSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbiwgYW5kIHRoZSBzZW5kZXIgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGEgY2FsbCB0b7BgY3JlYXRlX3B1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgBVAS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBjcmVhdGVfcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC5VAS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuIFByb2JhYmx5IGAwYC4JAS0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLkUBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuUQEtIGBleHRfaW5kZXhgOiBUaGUgZXh0cmluc2ljIGluZGV4IGluIHdoaWNoIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZfhhY2NvdW50IHdob3NlIGBjcmVhdGVfcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAcocFJlbW92ZSBhIGdpdmVuIGFubm91bmNlbWVudC4AWQFNYXkgYmUgY2FsbGVkIGJ5IGEgcHJveHkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoZXkgcHJldmlvdXNseSBhbm5vdW5jZWQgYW5kIHJldHVybjB0aGUgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZWplY3RfYW5ub3VuY2VtZW50CAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGXJAwFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjBwb2tlX2RlcG9zaXQACiBJAVBva2UgLyBBZGp1c3QgZGVwb3NpdHMgbWFkZSBmb3IgcHJveGllcyBhbmQgYW5ub3VuY2VtZW50cyBiYXNlZCBvbiBjdXJyZW50IHZhbHVlcy4NAVRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gcG9zc2libHkgbG93ZXIgdGhlaXIgbG9ja2VkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDBBhPcHRpb24EBFQBzQMBCBBOb25lAAAAEFNvbWUEAM0DAAABAADNAwhQcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEcDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFACBTYWZlU3VkbwBkAADRAww8cGFsbGV0X2lkZW50aXR5GHBhbGxldBBDYWxsBARUAAFgNGFkZF9yZWdpc3RyYXIEARxhY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AABx4QWRkIGEgcmVnaXN0cmFyIHRvIHRoZSBzeXN0ZW0uAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgVDo6UmVnaXN0cmFyT3JpZ2luYC4AqC0gYGFjY291bnRgOiB0aGUgYWNjb3VudCBvZiB0aGUgcmVnaXN0cmFyLgCURW1pdHMgYFJlZ2lzdHJhckFkZGVkYCBpZiBzdWNjZXNzZnVsLjBzZXRfaWRlbnRpdHkEARBpbmZv1QMBbEJveDxUOjpJZGVudGl0eUluZm9ybWF0aW9uPgABKCkBU2V0IGFuIGFjY291bnQncyBpZGVudGl0eSBpbmZvcm1hdGlvbiBhbmQgcmVzZXJ2ZSB0aGUgYXBwcm9wcmlhdGUgZGVwb3NpdC4AVQFJZiB0aGUgYWNjb3VudCBhbHJlYWR5IGhhcyBpZGVudGl0eSBpbmZvcm1hdGlvbiwgdGhlIGRlcG9zaXQgaXMgdGFrZW4gYXMgcGFydCBwYXltZW50UGZvciB0aGUgbmV3IGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AjC0gYGluZm9gOiBUaGUgaWRlbnRpdHkgaW5mb3JtYXRpb24uAIhFbWl0cyBgSWRlbnRpdHlTZXRgIGlmIHN1Y2Nlc3NmdWwuIHNldF9zdWJzBAEQc3Vic1EEAWRWZWM8KFQ6OkFjY291bnRJZCwgRGF0YSk+AAIkjFNldCB0aGUgc3ViLWFjY291bnRzIG9mIHRoZSBzZW5kZXIuAFUBUGF5bWVudDogQW55IGFnZ3JlZ2F0ZSBiYWxhbmNlIHJlc2VydmVkIGJ5IHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbHMgd2lsbCBiZSByZXR1cm5lZC0BYW5kIGFuIGFtb3VudCBgU3ViQWNjb3VudERlcG9zaXRgIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIGVhY2ggaXRlbSBpbiBgc3Vic2AuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AsC0gYHN1YnNgOiBUaGUgaWRlbnRpdHkncyAobmV3KSBzdWItYWNjb3VudHMuOGNsZWFyX2lkZW50aXR5AAMgOQFDbGVhciBhbiBhY2NvdW50J3MgaWRlbnRpdHkgaW5mbyBhbmQgYWxsIHN1Yi1hY2NvdW50cyBhbmQgcmV0dXJuIGFsbCBkZXBvc2l0cy4A7FBheW1lbnQ6IEFsbCByZXNlcnZlZCBiYWxhbmNlcyBvbiB0aGUgYWNjb3VudCBhcmUgcmV0dXJuZWQuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AmEVtaXRzIGBJZGVudGl0eUNsZWFyZWRgIGlmIHN1Y2Nlc3NmdWwuRHJlcXVlc3RfanVkZ2VtZW50CAEkcmVnX2luZGV4YAE4UmVnaXN0cmFySW5kZXgAARxtYXhfZmVl7AEwQmFsYW5jZU9mPFQ+AARAlFJlcXVlc3QgYSBqdWRnZW1lbnQgZnJvbSBhIHJlZ2lzdHJhci4AVQFQYXltZW50OiBBdCBtb3N0IGBtYXhfZmVlYCB3aWxsIGJlIHJlc2VydmVkIGZvciBwYXltZW50IHRvIHRoZSByZWdpc3RyYXIgaWYganVkZ2VtZW50GGdpdmVuLgA1AVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhUHJlZ2lzdGVyZWQgaWRlbnRpdHkuAB0BLSBgcmVnX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIHJlcXVlc3RlZC5VAS0gYG1heF9mZWVgOiBUaGUgbWF4aW11bSBmZWUgdGhhdCBtYXkgYmUgcGFpZC4gVGhpcyBzaG91bGQganVzdCBiZSBhdXRvLXBvcHVsYXRlZCBhczoAMGBgYG5vY29tcGlsZchSZWdpc3RyYXJzOjo8VD46OmdldCgpLmdldChyZWdfaW5kZXgpLnVud3JhcCgpLmZlZQxgYGAApEVtaXRzIGBKdWRnZW1lbnRSZXF1ZXN0ZWRgIGlmIHN1Y2Nlc3NmdWwuOGNhbmNlbF9yZXF1ZXN0BAEkcmVnX2luZGV4OAE4UmVnaXN0cmFySW5kZXgABShoQ2FuY2VsIGEgcHJldmlvdXMgcmVxdWVzdC4A+FBheW1lbnQ6IEEgcHJldmlvdXNseSByZXNlcnZlZCBkZXBvc2l0IGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MuADUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGFQcmVnaXN0ZXJlZCBpZGVudGl0eS4ARQEtIGByZWdfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBqdWRnZW1lbnQgaXMgbm8gbG9uZ2VyIHJlcXVlc3RlZC4ArEVtaXRzIGBKdWRnZW1lbnRVbnJlcXVlc3RlZGAgaWYgc3VjY2Vzc2Z1bC4cc2V0X2ZlZQgBFGluZGV4YAE4UmVnaXN0cmFySW5kZXgAAQxmZWXsATBCYWxhbmNlT2Y8VD4ABhwZAVNldCB0aGUgZmVlIHJlcXVpcmVkIGZvciBhIGp1ZGdlbWVudCB0byBiZSByZXF1ZXN0ZWQgZnJvbSBhIHJlZ2lzdHJhci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50oG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYGluZGV4YC4A9C0gYGluZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgZmVlIGlzIHRvIGJlIHNldC5ULSBgZmVlYDogdGhlIG5ldyBmZWUuOHNldF9hY2NvdW50X2lkCAEUaW5kZXhgAThSZWdpc3RyYXJJbmRleAABDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAccvENoYW5nZSB0aGUgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggYSByZWdpc3RyYXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgYWNjb3VudKBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGluZGV4IGlzIGBpbmRleGAuAPQtIGBpbmRleGA6IHRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGZlZSBpcyB0byBiZSBzZXQucC0gYG5ld2A6IHRoZSBuZXcgYWNjb3VudCBJRC4oc2V0X2ZpZWxkcwgBFGluZGV4YAE4UmVnaXN0cmFySW5kZXgAARhmaWVsZHMoASkBPFQ6OklkZW50aXR5SW5mb3JtYXRpb24gYXMgSWRlbnRpdHlJbmZvcm1hdGlvblByb3ZpZGVyPjo6CkZpZWxkc0lkZW50aWZpZXIACByoU2V0IHRoZSBmaWVsZCBpbmZvcm1hdGlvbiBmb3IgYSByZWdpc3RyYXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgYWNjb3VudKBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGluZGV4IGlzIGBpbmRleGAuAPQtIGBpbmRleGA6IHRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGZlZSBpcyB0byBiZSBzZXQuDQEtIGBmaWVsZHNgOiB0aGUgZmllbGRzIHRoYXQgdGhlIHJlZ2lzdHJhciBjb25jZXJucyB0aGVtc2VsdmVzIHdpdGguRHByb3ZpZGVfanVkZ2VtZW50EAEkcmVnX2luZGV4YAE4UmVnaXN0cmFySW5kZXgAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGp1ZGdlbWVudFkEAVxKdWRnZW1lbnQ8QmFsYW5jZU9mPFQ+PgABIGlkZW50aXR5PAEcVDo6SGFzaAAJPLhQcm92aWRlIGEganVkZ2VtZW50IGZvciBhbiBhY2NvdW50J3MgaWRlbnRpdHkuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgYWNjb3VudLBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGluZGV4IGlzIGByZWdfaW5kZXhgLgAhAS0gYHJlZ19pbmRleGA6IHRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGp1ZGdlbWVudCBpcyBiZWluZyBtYWRlLlUBLSBgdGFyZ2V0YDogdGhlIGFjY291bnQgd2hvc2UgaWRlbnRpdHkgdGhlIGp1ZGdlbWVudCBpcyB1cG9uLiBUaGlzIG11c3QgYmUgYW4gYWNjb3VudHQgIHdpdGggYSByZWdpc3RlcmVkIGlkZW50aXR5LkkBLSBganVkZ2VtZW50YDogdGhlIGp1ZGdlbWVudCBvZiB0aGUgcmVnaXN0cmFyIG9mIGluZGV4IGByZWdfaW5kZXhgIGFib3V0IGB0YXJnZXRgLl0BLSBgaWRlbnRpdHlgOiBUaGUgaGFzaCBvZiB0aGUgW2BJZGVudGl0eUluZm9ybWF0aW9uUHJvdmlkZXJgXSBmb3IgdGhhdCB0aGUganVkZ2VtZW50IGlzLCAgcHJvdmlkZWQuALBOb3RlOiBKdWRnZW1lbnRzIGRvIG5vdCBhcHBseSB0byBhIHVzZXJuYW1lLgCURW1pdHMgYEp1ZGdlbWVudEdpdmVuYCBpZiBzdWNjZXNzZnVsLjRraWxsX2lkZW50aXR5BAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACjBBAVJlbW92ZSBhbiBhY2NvdW50J3MgaWRlbnRpdHkgYW5kIHN1Yi1hY2NvdW50IGluZm9ybWF0aW9uIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAGEBUGF5bWVudDogUmVzZXJ2ZWQgYmFsYW5jZXMgZnJvbSBgc2V0X3N1YnNgIGFuZCBgc2V0X2lkZW50aXR5YCBhcmUgc2xhc2hlZCBhbmQgaGFuZGxlZCBieUUBYFNsYXNoYC4gVmVyaWZpY2F0aW9uIHJlcXVlc3QgZGVwb3NpdHMgYXJlIG5vdCByZXR1cm5lZDsgdGhleSBzaG91bGQgYmUgY2FuY2VsbGVkgG1hbnVhbGx5IHVzaW5nIGBjYW5jZWxfcmVxdWVzdGAuAPhUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBtYXRjaCBgVDo6Rm9yY2VPcmlnaW5gLgBVAS0gYHRhcmdldGA6IHRoZSBhY2NvdW50IHdob3NlIGlkZW50aXR5IHRoZSBqdWRnZW1lbnQgaXMgdXBvbi4gVGhpcyBtdXN0IGJlIGFuIGFjY291bnR0ICB3aXRoIGEgcmVnaXN0ZXJlZCBpZGVudGl0eS4AlEVtaXRzIGBJZGVudGl0eUtpbGxlZGAgaWYgc3VjY2Vzc2Z1bC4cYWRkX3N1YggBDHN1YgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGF0YdkDARBEYXRhAAscrEFkZCB0aGUgZ2l2ZW4gYWNjb3VudCB0byB0aGUgc2VuZGVyJ3Mgc3Vicy4AXQFQYXltZW50OiBCYWxhbmNlIHJlc2VydmVkIGJ5IGEgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxsIGZvciBvbmUgc3ViIHdpbGwgYmUgcmVwYXRyaWF0ZWQ4dG8gdGhlIHNlbmRlci4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkWHN1YiBpZGVudGl0eSBvZiBgc3ViYC4ocmVuYW1lX3N1YggBDHN1YgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGF0YdkDARBEYXRhAAwQzEFsdGVyIHRoZSBhc3NvY2lhdGVkIG5hbWUgb2YgdGhlIGdpdmVuIHN1Yi1hY2NvdW50LgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWRYc3ViIGlkZW50aXR5IG9mIGBzdWJgLihyZW1vdmVfc3ViBAEMc3ViAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADRzAUmVtb3ZlIHRoZSBnaXZlbiBhY2NvdW50IGZyb20gdGhlIHNlbmRlcidzIHN1YnMuAF0BUGF5bWVudDogQmFsYW5jZSByZXNlcnZlZCBieSBhIHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbCBmb3Igb25lIHN1YiB3aWxsIGJlIHJlcGF0cmlhdGVkOHRvIHRoZSBzZW5kZXIuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZFhzdWIgaWRlbnRpdHkgb2YgYHN1YmAuIHF1aXRfc3ViAA4ojFJlbW92ZSB0aGUgc2VuZGVyIGFzIGEgc3ViLWFjY291bnQuAF0BUGF5bWVudDogQmFsYW5jZSByZXNlcnZlZCBieSBhIHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbCBmb3Igb25lIHN1YiB3aWxsIGJlIHJlcGF0cmlhdGVktHRvIHRoZSBzZW5kZXIgKCpub3QqIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3IpLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWQ8c3VwZXItaWRlbnRpdHkuAEUBTk9URTogVGhpcyBzaG91bGQgbm90IG5vcm1hbGx5IGJlIHVzZWQsIGJ1dCBpcyBwcm92aWRlZCBpbiB0aGUgY2FzZSB0aGF0IHRoZSBub24tEQFjb250cm9sbGVyIG9mIGFuIGFjY291bnQgaXMgbWFsaWNpb3VzbHkgcmVnaXN0ZXJlZCBhcyBhIHN1Yi1hY2NvdW50LlhhZGRfdXNlcm5hbWVfYXV0aG9yaXR5DAEkYXV0aG9yaXR5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhzdWZmaXgYARxWZWM8dTg+AAEoYWxsb2NhdGlvbjgBDHUzMgAPFFUBQWRkIGFuIGBBY2NvdW50SWRgIHdpdGggcGVybWlzc2lvbiB0byBncmFudCB1c2VybmFtZXMgd2l0aCBhIGdpdmVuIGBzdWZmaXhgIGFwcGVuZGVkLgBFAVRoZSBhdXRob3JpdHkgY2FuIGdyYW50IHVwIHRvIGBhbGxvY2F0aW9uYCB1c2VybmFtZXMuIFRvIHRvcCB1cCB0aGUgYWxsb2NhdGlvbiBvckkBY2hhbmdlIHRoZSBhY2NvdW50IHVzZWQgdG8gZ3JhbnQgdXNlcm5hbWVzLCB0aGlzIGNhbGwgY2FuIGJlIHVzZWQgd2l0aCB0aGUgdXBkYXRlZMxwYXJhbWV0ZXJzIHRvIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5kcmVtb3ZlX3VzZXJuYW1lX2F1dGhvcml0eQgBGHN1ZmZpeBgBHFZlYzx1OD4AASRhdXRob3JpdHkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQBMRSZW1vdmUgYGF1dGhvcml0eWAgZnJvbSB0aGUgdXNlcm5hbWUgYXV0aG9yaXRpZXMuQHNldF91c2VybmFtZV9mb3IQAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIHVzZXJuYW1lGAEcVmVjPHU4PgABJHNpZ25hdHVyZV0EAXBPcHRpb248VDo6T2ZmY2hhaW5TaWduYXR1cmU+AAE4dXNlX2FsbG9jYXRpb270ARBib29sABE0DQFTZXQgdGhlIHVzZXJuYW1lIGZvciBgd2hvYC4gTXVzdCBiZSBjYWxsZWQgYnkgYSB1c2VybmFtZSBhdXRob3JpdHkuAFkBSWYgYHVzZV9hbGxvY2F0aW9uYCBpcyBzZXQsIHRoZSBhdXRob3JpdHkgbXVzdCBoYXZlIGEgdXNlcm5hbWUgYWxsb2NhdGlvbiBhdmFpbGFibGUgdG9FAXNwZW5kLiBPdGhlcndpc2UsIHRoZSBhdXRob3JpdHkgd2lsbCBuZWVkIHRvIHB1dCB1cCBhIGRlcG9zaXQgZm9yIHJlZ2lzdGVyaW5nIHRoZSR1c2VybmFtZS4AsFVzZXJzIGNhbiBlaXRoZXIgcHJlLXNpZ24gdGhlaXIgdXNlcm5hbWVzIG9ySGFjY2VwdCB0aGVtIGxhdGVyLgA8VXNlcm5hbWVzIG11c3Q62CAgLSBPbmx5IGNvbnRhaW4gbG93ZXJjYXNlIEFTQ0lJIGNoYXJhY3RlcnMgb3IgZGlnaXRzLjUBICAtIFdoZW4gY29tYmluZWQgd2l0aCB0aGUgc3VmZml4IG9mIHRoZSBpc3N1aW5nIGF1dGhvcml0eSBiZSBfbGVzcyB0aGFuXyB0aGVgICAgIGBNYXhVc2VybmFtZUxlbmd0aGAuPGFjY2VwdF91c2VybmFtZQQBIHVzZXJuYW1lbQQBLFVzZXJuYW1lPFQ+ABIITQFBY2NlcHQgYSBnaXZlbiB1c2VybmFtZSB0aGF0IGFuIGBhdXRob3JpdHlgIGdyYW50ZWQuIFRoZSBjYWxsIG11c3QgaW5jbHVkZSB0aGUgZnVsbIh1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuXHJlbW92ZV9leHBpcmVkX2FwcHJvdmFsBAEgdXNlcm5hbWVtBAEsVXNlcm5hbWU8VD4AEwxhAVJlbW92ZSBhbiBleHBpcmVkIHVzZXJuYW1lIGFwcHJvdmFsLiBUaGUgdXNlcm5hbWUgd2FzIGFwcHJvdmVkIGJ5IGFuIGF1dGhvcml0eSBidXQgbmV2ZXJVAWFjY2VwdGVkIGJ5IHRoZSB1c2VyIGFuZCBtdXN0IG5vdyBiZSBiZXlvbmQgaXRzIGV4cGlyYXRpb24uIFRoZSBjYWxsIG11c3QgaW5jbHVkZSB0aGWcZnVsbCB1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuUHNldF9wcmltYXJ5X3VzZXJuYW1lBAEgdXNlcm5hbWVtBAEsVXNlcm5hbWU8VD4AFAQxAVNldCBhIGdpdmVuIHVzZXJuYW1lIGFzIHRoZSBwcmltYXJ5LiBUaGUgdXNlcm5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIHN1ZmZpeC48dW5iaW5kX3VzZXJuYW1lBAEgdXNlcm5hbWVtBAEsVXNlcm5hbWU8VD4AFQxZAVN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIGEgdXNlcm5hbWUgYnkgcGxhY2luZyBpdCBpbiB0aGUgdW5iaW5kaW5nIHVzZXJuYW1lcyBtYXAuIQFPbmNlIHRoZSBncmFjZSBwZXJpb2QgaGFzIHBhc3NlZCwgdGhlIHVzZXJuYW1lIGNhbiBiZSBkZWxldGVkIGJ5IGNhbGxpbmfAW3JlbW92ZV91c2VybmFtZV0oY3JhdGU6OkNhbGw6OnJlbW92ZV91c2VybmFtZSkuPHJlbW92ZV91c2VybmFtZQQBIHVzZXJuYW1lbQQBLFVzZXJuYW1lPFQ+ABYIYQFQZXJtYW5lbnRseSBkZWxldGUgYSB1c2VybmFtZSB3aGljaCBoYXMgYmVlbiB1bmJpbmRpbmcgZm9yIGxvbmdlciB0aGFuIHRoZSBncmFjZSBwZXJpb2QuSQFDYWxsZXIgaXMgcmVmdW5kZWQgdGhlIGZlZSBpZiB0aGUgdXNlcm5hbWUgZXhwaXJlZCBhbmQgdGhlIHJlbW92YWwgd2FzIHN1Y2Nlc3NmdWwuNGtpbGxfdXNlcm5hbWUEASB1c2VybmFtZW0EASxVc2VybmFtZTxUPgAXCF0BQ2FsbCB3aXRoIFtGb3JjZU9yaWdpbl0oY3JhdGU6OkNvbmZpZzo6Rm9yY2VPcmlnaW4pIHByaXZpbGVnZXMgd2hpY2ggZGVsZXRlcyBhIHVzZXJuYW1lrGFuZCBzbGFzaGVzIGFueSBkZXBvc2l0IGFzc29jaWF0ZWQgd2l0aCBpdC4EcElkZW50aXR5IHBhbGxldCBkZWNsYXJhdGlvbi7VAwxQcGVvcGxlX3Bhc2VvX3J1bnRpbWUYcGVvcGxlMElkZW50aXR5SW5mbwAAKAEcZGlzcGxhedkDARBEYXRhAAEUbGVnYWzZAwEQRGF0YQABDHdlYtkDARBEYXRhAAEYbWF0cml42QMBEERhdGEAARRlbWFpbNkDARBEYXRhAAE8cGdwX2ZpbmdlcnByaW50TQQBQE9wdGlvbjxbdTg7IDIwXT4AARRpbWFnZdkDARBEYXRhAAEcdHdpdHRlctkDARBEYXRhAAEYZ2l0aHVi2QMBEERhdGEAARxkaXNjb3Jk2QMBEERhdGEAANkDDDxwYWxsZXRfaWRlbnRpdHkUdHlwZXMQRGF0YQABmBBOb25lAAAAEFJhdzAEAN0DAAABABBSYXcxBADhAwAAAgAQUmF3MgQA5QMAAAMAEFJhdzMEAOkDAAAEABBSYXc0BABwAAAFABBSYXc1BADtAwAABgAQUmF3NgQA8QMAAAcAEFJhdzcEAPUDAAAIABBSYXc4BADpAQAACQAQUmF3OQQA+QMAAAoAFFJhdzEwBAD9AwAACwAUUmF3MTEEAAEEAAAMABRSYXcxMgQABQQAAA0AFFJhdzEzBAAJBAAADgAUUmF3MTQEAA0EAAAPABRSYXcxNQQAEQQAABAAFFJhdzE2BADtAQAAEQAUUmF3MTcEABUEAAASABRSYXcxOAQAGQQAABMAFFJhdzE5BAAdBAAAFAAUUmF3MjAEABwAABUAFFJhdzIxBAAhBAAAFgAUUmF3MjIEACUEAAAXABRSYXcyMwQAKQQAABgAFFJhdzI0BAAtBAAAGQAUUmF3MjUEADEEAAAaABRSYXcyNgQANQQAABsAFFJhdzI3BAA5BAAAHAAUUmF3MjgEAD0EAAAdABRSYXcyOQQAQQQAAB4AFFJhdzMwBABFBAAAHwAUUmF3MzEEAEkEAAAgABRSYXczMgQACAAAIQAsQmxha2VUd28yNTYEAAgAACIAGFNoYTI1NgQACAAAIwAkS2VjY2FrMjU2BAAIAAAkACxTaGFUaHJlZTI1NgQACAAAJQAA3QMAAAMAAAAADADhAwAAAwEAAAAMAOUDAAADAgAAAAwA6QMAAAMDAAAADADtAwAAAwUAAAAMAPEDAAADBgAAAAwA9QMAAAMHAAAADAD5AwAAAwkAAAAMAP0DAAADCgAAAAwAAQQAAAMLAAAADAAFBAAAAwwAAAAMAAkEAAADDQAAAAwADQQAAAMOAAAADAARBAAAAw8AAAAMABUEAAADEQAAAAwAGQQAAAMSAAAADAAdBAAAAxMAAAAMACEEAAADFQAAAAwAJQQAAAMWAAAADAApBAAAAxcAAAAMAC0EAAADGAAAAAwAMQQAAAMZAAAADAA1BAAAAxoAAAAMADkEAAADGwAAAAwAPQQAAAMcAAAADABBBAAAAx0AAAAMAEUEAAADHgAAAAwASQQAAAMfAAAADABNBAQYT3B0aW9uBARUARwBCBBOb25lAAAAEFNvbWUEABwAAAEAAFEEAAACVQQAVQQAAAQIBNkDAFkEDDxwYWxsZXRfaWRlbnRpdHkUdHlwZXMkSnVkZ2VtZW50BBxCYWxhbmNlAfABHBxVbmtub3duAAAAHEZlZVBhaWQEAPABHEJhbGFuY2UAAQAoUmVhc29uYWJsZQACACRLbm93bkdvb2QAAwAkT3V0T2ZEYXRlAAQAKExvd1F1YWxpdHkABQAkRXJyb25lb3VzAAYAAF0EBBhPcHRpb24EBFQBYQQBCBBOb25lAAAAEFNvbWUEAGEEAAABAABhBAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABlBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAGUEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAGkEAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAaQQBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAZQQAAANAAAAADABpBAAAA0EAAAAMAG0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAcQQMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0EENhbGwEBFQAASAsdW5kZXJfYWxpYXMEARBjYWxsIAG0Qm94PDxUIGFzIGZyYW1lX3N5c3RlbTo6Q29uZmlnPjo6UnVudGltZUNhbGw+AAAQFQFEaXNwYXRjaCBhIGNhbGwgdW5kZXIgYW4gYWxpYXMgdXNpbmcgdGhlIGBhY2NvdW50IDwtPiBhbGlhc2AgbWFwcGluZy4ARQFUaGlzIGlzIGEgY2FsbCB2ZXJzaW9uIG9mIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50YC4lAUl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGluc3RlYWQgd2hlbiBzdWl0YWJsZS5Ec2V0X2FsaWFzX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkLQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFsaWFzIHdhcyBwcmV2aW91c2x5IHNldC4AsFRoZSBjYWxsIGlzIHZhbGlkIGZyb20gYGNhbGxfdmFsaWRfYXRgIHVudGlsvGBjYWxsX3ZhbGlkX2F0ICsgYWNjb3VudF9zZXR1cF90aW1lX3RvbGVyYW5jZWAuHQFgYWNjb3VudF9zZXR1cF90aW1lX3RvbGVyYW5jZWAgaXMgYSBjb25zdGFudCBhdmFpbGFibGUgaW4gdGhlIG1ldGFkYXRhLgAsUGFyYW1ldGVyczq4LSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHNldCB0aGUgYWxpYXMgZm9yLgEBLSBgY2FsbF92YWxpZF9hdGA6IFRoZSBibG9jayBudW1iZXIgd2hlbiB0aGUgY2FsbCBiZWNvbWVzIHZhbGlkLkx1bnNldF9hbGlhc19hY2NvdW50AAIEFQFSZW1vdmUgdGhlIG1hcHBpbmcgZnJvbSBhIHBhcnRpY3VsYXIgYWxpYXMgdG8gaXRzIHJlZ2lzdGVyZWQgYWNjb3VudC5oZm9yY2VfcmVjb2duaXplX3BlcnNvbmhvb2QEARhwZW9wbGV1BAFAVmVjPE1lbWJlck9mPFQ+PgADEOBSZWNvZ25pemUgYSBzZXQgb2YgcGVvcGxlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY2hlY2tzLgBRAVRoZSBwZW9wbGUgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHByb3ZpZGVkIGxpc3Qgb2Yga2V5cyBhbmQgd2lsbCBlYWNoIGJlIGFzc2lnbmVkLCBpbphvcmRlciwgdGhlIG5leHQgYXZhaWxhYmxlIHBlcnNvbmFsIElELlxzZXRfcGVyc29uYWxfaWRfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4ABDxoU2V0IGEgcGVyc29uYWwgaWQgYWNjb3VudC4ATQFUaGUgYWNjb3VudCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNpZ24gdHJhbnNhY3Rpb25zIG9uIGJlaGFsZiBvZiB0aGUgcGVyc29uYWwgaWQsIGFuZKRwcm92aWRlIHJlcGxheSBwcm90ZWN0aW9uIHdpdGggdGhlIG5vbmNlLgBRAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWNjb3VudCB3YXMgcHJldmlvdXNseSBzZXQgZm9yIHRoZTBwZXJzb25hbCBpZC4AsFRoZSBjYWxsIGlzIHZhbGlkIGZyb20gYGNhbGxfdmFsaWRfYXRgIHVudGlsvGBjYWxsX3ZhbGlkX2F0ICsgYWNjb3VudF9zZXR1cF90aW1lX3RvbGVyYW5jZWAuHQFgYWNjb3VudF9zZXR1cF90aW1lX3RvbGVyYW5jZWAgaXMgYSBjb25zdGFudCBhdmFpbGFibGUgaW4gdGhlIG1ldGFkYXRhLgAsUGFyYW1ldGVyczq4LSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHNldCB0aGUgYWxpYXMgZm9yLgEBLSBgY2FsbF92YWxpZF9hdGA6IFRoZSBibG9jayBudW1iZXIgd2hlbiB0aGUgY2FsbCBiZWNvbWVzIHZhbGlkLmR1bnNldF9wZXJzb25hbF9pZF9hY2NvdW50AAUEeFVuc2V0IHRoZSBwZXJzb25hbCBpZCBhY2NvdW50LmBjcmVhdGVfcGVvcGxlX2NvbGxlY3Rpb24ABih0Q3JlYXRlIHRoZSBwZW9wbGUgY29sbGVjdGlvbi4AKQFUaGlzIGNhbGwgaXMgdmFsaWQgb25seSBpZiB0aGUgY29sbGVjdGlvbiBkb2Vzbid0IGV4aXN0IHlldC4gT25jZSBjcmVhdGVkLIx0aGlzIGNhbGwgY2Fubm90IGJlIGV4ZWN1dGVkIGFnYWluLgDUVGhlIGNvbGxlY3Rpb24gaXMgY3JlYXRlZCB3aXRoIGEgZml4ZWQgY29uZmlndXJhdGlvbjq4LSBPd25lcjogQ29uZmlndXJlZCB2aWEgYENvbGxlY3Rpb25Pd25lcmAgdHlwZcAtIE9uYm9hcmRpbmcgc2l6ZTogYFBFT1BMRV9PTkJPQVJESU5HX1NJWkVgICgxMClILSBNb2RlOiBgRmxleGlibGVgTC0gUmluZyBzaXplOiBgUjJlOWBYY2xlYW5fdXBfc3RhbGVfYWxpYXNlcwQBHGFsaWFzZXN5BAHcQm91bmRlZFZlYzxDb250ZXh0dWFsQWxpYXMsIENvbnN0VTMyPE1BWF9CVUxLX0NMRUFOVVA+PgAHUKBSZW1vdmUgc3RhbGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZ3MuAGBBIG1hcHBpbmcgaXMgc3RhbGUgd2hlbjotAS0gaXRzIGNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFtgQ29uZmlnOjpBY2NvdW50Q29udGV4dHNgXSAoZ292ZXJuYW5jZaggIHJlY29uZmlndXJhdGlvbiwgZW5kZWQgYWlyZHJvcCBldGMuKSwgb3JwLSBpdHMgcmluZyBoYXMgYmVlbiBkZWxldGVkLgAdAVJldmlzaW9uIG1pc21hdGNoZXMgZG8gbm90IHJlbmRlciBhbiBhbGlhcyBzdGFsZS4gVGhlIHVzZXIgY2FuIGNvbnRpbnVlFQF0cmFuc2FjdGluZyB2aWEgYEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50UmV2aXNlZGAgd2l0aG91dCBoYXZpbmcgdG9McmVkbyBhY2NvdW50IHNldHVwLgD8VHlwaWNhbGx5IHN1Ym1pdHRlZCBieSB0aGUgT0NXLCBidXQgdGhlIGRpc3BhdGNoIGRvZXMgbm90IHRydXN0qHRoZSBjYWxsZXIuIEVhY2ggYWxpYXMgaXMgcmUtdmFsaWRhdGVkIHZpYexgU2VsZjo6ZW5zdXJlX2FsaWFzX2lzX3N0YWxlYDsgdGhvc2UgdGhhdCBhcmUgbm90IHN0YWxlIGFyZSBza2lwcGVkLgDwQXQgbW9zdCBbYE1BWF9CVUxLX0NMRUFOVVBgXSBhbGlhc2VzIGFyZSBwcm9jZXNzZWQgcGVyIGNhbGwuAAEBVGhlIHRyYW5zYWN0aW9uIHNvdXJjZSBtdXN0IGJlIGxvY2FsIG9yIGluLWJsb2NrLiBUaHVzLCBleHRlcm5hbHhpbnZvY2F0aW9ucyBhcmUgbm90IHBlcm1pdHRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMudQQAAAIIAHkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBcQMEUwAABAB9BAEYVmVjPFQ+AAB9BAAAAnEDAIEEDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0EENhbGwEBFQAAUQQdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARxvcGluaW9uhQQBJEp1ZGdlbWVudAAABOBGZWVsZXNzIG9uIHN1Y2Nlc3MgKGRldGVybWluZWQgb25seSBieSB0b3AgdGhyZWUgbGluZXMpLihjbG9zZV9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABAChjbGVhbl92b3RlCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABFHZvdGVyCAEUQWxpYXMAAgwlAU9yaWdpbiBtdXN0IGJlIGBOb25lYC4gVGhlIHRyYW5zYWN0aW9uIGlzIHZhbGlkYXRlZCBpbiBgVmFsaWRhdGVVbnNpZ25lZGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdIUEASRKdWRnZW1lbnQABAAoY2xhaW1fdm90ZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgABQghAUEgcGVyc29uIGNsYWltcyB0aGUgbW9iIGNyZWRpdCBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLmBUaGUgY2FzZSBtdXN0IGJlIGBEb25lYC44cGF5b3V0X3Jld2FyZHMEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAGBAkBQSBwZXJzb24gY29udmVydHMgdGhlaXIgY2xhaW1lZCBtb2IgY3JlZGl0IGludG8gYSBkaXJlY3QgdHJhbnNmZXIuLGNsYWltX3ZvdGVzBAEwY2FzZV9pbmRpY2VzjQQBOFZlYzxDYXNlSW5kZXg+AAcINQFBIHBlcnNvbiBjbGFpbXMgbXVsdGlwbGUgbW9iIGNyZWRpdHMgYXNzb2NpYXRlZCBhIGNvcnJlY3Qgdm90ZSBvbiBhIGNhc2UuIFRoZVBjYXNlIG11c3QgYmUgYERvbmVgLkhzdGFydF9wYXlvdXRfcm91bmQACABYc2NoZWR1bGVfcGF5b3V0X3JvdW5kcwwBGGFtb3VudPABMEJhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ACQBYcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAoAMGNsYWltX2NyZWRpdAALADBjbGVhbl9wb2ludHMIARRyb3VuZDgBKFJvdW5kSW5kZXgAARR2b3RlcggBFEFsaWFzAAwAQGZvcmNlX3JpcGVuX2Nhc2UEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AA0AKHRvdWNoX2Nhc2UEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AA4AUGNsZWFyX3ZvdGluZ19wZW5hbHR5AA8ARGNsZWFuX3ZvdGVfc2lnbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABFHZvdGVyCAEUQWxpYXMAEARYT3JpZ2luIG11c3QgYmUgc2lnbmVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FBBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSRKdWRnZW1lbnQAAQgUVHJ1dGgEAIkEARRUcnV0aAAAACBDb250ZW1wdAABAACJBBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eRRUcnV0aAABCBBUcnVlAAAAFEZhbHNlAAEAAI0EAAACOACRBAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQQQ2FsbAQEVAABWBRhcHBseQAADJAtIERlY2xhcmUgaW50ZW50aW9uIHRvIGdldCBhIHRhdHRvby5MLSBEZXBvc2l0IGlzIHRha2VuLrgtIGBJbmtUeXBlYCBtYXkgbm90IGJlIGBQcm9jZWR1cmFsRGVyaXZhdGl2ZWAuPHN1Ym1pdF9ldmlkZW5jZQQBIGV2aWRlbmNlCAEwRXZpZGVuY2VIYXNoAAEQvC0gT3BlbiBhIE1vYiBSdWxlIGNhc2UgdG8ganVkZ2UgdGhlIGBldmlkZW5jZWAu/C0gUmVxdWVzdHMgYSBqdWRnZW1lbnQgZm9yIHRoZSBwcm9vZi1vZi1pbmsgZXZpZGVuY2Ugc3RhdGVtZW50LlEBLSBOZWVkcyBgU2lnbmVkRXh0ZW5zaW9uYCB0byBhdm9pZCB1cGZyb250IHJlcXVpcmVtZW50IGZvciBmZWUgaWYgYGp1ZGdlbWVudHMgPT0gMGAuOQEtIElmIGBqdWRnZW1lbnRzID4gMGAsIHRoZW4gYW4gYWRkaXRpb25hbCBmZWUgc2hvdWxkIGJlIGNoYXJnZWQgaW50byBUcmVhc3VyeS4YanVkZ2VkDAEYdGlja2V0OAFET3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudIUEASRKdWRnZW1lbnQAAgToSXMgY2FsbGVkIGJ5IHRoZSBPcmFjbGUgd2hlbiB0aGUgZXZpZGVuY2UgaGFzIGJlZW4ganVkZ2VkLkRyZWdpc3Rlcl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXBlBAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUAAyRQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLiEBKiBgZGVzdGluYXRpb25gIC0gVGhlIGFjY291bnQgcmVjZWl2aW5nIHRoZSBjYW5kaWRhdGUncyByZWZlcnJhbCByZXdhcmQuSQEqIGBwcm9vZl9vZl9vd25lcmhzaXBgIC0gVGhlIHNpZ25hdHVyZSBvZiBwcmVkZWZpbmVkIHByZWZpeCBgInBvcCByZWdpc3RlciB1c2luZyJgqCAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIHNlbmRlciBhY2NvdW50IGlkLlRyZWdpc3Rlcl9ub25fcmVmZXJyZWQMAQxrZXkIASxNZW1iZXJPZjxUPgABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAFIcHJvb2Zfb2Zfb3duZXJzaGlwZQQBsDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAQ4UC0gR2V0cyBhIG5ldyBgaW5kZXhgeC0gUHV0cyBhbiBlbnRyeSBpbnRvIGBQZW9wbGVgLpgtIENhbGxzIFBlb3BsZS9gbmV3UGVyc29uKGluZGV4LCBrZXkpYAAsIyBBcmd1bWVudHOwKiBga2V5YCAtIFRoZSBwZXJzb25hbCBpZGVudGl0eSB0byByZWdpc3Rlci7AKiBgZGVzdGluYXRpb25gIC0gVGhlIGFjY291bnQgcmVjZWl2aW5nIHJld2FyZHMuSQEqIGBwcm9vZl9vZl9vd25lcmhzaXBgIC0gVGhlIHNpZ25hdHVyZSBvZiBwcmVkZWZpbmVkIHByZWZpeCBgInBvcCByZWdpc3RlciB1c2luZyJgqCAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIHNlbmRlciBhY2NvdW50IGlkLgAoIyBXYXJuaW5nOgA5AVRoaXMgY2FsbCBjYW4gcGF5IHR3byByZXdhcmRzIHRvIHRoZSBzYW1lIGFjY291bnQgZm9yIG5vbi1yZWZlcnJlZCBjYW5kaWRhdGVzLikBVGhlIGFwcCBpcyByZXNwb25zaWJsZSBmb3IgYW55IGFkZGl0aW9uYWwgcHJpdmFjeSBoYW5kbGluZyBhZnRlciB0cmFuc2Zlci4YcmVyb2xsAAUAGGNvbW1pdAgBGGNob2ljZZUEASRJbmtDaG9pY2UAAShyZXF1aXJlX2lkPQMBSE9wdGlvbjxQZXJzb25hbElkPgAGFEkBQ29tbWl0IHRvIGEgZGVzaWduIGFuZCBhdXRob3JpemUgdGhlIHN0b3JhZ2UgZm9yIChwb3NzaWJseSBqdXN0IGluaXRpYWwpIGV2aWRlbmNlLgBVAUlmIGEgc3BlY2lmaWMgcGVyc29uYWwgaWRlbnRpdHkgaXMgcmVxdWlyZWQsIHRoZW4gdGhpcyBjYW4gYmUgcGxhY2VkIGluIGByZXF1aXJlX2lkYC5BAVRoaXMgY2FuIGJlIGFueSB1bnVzZWQvdW5yZXNlcnZlZCBwZXJzb25hbCBpZGVudGl0eSBubyBncmVhdGVyIHRoYW4gdGhlIGBOZXh0SWRgIGNvdW50ZXIuNGFsbG9jYXRlX2Z1bGwABwAcdGltZW91dAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQACAw5AU9uY2UgYSB0aW1lb3V0IHBhc3NlcywgcmVtb3ZlcyBhIGNhbmRpZGF0ZSB3aG8gaXMgc2VsZWN0ZWQgYnV0IG5vdCB5ZXQgcHJvdmVuLlkBSWYgdGhlIGNhbmRpZGF0ZSB3YXMgcmVmZXJyZWQgdGhlbiByZWZlcnJhbCBpcyBiYWQsIGlmIGNhbmRpZGF0ZSBhcHBsaWVkIHdpdGggZGVwb3NpdCxMZGVwb3NpdCBpcyBzbGFzaGVkLiBmbGFrZW91dAAJBLRSZW1vdmUgYSBjYW5kaWRhdGUgd2hvIGhhcyBub3QgeWV0IGNvbW1pdHRlZC5QYXBwbHlfd2l0aF9zaWduYXR1cmUMASByZWZlcnJlcigBKFBlcnNvbmFsSWQAASRzaWduYXR1cmVhBAFIVDo6VGlja2V0U2lnbmF0dXJlAAEYdGlja2V0BAEkVDo6VGlja2V0AAoQdFV0aWxpemUgYSByZWZlcnJhbCBzaWduYXR1cmUuAF0BVGhlIHBheWxvYWQgdG8gYmUgc2lnbmVkIGJ5IHRoZSByZWZlcnJlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuVGFwcGx5X3dpdGhfaW52aXRhdGlvbgwBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASxUaWNrZXRPZjxUPgABJHNpZ25hdHVyZWEEAUhUOjpUaWNrZXRTaWduYXR1cmUAExDUQXBwbHkgdG8gdGhlIFByb29mLW9mLUluayBwcm9jZXNzIHdpdGggYW4gaW52aXRhdGlvbi4AWQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIGludml0ZXIgdXNpbmcgdGhlaXIgcmVnaXN0ZXJlZCBrZXkgcGFpciBpcyB0aGUgZW5jb2RlZKRieXRlcyBvZiB0aGUgYWNjb3VudCBJRCBvZiB0aGUgY2FuZGlkYXRlLkRhZGRfZGVzaWduX2ZhbWlseQwBFGluZGV4VQMBLEZhbWlseUluZGV4AAEQa2luZJkEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAALBPBBZGQgYSBkZXNpZ24gZmFtaWx5LiBNdXN0IGhhdmUgcHJpdmlsZWdlZCBhY2Nlc3MgdG8gZG8gdGhpcy5Mc2V0X3JlZmVycmFsX3RpY2tldAQBGHRpY2tldAQBJFQ6OlRpY2tldAAMGLxBZGQgYSByZWZlcnJhbCB0aWNrZXQgYXNzb2NpYXRlZCB3aXRoIGEgcGVyc29uLgBVAU9ubHkgb25lIHJlZmVycmFsIHRpY2tldCBtYXkgYmUgYWN0aXZlIGF0IGFueSBnaXZlbiB0aW1lIGZvciBvbmUgcGVyc29uLiBDYWxsaW5nIHRoaXMlAWV4dHJpbnNpYyB3aGlsZSBhIHZhbGlkIHRpY2tldCBpcyBzZXQgd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0aW5nIHRpY2tldC4AOQFJZiBhbnkgcGVuZGluZyByZWZlcnJhbCByZXdhcmRzIGFyZSBwcmVzZW50LCB0aGV5IG5lZWQgdG8gYmUgcmVnaXN0ZXJlZCBmaXJzdC5YY2FuY2VsX3JlZmVycmFsX3RpY2tldAQBGHRpY2tldAQBJFQ6OlRpY2tldAANBMhDYW5jZWwgYSByZWZlcnJhbCB0aWNrZXQgYXNzb2NpYXRlZCB3aXRoIGEgcGVyc29uLoxyZWdpc3Rlcl9zdWNjZXNzZnVsX3JlZmVycmFsX3Jld2FyZAQBLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAA4ANGdyYW50X2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIADxjkR3JhbnRzIGludml0ZXMgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBkaXN0cmlidXRlIHRoZW0uAJhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luLgCwLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdpdmUgaW52aXRlcyB0by6kLSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGludml0ZXMgdG8gZ2l2ZS6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyABAYnFJlbW92ZSBhbGwgaW52aXRlcyBnaXZlbiB0byBhbiBhY2NvdW50LgCcVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGF0aW9uc09yaWdpbmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AERRISW52aXRlIGFuIGFjY291bnQuAA0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+ABIUVENhbmNlbCBhbiBpbnZpdGF0aW9uLgAhAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSB0aWNrZXQgdG8gY2FuY2VsLgCgLSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gY2FuY2VsLkRzZXRfY29uZmlndXJhdGlvbgQBGGNvbmZpZ50EAXxDb25maWdSZWNvcmQ8QmxvY2tOdW1iZXJGb3I8VD4+ADIEFQFTZXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVjb3JkLiBNdXN0IGhhdmUgcHJpdmlsZWdlZCBhY2Nlc3MgdG8gZG8gdGhpcy5gc2V0X3JlaW1idXJzZW1lbnRfdmFsdWVzCAE8cmVmZXJyZWRfdmFsdWVzoQQB6EJvdW5kZWRWZWM8KEJhbGFuY2VPZjxUPiwgdTMyKSwgVDo6TWF4UmVpbWJ1cnNlbWVudFZhbHVlcz4AATxyZWZlcnJlcl92YWx1ZXOhBAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgAzKE0BU2V0IHRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBjYW5kaWRhdGVzIGFzIHdlbGwgYXMgdGhlaXJNAXJlZmVycmVycywgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHJlaW1idXJzZW1lbnRzIGZvciBlYWNoIHZhbHVlLiBUaGVzZSB2YWx1ZXMgYXJlJHN0b3JlZCBpblEBcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eSwgc28gdGhlIGxhc3QgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lSQF0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4gVGhlIGxlbmd0aCBvZiB0aGUgdHdvIGxpc3RzIG11c3QgYmUgZXF1YWwuACBXQVJOSU5HIQBNAUFmdGVyIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgaXMgZXhoYXVzdGVkIGZvciBhIHZhbHVlIGluIHRoZSBsaXN0LCB0aGUgcGFsbGV09HN0YXJ0cyB1c2luZyB0aGUgbmV4dCB2YWx1ZSBpbW1lZGlhdGVseSBmb3IgZnV0dXJlIHRyYW5zZmVycy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMulQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0JElua0Nob2ljZQABFEBEZXNpZ25lZEVsZWN0aXZlCABVAwEsRmFtaWx5SW5kZXgAAFUDASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAQAVQMBLEZhbWlseUluZGV4AAEASFByb2NlZHVyYWxQZXJzb25hbAQAVQMBLEZhbWlseUluZGV4AAIAKFByb2NlZHVyYWwIAFUDASxGYW1pbHlJbmRleAAADAEwVmFyaWFudEluZGV4AAMAUFByb2NlZHVyYWxEZXJpdmF0aXZlCAAoAShQZXJzb25hbElkAAA9AwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAQAAJkEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChGYW1pbHlLaW5kAAEQIERlc2lnbmVkBAEUY291bnRVAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsAAIAKFByb2NlZHVyYWwEARRyYW5nZQwBMFZhcmlhbnRJbmRleAADAACdBAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQwQ29uZmlnUmVjb3JkBCxCbG9ja051bWJlcgE4ACABOHJlcm9sbF90aW1lb3V0OAEsQmxvY2tOdW1iZXIAATxmYXN0dHJhY2tfY291bnQ4AQx1MzIAARxtYXhpbXVtOAEMdTMyAAE4ZnVsbF9hbGxvY19sZW4oAQx1NjQAAUBmdWxsX2FsbG9jX2NvdW50OAEMdTMyAAE4aW5pdF9hbGxvY19sZW4oAQx1NjQAAUBpbml0X2FsbG9jX2NvdW50OAEMdTMyAAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAChBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUEBFMAAAQAqQQBGFZlYzxUPgAApQQAAAQI8DgAqQQAAAKlBACtBAxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0EENhbGwEBFQAAUhMc2lnbl91cF93aXRoX2ludml0ZQgBOGlkZW50aWZpZXJfa2V5aQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEcYWlyZHJvcLEEAZRPcHRpb248QWlyZHJvcFZyZjxBaXJkcm9wUHJvb2ZPZjxUPj4+AAA40FNpZ24gdXAgZm9yIHRoZSBnYW1lIHVzaW5nIGFuIGFjY291bnQgYW5kIGFuIGludml0ZS4AFQFUaGlzIGlzIGZvciBuZXcgcGxheWVycyBvciBhcmNoaXZlZCBwbGF5ZXJzLCBvdGhlciBwbGF5ZXJzIHNob3VsZCB1c2WoW2BQYWxsZXQ6OnNpZ25fdXBfd2l0aF9hY2NvdW50YF0gZm9yIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBRAWBhaXJkcm9wYCBvcHRpb25hbGx5IGVudGVycyB0aGUgcGxheWVyIGludG8gdGhpcyBnYW1lJ3MgYWlyZHJvcCBkcmF3LiBQYXNzIGBOb25lYCB0b0kBc2tpcCBpdC4gV2hlbiBgU29tZWAsIGl0IGlzIHRoZSBwbGF5ZXIncyBWUkYsIHdoaWNoIGJvdGggc2VlZHMgdGhlaXIgZHJhdyBzbG90IGFuZF0BcHJvdmVzIHRoZWlyIGlkZW50aXR5IHBhdGg6IHRoZSBhbGlhcyB2YXJpYW50IGlmIHRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlYQFgcmVjb2duaXRpb25gIGlzIGBSZWNvZ25pemVkYCBvciBgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQu5FNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYEFpcmRyb3BWcmZgXSBmb3IgbW9yZSBkZXRhaWxzLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50CAE4aWRlbnRpZmllcl9rZXlpBAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAARxhaXJkcm9wsQQBlE9wdGlvbjxBaXJkcm9wVnJmPEFpcmRyb3BQcm9vZk9mPFQ+Pj4AATyYU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudC4APQFJZiB0aGUgcGxheWVyIGlzIG5ldyBvciBhcmNoaXZlZCwgdGhlbiBhIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIubE90aGVyd2lzZSB0aGUgY2FsbCBpcyBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4AUQFgYWlyZHJvcGAgb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoaXMgZ2FtZSdzIGFpcmRyb3AgZHJhdy4gUGFzcyBgTm9uZWAgdG9JAXNraXAgaXQuIFdoZW4gYFNvbWVgLCBpdCBpcyB0aGUgcGxheWVyJ3MgVlJGLCB3aGljaCBib3RoIHNlZWRzIHRoZWlyIGRyYXcgc2xvdCBhbmRdAXByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgdmFyaWFudCBpZiB0aGUgcGxheWVyIGlzIHJlY29nbml6ZWQgKHBhbGxldC1zY29yZWEBYHJlY29nbml0aW9uYCBpcyBgUmVjb2duaXplZGAgb3IgYEV4dGVybmFsbHlSZWNvZ25pemVkYCksIG90aGVyd2lzZSB0aGUgYWNjb3VudCB2YXJpYW50LuRTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BBaXJkcm9wVnJmYF0gZm9yIG1vcmUgZGV0YWlscy4AMQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQsIG9yLCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi5Ic2lnbl91cF93aXRoX2FsaWFzEAE4aWRlbnRpZmllcl9rZXlpBAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAAURzdGF0ZW1lbnRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNpZ2EEAUxUOjpBY2NvdW50U2lnbmF0dXJlAAEcYWlyZHJvcLEEAZRPcHRpb248QWlyZHJvcFZyZjxBaXJkcm9wUHJvb2ZPZjxUPj4+AAJcVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC5dAS0gYGFpcmRyb3BgOiBvcHRpb25hbGx5IGVudGVycyB0aGUgcGxheWVyIGludG8gdGhpcyBnYW1lJ3MgYWlyZHJvcCBkcmF3LCBQYXNzIGBOb25lYCB0b1EBICBza2lwIGl0LiBXaGVuIGBTb21lYCwgaXQgaXMgdGhlIHBsYXllcidzIFZSRiwgd2hpY2ggYm90aCBzZWVkcyB0aGVpciBkcmF3IHNsb3QgYW5kWQEgIHByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgVlJGIG11c3QgYmUgdXNlZCBmb3IgYWxpYXMtYmFzZWQgcGxheWVycyBnaXZlbl0BICB0aGV5IGFyZSByZWNvZ25pemVkIGluIHBhbGxldC1zY29yZSBwYXJ0aWNpcGFudCBpbmZvcm1hdGlvbi4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mgCAgYEFpcmRyb3BWcmZgIGZvciBtb3JlIGRldGFpbHMuGHJlcG9ydAQBLGZ1bGxfcmVwb3J0vQQBNEZ1bGxSZXBvcnQ8VD4AAyyUQWZ0ZXIgdGhlIGdhbWUsIHNlbmQgdGhlIGZ1bGwgcmVwb3J0LgDQVGhlIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVwb3J0aW5nIHBoYXNlLgBVAVRoZSBvcmlnaW4gbXVzdCBiZSBhbiBhbGlhcywgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2V8YFNjb3JlQXNQYXJ0aWNpcGFudGAgZXh0ZW5zaW9uLgBJAUFmdGVyIHRoZSB2b3RlcyBmcm9tIHRoZSByZXBvcnQgYXJlIGNvdW50ZWQsIHRoZSByZXBvcnRlciBhbmQgZWFjaCBvZiB0aGUgcmVwb3J0ZWRFAXBsYXllcnMgd2hvc2UgYXR0ZW5kYW5jZSBjYW4gbm93IGJlIGRldGVybWluZWQgYXJlIHByb2Nlc3NlZCBlYXJseS4gVGhpcyBsZXRzIHRoZU0BZ2FtZSBza2lwIHRoZSBwbGF5ZXItcHJvY2VzcyBwaGFzZSBlbnRpcmVseSB3aGVuIGV2ZXJ5IHBsYXllciBoYXMgYmVlbiBwcm9jZXNzZWQgYnlUdGhlIGVuZCBvZiByZXBvcnRpbmcuIG9mZmJvYXJkAAQcgE9mZmJvYXJkIGEgcGxheWVyIGZyb20gdGhlIGdhbWUuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAF0BVGhlcmUgbXVzdCBiZSBubyBnYW1lIG9yIHRoZSBleGlzdGluZyBnYW1lIG11c3QgYmUgaW4gcmVnaXN0cmF0aW9uIHBoYXNlIGFuZCB0aGUgcGxheWVylG11c3QgaGF2ZSBub3Qgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS4ca2lja291dAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAFGDEBS2lja291dCBhIGtpY2thYmxlIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGFmdGVyIGBOb25QbGF5aW5nS2lja291dFRpbWVgLgCgVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LgAhAS0gYHBsYXllcmA6IFRoZSBwbGF5ZXIgdG8ga2lja291dC4gSXQgbXVzdCBiZSBhcmNoaXZlZCBhbmQga2lja2FibGUgd2l0aNggIGBhcmNoaXZlZF9zaW5jZWAgb2xkZXIgdGhhbiBgTm9uUGxheWluZ0tpY2tvdXRUaW1lYC40Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAGGPRHcmFudCBzb21lIGludml0ZXMgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBkaXN0cmlidXRlIHRoZW0uAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuALQtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ3JhbnQgaW52aXRlcyB0by6oLSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGludml0ZXMgdG8gZ3JhbnQukHJlbW92ZV9hdmFpbGFibGVfYW5kX3BlbmRpbmdfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRsaW1pdDgBDHUzMgAHGJhDbGVhciBhbGwgaW52aXRlcyBnaXZlbiB0byBhbiBhY2NvdW50LgCIVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGVJc3N1ZXJgLgDQLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgaW52aXRlcyBmcm9tLuwtIGBsaW1pdGA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwZW5kaW5nIGludml0ZXMgdG8gcmVtb3ZlLkRzZXRfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAgUSEludml0ZSBhbiBhY2NvdW50LgANAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGludml0ZXMgbGVmdC4AlC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIHNldC5QY2FuY2VsX2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgAJFERDYW5jZWwgYW4gaW52aXRlLgAhAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSB0aWNrZXQgdG8gY2FuY2VsLgCgLSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gY2FuY2VsLjhzY2hlZHVsZV9nYW1lcwQBPGdhbWVzX3NjaGVkdWxlc9EEAVhWZWM8R2FtZVNjaGVkdWxlT2Y8VD4+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALAEBzZXRfcGxheV9kZXBvc2l0BAEYYW1vdW508AFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEFQFVcGRhdGUgdGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IGFtb3VudCBmb3IgZnV0dXJlIGFjY291bnQgc2lnbnVwcy40Y2xhaW1fYWlyZHJvcAgBKGdhbWVfaW5kZXg4AQx1MzIAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAARMAEBQ2xhaW0gYSBwcml6ZSBmcm9tIHRoZSBhaXJkcm9wIGV2ZW50IHNjaGVkdWxlZCBmb3IgYGdhbWVfaW5kZXhgLgBhAUVsaWdpYmlsaXR5IHJlcXVpcmVzIDIgY29uZGl0aW9ucyBvbiB0aGUgY2xhaW1hbnQgdG8gYmUgcmVjb2duaXplZCBhbmQgaGF2ZSBhdHRlbmRlZCB0aGVYZ2FtZS4gSW4gbW9yZSBkZXRhaWxzOlEBKiB0byBiZSBlaXRoZXIgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgKGByZWNvZ25pdGlvbi5pc19yZWNvZ25pemVkKClgKSBvciB0byBoYXZl2CAgcmVhY2hlZCB0aGUgcGVyc29uaG9vZCBzY29yZSAoYHJlYWNoZWRfcGVyc29uaG9vZGApLGEBKiBBTkQgZm9yIGBnYW1lX2luZGV4YCB0byBtYXRjaCB0aGUgcGFydGljaXBhbnQncyBgbGFzdF9hdHRlbmRlZF9nYW1lYCDigJQgaS5lLiB0aGUgbW9zdFEBICByZWNlbnQgZ2FtZSB0aGUgY2xhaW1hbnQgYWN0dWFsbHkgYXR0ZW5kZWQgbXVzdCBiZSBleGFjdGx5IHRoZSBnYW1lIHRoZSBhaXJkcm9wIGlzVQEgIHRpZWQgdG8uIFN1YnNlcXVlbnQgZ2FtZSBhdHRlbmRhbmNlIG92ZXJyaWRlcyB0aGlzIGluZm9ybWF0aW9uIHNvIHRoZSBjbGFpbSBtdXN0IGJllCAgbWFkZSBiZWZvcmUgYXR0ZW5kaW5nIGFub3RoZXIgZ2FtZS4AtENsYWltcyBhZ2FpbnN0IGEgY2FuY2VsbGVkIGdhbWUgYXJlIHJlamVjdGVkLmx0ZXN0bmV0X2ZvcmNlX3N0YXJ0X3NodWZmbGUAZQzURm9yY2Ugc3RhcnQgdGhlIHNodWZmbGUgYmVmb3JlIGl0cyBub3JtYWwgc3RhcnQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLmx0ZXN0bmV0X2ZvcmNlX2VuZF9yZXBvcnRpbmcAZgz4Rm9yY2UgZW5kIGEgZ2FtZSdzIHJlcG9ydGluZyBwaGFzZSBiZWZvcmUgaXRzIG5vcm1hbCBlbmQgdGltZS4ATQFUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgYnkgdGhlIHJvb3Qgb3JpZ2luIGFuZCBpcyBvbmx5IG1lYW50IGZvciB0ZXN0aW5nLjxzZXRfZ2FtZV9waGFzZXMEARhwaGFzZXPlBAFMUGhhc2VEdXJhdGlvblZhbHVlcwAOLIhPdmVycmlkZSB0aGUgZ2FtZSBwaGFzZSBkdXJhdGlvbnMuACkBUmVzdHJpY3RlZCB0byBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIChvciByb290KS4gVW50aWwgcmVzZXQsIGFsbCBmdXR1cmU1AWdhbWUgc2NoZWR1bGVzIHVzZSB0aGVzZSBwaGFzZXMgaW5zdGVhZCBvZiBbYENvbmZpZzo6RGVmYXVsdFBoYXNlRHVyYXRpb25zYF0uDQFUbyByZXZlcnQsIHRoZSBtYW5hZ2VyIHJlLWlzc3VlcyB0aGUgY2FsbCB3aXRoIHRoZSBkZXNpcmVkIGV4cGxpY2l0wHZhbHVlcyDigJQgdGhlcmUgaXMgbm8gc2VwYXJhdGUgY2xlYXIgZXh0cmluc2ljLgAZAU9ubHkgY2FsbGFibGUgd2hpbGUgbm8gZ2FtZSBleGlzdHMgb3IgdGhlIGN1cnJlbnQgZ2FtZSBpcyBzdGlsbCBpbiBpdHMpAVJlZ2lzdHJhdGlvbiBwaGFzZTsgb3RoZXJ3aXNlIGZhaWxzIHdpdGggW2BFcnJvcjo6SW52YWxpZEdhbWVTdGF0ZWBdLiBUaGlzHQFwcmV2ZW50cyBjaGFuZ2luZyBwaGFzZSBkdXJhdGlvbnMgb25jZSBwbGF5ZXJzIGhhdmUgY29tbWl0dGVkIHRvIGEgZ2FtZYh3aG9zZSB0aW1pbmcgaXMgYWxyZWFkeSBsb2NrZWQgaW4uRGtpbGxfY3VycmVudF9nYW1lAA8Q6EtpbGwgdGhlIGN1cnJlbnQgZ2FtZSwgcmVnYXJkbGVzcyBvZiB3aGljaCBwaGFzZSBpdCBpcyBpbi4ALQFSZXN0cmljdGVkIHRvIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gKG9yIHJvb3QpLiBJbnRlbmRlZCBhcyBhbiBlbWVyZ2VuY3kRAXJlY292ZXJ5IGxldmVyIHdoZW4gYSBnYW1lIGlzIHN0dWNrIG9yIGl0cyBzdGF0ZSBoYXMgYmVlbiBjb3JydXB0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEEBBhPcHRpb24EBFQBtQQBCBBOb25lAAAAEFNvbWUEALUEAAABAAC1BAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMoQWlyZHJvcFZyZgQEUAABCBxBY2NvdW50BAC5BAEwVnJmU2lnbmF0dXJlAAAAFEFsaWFzDAEUcHJvb2alAwEEUAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQAAuQQQHHNwX2NvcmUcc3IyNTUxOQx2cmYwVnJmU2lnbmF0dXJlAAAIAShwcmVfb3V0cHV0CAEwVnJmUHJlT3V0cHV0AAEUcHJvb2ZlBAEgVnJmUHJvb2YAAL0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBwQQEUwAABADNBAEYVmVjPFQ+AADBBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUEBFMAAAQAyQQBGFZlYzxUPgAAxQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFJlcG9ydAABCBhQZXJzb24AAAAkTm90UGVyc29uAAEAAMkEAAACxQQAzQQAAALBBADRBAAAAtUEANUEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczBHYW1lU2NoZWR1bGUIHEFzc2V0SWQBBQEcQmFsYW5jZQHwABABOGdhbWVfcGxheV90aW1lOAEMdTMyAAEYcm91bmRzDAEIdTgAAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABNGFpcmRyb3BfcHJpemXZBAGYT3B0aW9uPEFpcmRyb3BQcml6ZTxBc3NldElkLCBCYWxhbmNlPj4AANkEBBhPcHRpb24EBFQB3QQBCBBOb25lAAAAEFNvbWUEAN0EAAABAADdBAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMwQWlyZHJvcFByaXplCBxBc3NldElkAQUBMEFzc2V0QmFsYW5jZQHwABABIGFzc2V0X2lkBQEBHEFzc2V0SWQAATBhc3NldF9hbW91bnTwATBBc3NldEJhbGFuY2UAASxtYXhfd2lubmVyczgBDHUzMgABKHdpbm5lcl9jYXDhBAEcUGVybWlsbAAA4QQMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEADgBDHUzMgAA5QQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzTFBoYXNlRHVyYXRpb25WYWx1ZXMAABgBMHJlZ2lzdHJhdGlvbjgBDHUzMgABHHNodWZmbGU4AQx1MzIAAUxwb3N0X3NodWZmbGVfbWFyZ2luOAEMdTMyAAEkcmVwb3J0aW5nOAEMdTMyAAE4cGxheWVyX3Byb2Nlc3M4AQx1MzIAAVBhaXJkcm9wX2NsYWltX3dpbmRvdzgBDHUzMgAA6QQMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQQQ2FsbAQEVAABJFhzY2hlZHVsZV9wYXlvdXRfcm91bmRzDAEYYW1vdW508AEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEMXFNjaGVkdWxlIHBheW91dCByb3VuZHMuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5YcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAIMgFJlbW92ZSBhIHNjaGVkdWxlZCBwYXlvdXQgcm91bmQuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5AdHJhbnNpdGlvbl9yb3VuZAQBLHJvdW5kX2luZGV4OAEMdTMyAAMYSFN0YXJ0IGEgbmV3IHJvdW5kLgBRAVRoaXMgaXMgdmFsaWQgaWYgdGhlIGN1cnJlbnQgcm91bmQgaXMgZmluaXNoZWQsIG9yIGlmIHRoZSBjdXJyZW50IHJvdW5kIGRvZXNuJ3QgaGF2ZahwbGFubmluZyBhbmQgYSBzY2hlZHVsZSBleGlzdHMgdG8gcGxhbiBpdC4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuUG9wZXJhdGVfcGF5b3V0X3JvdW5kCAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4AAEUbGltaXQ4AQx1MzIABDx4T3BlcmF0ZSBzb21lIHJvdW5kIHBheWluZyBvdXQuAFEBRHJhaW5zIHJvdW5kJ3MgcGFydGljaXBhbnRzLCB1cCB0byBhIGxpbWl0LiBGb3IgZWFjaCBwYXJ0aWNpcGFudCwgYWRkIHRoZSBjYWxjdWxhdGVkFQFyZXdhcmQgKGBiYXNlX3Jld2FyZCArIHJlbWFpbmRlcl9wb3J0aW9uYCkgdG8gdGhlaXIgYGNyZWRpdGAgYmFsYW5jZS4AYQFUaGVuLCBtb3ZlcyBmdW5kcyBvbiB0aGUgcG90IGFjY291bnQgZnJvbSBQYXlvdXQgdG8gQ3JlZGl0LCBzbyB0aGV5IGFyZSBvd2VkIHRvIHNwZWNpZmljoHBhcnRpY2lwYW50cyByYXRoZXIgdGhhbiB0aGUgcm91bmQgcG9vbC4ARQFGaW5hbGx5LCByZWxlYXNlIHRoZSBsZWZ0b3ZlciBmcm9tIHRoZSBQYXlvdXQgaG9sZCBiYWNrIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2VUKGZ1bmRzIGFyZSByZWN5Y2xlZCkuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LgDEKiByb3VuZF9pbmRleDogVGhlIGluZGV4IG9mIHRoZSByb3VuZCB0byBvcGVyYXRlLhEBKiBsaW1pdDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcnRpY2lwYW50cyB0byBvcGVyYXRlIGluIHRoaXMgY2FsbC4gY2FzaF9vdXQABSRZAUNhc2ggb3V0IGhhbGYgb2YgdGhlIHNjb3JlLCByb3VuZGVkIHVwLiBDb252ZXJ0cyB0aGUgc2NvcmUgaW50byBwb2ludHMgZm9yIHRoZSBjdXJyZW50JQFwYXlvdXQgcm91bmQuIENhbGxlciBtdXN0IGhhdmUgbmV2ZXIgcmVhY2hlZCBwZXJzb25ob29kIHNpbmNlIG9uYm9hcmRpbmcuALRJdCBjYW4gYmUgY2FsbGVkIG9uY2UgcGVyIGdhbWUgc2Vzc2lvbiAoZXJhKS4APQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50WHRyYW5zYWN0aW9uIGV4dGVuc2lvbikAzEFsaWFzIG9yaWdpbiBpcyBub3QgYWxsb3dlZCBhcyB0aGV5IGNhbid0IGNhc2ggb3V0LjRyZWRlZW1fY3JlZGl0BAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABhhRAVJlZGVlbSBmdWxsIGFjY3VtdWxhdGVkIGNyZWRpdCwgdHJhbnNmZXJyaW5nIGl0IHRvIHRoZSBwcm92aWRlZCBkZXN0aW5hdGlvbiBhY2NvdW50LgDkQ3JlZGl0IGlzIGNvbnZlcnRlZCBmcm9tIHBvaW50cyBkdXJpbmcgcGF5b3V0IHByb2Nlc3NpbmcuAEkBT3JpZ2luIG11c3QgYmUgYSBwZXJzb24gYWxpYXMsIGEgc2lnbmVkIGFjY291bnQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpY8B1c2luZyBTY29yZUFzUGFydGljaXBhbnQgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS4gcmVnaXN0ZXIEAQxrZXntBAENAU9wdGlvbjwoTWVtYmVyT2Y8VD4sPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUpCj4ABzTwUmVnaXN0ZXIgYXMgYSBwZXJzb24sIG9yIHJlc3VtZSBwZXJzb25ob29kIGFmdGVyIHN1c3BlbnNpb24uACUBUmVxdWlyZXMgc2NvcmUgPj0gcGVyc29uaG9vZCB0aHJlc2hvbGQgKG9yIGhhdmluZyBwcmV2aW91c2x5IHJlYWNoZWQgaXQpLgBhAUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgcHJldmlvdXNseSByZWNvZ25pc2VkIGFuZCBpcyBub3cgc3VzcGVuZGVkLCB0aGV5IG11c3Qgbm90IHByb3ZpZGWIYSBrZXkuIFRoZSBleGlzdGluZyBrZXkgaXMgcmV1c2VkLgA9AUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgbmV2ZXIgcmVjb2duaXNlZCwgdGhleSBtdXN0IHByb3ZpZGUgYSBrZXkgYW5kIGEgcHJvb2Ygb2YZAW93bmVyc2hpcCAoYGtleWAgcGFyYW1ldGVyKTogYSBzaWduYXR1cmUgb3ZlciBgInBvcCByZWdpc3RlciB1c2luZyIgfHxMc2VuZGVyX2FjY291bnRfaWRgLgBFAU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFx0cmFuc2FjdGlvbiBleHRlbnNpb24pLmhzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZQQBIHNjaGVkdWxl9QQBREFic2VuY2VHcmFjZVRpZXJzAAg4fFNldCB0aGUgYWJzZW5jZSBncmFjZSBzY2hlZHVsZS4AKQFFdmVyeSB0aWVyIG11c3Qgc2F0aXNmeTogYDAgPD0gd2luZG93IDw9IDhgIGFuZCBgYWxsb3dlZF9taXNzZXMgPCB3aW5kb3dgLhUBYGFsbG93ZWRfbWlzc2VzID0gMGAgZGlzYWJsZXMgZ3JhY2UgZW50aXJlbHkgKGFueSBhYnNlbmNlIGltbWVkaWF0ZWx5KHN1c3BlbmRzKS4AJQFUaWVycyBtdXN0IGJlIHByb3ZpZGVkIGluIGFzY2VuZGluZyBvcmRlciBvZiBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuAPxBbiBlbXB0eSBzY2hlZHVsZSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5IChpbW1lZGlhdGUdAXN1c3BlbnNpb24gb24gYW55IG1pc3NlZCBnYW1lKS4gVGhlIG5ldyByYXRpbyB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0CQFvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbiB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXNQYEFic2VuY2VHcmFjZVJhdGlvYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LoRzZXRfcGVyc29uaG9vZF90aHJlc2hvbGRfc2NoZWR1bGUEASBzY2hlZHVsZQEFAWBQZXJzb25ob29kVGhyZXNob2xkVGllcnMACUCYU2V0IHRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZS4AOFRpZXJzIG11c3QgYmU6MC0gbm9uLWVtcHR5LMgtIHNvcnRlZCBhc2NlbmRpbmcgYnkgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLBkBLSBjYXBwZWQgYnkgYSBmaW5hbCB0aWVyIHdpdGggYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgLBUBLSBwZXItdGllcjogYDAgPCBzY29yZV90aHJlc2hvbGQgPD0gTUFYX1BFUlNPTkhPT0RfVEhSRVNIT0xEYCAoPSAyMSks1C0gaGF2ZSBub24tZGVjcmVhc2luZyBgc2NvcmVfdGhyZXNob2xkYCBhY3Jvc3MgdGllcnMuAAkBVGhlIG5ldyBjdXJ2ZSB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9u+HdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAAEBQWxyZWFkeS1yZWNvZ25pemVkIHBhcnRpY2lwYW50cyBhcmUgTk9UIHJldHJvYWN0aXZlbHkgc3VzcGVuZGVkOhEBdGhlIG5ldyBiYXIgb25seSBnYXRlcyBmdXR1cmUgc2NvcmUgZXZhbHVhdGlvbnMgaW4gYHNldF9hdHRlbmRhbmNlYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tBAQYT3B0aW9uBARUAfEEAQgQTm9uZQAAABBTb21lBADxBAAAAQAA8QQAAAQICGUEAPUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB+QQEUwAABAD9BAEYVmVjPFQ+AAD5BAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzQEFic2VuY2VHcmFjZVRpZXIAAAwBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAARh3aW5kb3cMAQh1OAABOGFsbG93ZWRfbWlzc2VzDAEIdTgAAP0EAAAC+QQAAQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEFBQRTAAAEAAkFARhWZWM8VD4AAAUFDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNcUGVyc29uaG9vZFRocmVzaG9sZFRpZXIAAAgBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAATxzY29yZV90aHJlc2hvbGQ4AQx1MzIAAAkFAAACBQUADQUMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0EENhbGwEBFQAASAscmVzZXJ2ZV9pZHMEARRjb3VudDgBDHUzMgAABIRSZXNlcnZlIGEgbnVtYmVyIG9mIHBlcnNvbmFsIElEcy5QcmVuZXdfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAQS8UmVuZXcgYSBwZXJzb25hbCBJRC4gVGhlIElEIG11c3Qgbm90IGJlIGluIHVzZS5UY2FuY2VsX2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAIEhENhbmNlbCBhIHBlcnNvbmFsIElEIHJlc2VydmF0aW9uLlByZWNvZ25pemVfcGVyc29uaG9vZAQBMGlkc19hbmRfa2V5cxEFAfBCb3VuZGVkVmVjPChQZXJzb25hbElkLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4AAwQpAUdyYW50IHBlcnNvbmhvb2QgZm9yIGEgbGlzdCBvZiBjYW5kaWRhdGVzIHRoYXQgaGF2ZSByZXNlcnZlZCBwZXJzb25hbCBJRHMuSHN1c3BlbmRfcGVyc29uaG9vZAQBDGlkcx0FAbRCb3VuZGVkVmVjPFBlcnNvbmFsSWQsIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4ABAhdAVN1c3BlbmQgdGhlIHBlcnNvbmhvb2Qgb2YgYSBsaXN0IG9mIHJlY29nbml6ZWQgcGVvcGxlLiBUaGUgcGVvcGxlIG11c3Qgbm90IGN1cnJlbnRseSBiZShzdXNwZW5kZWQuRHJlc3VtZV9wZXJzb25ob29kBAEIaWQoAShQZXJzb25hbElkAAUEEQFSZXN1bWUgc29tZW9uZSdzIHBlcnNvbmhvb2QuIFRoZSBwZXJzb24gbXVzdCBjdXJyZW50bHkgYmUgc3VzcGVuZGVkLlhzdGFydF9tdXRhdGlvbl9zZXNzaW9uAAYIXQFTdGFydCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgZG9lcyBub3QgY2hlY2slAXdoZXRoZXIgYSBtdXRhdGlvbiBzZXNzaW9uIGlzIGFscmVhZHkgb25nb2luZyBhbmQgY2FuIHN0YXJ0IG5ldyBzZXNzaW9ucy5QZW5kX211dGF0aW9uX3Nlc3Npb24ABxBdAUVuZCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgY2FuIGVuZCBtdWx0aXBsZeBtdXRhdGlvbiBzZXNzaW9ucywgZXZlbiBvbmVzIG5vdCBzdGFydGVkIGJ5IHRoaXMgcGFsbGV0LgDYVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBubyBtdXRhdGlvbiBzZXNzaW9uIGlzIG9uZ29pbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQUEUwAABAAZBQEYVmVjPFQ+AAAVBQAABAgoCAAZBQAAAhUFAB0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBKARTAAAEACEFARhWZWM8VD4AACEFAAACKAAlBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBBDYWxsBARUAAEYeGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAAGCUBR3JhbnQgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBhdHRlc3QgcGVvcGxlLgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDILSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGF0dGVzdGF0aW9ucyB0by68LSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyB0byBncmFudC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFLxDbGVhciBhbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGZvciBhbiBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDkLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgYXR0ZXN0YXRpb25zIGZyb20uGGF0dGVzdBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABTGNhbmRpZGF0ZV9zaWduYXR1cmVhBAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAATByaW5nX3ZyZl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGUEAThTaWduYXR1cmVPZjxUPgABVGNvbnN1bWVyX3JlZ2lzdHJhdGlvbikFAaxPcHRpb248TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zT2Y8VD4+AAKESEF0dGVzdCBhbiBhY2NvdW50LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBsZWZ0LgDwVGhlIGF1dGhvcml0eSB3aWxsIGhhdmUgdG8gZ2V0IHR3byBzaWduYXR1cmVzIGZyb20gdGhlIHVzZXI6TQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIGFjY291bnQga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgY2FuZGlkYXRlYCggIGFjY291bnQ7XQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIHJpbmctdnJmIGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYHJpbmdfdnJmX2tleWAYICBrZXkuAGEBVGhlIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGJvdGgga2V5cyBmcm9tIHdoaWNoIHRoZSBzaWduYXR1cmVzIGFyZSBnZW5lcmF0ZWQgaXMgY3JlYXRlZFUBYnkgY29uY2F0ZW5hdGluZyB0aGUgYnl0ZXMgInBvcDpwZW9wbGUtbGl0ZTpyZWdpc3RlciB1c2luZyIgd2l0aCB0aGUgZW5jb2RlZCBieXRlcyBvZi0BdGhlIHVzZXIncyBhY2NvdW50IChgY2FuZGlkYXRlYCksIGFuZCB0aGUgZW5jb2RlZCBieXRlcyBvZiB0aGUgcmluZyBWUkYga2V5RChgcmluZ192cmZfa2V5YCkuAFhPbiBzdWNjZXNzLCB0aGlzIGNhbGw6wC0gc3RvcmVzIGxpdGUgcmVnaXN0cmF0aW9uIGRhdGEgaW4gYExpdGVQZW9wbGVgLPQtIGFkZHMgdGhlIHVzZXIncyByaW5nIFZSRiBrZXkgdG8gdGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24uAC0BVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBpbml0aWFsaXplZCBieSBgb25fcG9sbGAuAPwtIGBjYW5kaWRhdGVgOiBUaGUgY2FuZGlkYXRlIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBsaXRlIHBlcnNvbi5hAS0gYGNhbmRpZGF0ZV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlLCBwcm92aWRlZCBieSB0aGUgY2FuZGlkYXRlLCB0byBhbGxvdyB0aGUgYXR0ZXN0ZXLcICB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgb24gdGhlaXIgYmVoYWxmLiUBLSBgcmluZ192cmZfa2V5YDogVGhlIHJpbmcgVlJGIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpdGUgcGVyc29uLl0BLSBgcmluZ192cmZfa2V5X3NpZ25hdHVyZWA6IFRoZSByaW5nIFZSRiBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93VQEgIHRoZSBhdHRlc3RlciB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoaXMgYWxzbyBwcm92ZSB0aGUgb3duZXJzaGlwIG9mkCAgdGhlIHJpbmcgVlJGIGtleSBieSB0aGUgY2FuZGlkYXRlLl0BLSBjb25zdW1lcl9yZWdpc3RyYXRpb246IE9wdGlvbmFsIHBhcmFtZXRlciB3aGljaCBjYW4gY29udGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uXQEgIHRvIGZvcndhcmQgYSBjb25zdW1lciByZWdpc3RyYXRpb24gcmVxdWVzdCB0byB0aGUgYExpdGVDb25zdW1lclJlZ2lzdHJhcmAgc2VydmljZS4gSWZRASAgcHJlc2VudCwgaXQgYWxzbyBjb250YWlucyBhIHNpZ25hdHVyZSBjcmVhdGVkIGJ5IHRoZSB1c2VyIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSUBICBpbnRlbnQuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHNpZ25pbmcgcGF5bG9hZCBnZW5lcmF0aW9uIGF2YWlsYWJsZSBpbuwgIFt0eXBlczo6TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zOjpzaWduaW5nX3BheWxvYWRdLkhkaXNwYXRjaF9hc19zaWduZXIEARBjYWxsIAFMQm94PFQ6OlJ1bnRpbWVDYWxsPgAFAERzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATh2YWxpZF9hdF9ibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAYQtFNldCB0aGUgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggYSBsaXRlIGFsaWFzLgC0VGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgdmFsaWRfYXRfYmxvY2tgIHVudGlsxGB2YWxpZF9hdF9ibG9jayArIGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlYC5MdW5zZXRfYWxpYXNfYWNjb3VudAAHAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBQQYT3B0aW9uBARUAS0FAQgQTm9uZQAAABBTb21lBAAtBQAAAQAALQUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlc3hMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXMIJEFjY291bnRJZAEEJFNpZ25hdHVyZQFhBAAUASRzaWduYXR1cmVhBAEkU2lnbmF0dXJlAAEcYWNjb3VudAQBJEFjY291bnRJZAABOGlkZW50aWZpZXJfa2V5aQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEgdXNlcm5hbWVtBAEgVXNlcm5hbWUAAURyZXNlcnZlZF91c2VybmFtZTEFAUBPcHRpb248VXNlcm5hbWU+AAAxBQQYT3B0aW9uBARUAW0EAQgQTm9uZQAAABBTb21lBABtBAAAAQAANQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0EENhbGwEBFQAATRQcmVnaXN0ZXJfbGl0ZV9wZXJzb24MAThpZGVudGlmaWVyX2tleWkEAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABIHVzZXJuYW1lbQQBIFVzZXJuYW1lAAFEcmVzZXJ2ZWRfdXNlcm5hbWUxBQFAT3B0aW9uPFVzZXJuYW1lPgAABJRSZWdpc3RlciBhIGxpdGUgcGVyc29uIGFzIGEgY29uc3VtZXIuPHJlZ2lzdGVyX3BlcnNvbgwBUGxpbmtlZF9saXRlX2lkZW50aXR5BAEwVDo6QWNjb3VudElkAAFMbGl0ZV9pZGVudGl0eV9wcm9vZmEEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABPHVzZXJuYW1lX2Nob2ljZTkFAVhQZXJzb25hbFVzZXJuYW1lQ2hvaWNlAAEknFJlZ2lzdGVyIGEgcHJvdmVuIHBlcnNvbiBhcyBhIGNvbnN1bWVyLgBdAVRoZSBwZXJzb24gbXVzdCBsaW5rIGEgcHJldmlvdXNseSByZWNvZ25pemVkIGxpdGUgaWRlbnRpdHksIHdoaWNoIHdpbGwgYmUgdXBncmFkZWQgdG8gYVkBZnVsbCBwZXJzb24gY29uc3VtZXIuIEluIG9yZGVyIHRvIHByb3ZlIHRoZXkgaG9sZCB0aGUgbGl0ZSBpZGVudGl0eSB0aGV5IHdhbnQgdG8gbGluayxhAXVzZXJzIG11c3QgcHJvdmlkZSBhIGBsaXRlX2lkZW50aXR5X3Byb29mYCBzaWduYXR1cmUsIGNyZWF0ZWQgYnkgc2lnbmluZyB0aGUgYWxpYXMgYnl0ZXOIdXNpbmcgdGhlaXIgbGl0ZSBjb25zdW1lciBhY2NvdW50LgA5AVRoZSBjb25zdW1lciBjYW4gY2hvb3NlIGlmIHRoZXkgd2FudCB0byBoYXZlIGEgbmV3IHVzZXJuYW1lIG9yIHVzZSBhbiBleGlzdGluZxUBcmVzZXJ2YXRpb24gbWFkZSBpbiB0aGUgbmFtZSBvZiB0aGUgbGl0ZSBjb25zdW1lciB3aG8gd2lsbCBiZSBsaW5rZWQuaHRvdWNoX3BlcnNvbl9hdXRob3JpemF0aW9uAAIQSQFVcGRhdGUgYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGJ5IGVuc3VyaW5nIHRoZXkgY2FuIHN0aWxsIGF1dGhlbnRpY2F0ZSBhcyBwZW9wbGUuAFEBVGhpcyBjYWxsIG11c3QgYmUgcGVyZm9ybWVkIGF0IGxlYXN0IGBNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWxgIHNlY29uZHMgYWZ0ZXIgdGhllGxhc3QgdXBkYXRlIGluIG9yZGVyIHRvIHByZXZlbnQgc3BhbS6McmVtb3ZlX2V4cGlyZWRfdXNlcm5hbWVfcmVzZXJ2YXRpb24IASB1c2VybmFtZW0EASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAyA5AVJlbW92ZSBhbiBleHBpcmVkIGVudHJ5IGZyb20gYSB1c2VybmFtZSByZXNlcnZhdGlvbiBxdWV1ZS4gVGhlIHRhcmdldCBlbnRyeSBpcwEBaWRlbnRpZmllZCBieSBgYWNjb3VudGAgYW5kIGNhbiBiZSBhdCBhbnkgcG9zaXRpb24gaW4gdGhlIHF1ZXVlLh0BRWFjaCBjYWxsIHJlbW92ZXMgZXhhY3RseSBvbmUgZW50cnksIHNvIGl0IG11c3QgYmUgY2FsbGVkIHJlcGVhdGVkbHkgdG+QY2xlYXIgbXVsdGlwbGUgZXhwaXJlZCByZXNlcnZhdGlvbnMuAC0BVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgYGFjY291bnRgMQFwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIGZvciB0cmFuc2FjdGlvbiBwb29sIGRlZHVwbGljYXRpb24sIGFsbG93aW5nIHBhcmFsbGVsEQFzdWJtaXNzaW9ucyB0aGF0IHRhcmdldCBkaWZmZXJlbnQgZXhwaXJlZCBlbnRyaWVzIGluIHRoZSBzYW1lIHF1ZXVlLlR1cGRhdGVfaWRlbnRpZmllcl9rZXkEAThpZGVudGlmaWVyX2tleWkEAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgAEENhVcGRhdGUgdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBrZXkgb2YgYSBjb25zdW1lci4AQQFUaGUgb3JpZ2luIG11c3QgYmUgdGhlIGFjY291bnQgcmVnaXN0ZXJlZCBmb3IgdGhhdCBjb25zdW1lciwgcmVnYXJkbGVzcyBvZiB0aGVpcjBjcmVkaWJpbGl0eS6Ec2V0X3VzZXJuYW1lX3Jlc2VydmF0aW9uX2R1cmF0aW9uBAEgZHVyYXRpb24oAQx1NjQABQwdAVNldCB0aGUgZHVyYXRpb24gZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuAGBUaGUgb3JpZ2luIG11c3QgYmUgcm9vdC5MZGVtb3RlX2F1dGhfZXhwaXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABwwxAURlbW90ZSBhIGZ1bGwgcGVyc29uIHRvIGEgbGl0ZSBwZXJzb24gYWZ0ZXIgdGhlaXIgYXV0aG9yaXphdGlvbiBoYXMgZXhwaXJlZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC7Ec2V0X2ZyaWVuZF9yZXF1ZXN0X3N0YXRlbWVudF9hY2NvdW50X2Zvcl9zZXF1ZW5jZQgBJHJlZmVyZW5jZT0FAVhGcmllbmRSZXF1ZXN0UmVmZXJlbmNlAAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIQBUBQXNzb2NpYXRlIGEgc3RhdGVtZW50IGFjY291bnQgd2l0aCBhIGZyaWVuZCByZXF1ZXN0IGNvbnRleHQgc2VxdWVuY2UuAFkBVGhlIGFzc29jaWF0ZWQgYWNjb3VudCBjYW4gc3VibWl0IHN0YXRlbWVudHMgd2hpbGUgdGhpcyBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gaXMcYWN0aXZlLjUBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OkZyaWVuZFJlcXVlc3RBbGlhc2AsIGNyZWF0ZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BRAShgUmVnaXN0ZXJGcmllbmRSZXF1ZXN0V2l0aFByb29mKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciBwcm9vZiB2YWxpZGF0aW9uLh0BT24gc3VjY2VzcywgaW5jcmVhc2VzIHN0YXRlbWVudCBhbGxvd2FuY2UgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24gc3RhdGVoYHthY2NvdW50X2lkLCByZWZlcmVuY2V9YC4ALFBhcmFtZXRlcnM6zCogYHJlZmVyZW5jZWA6IGZyaWVuZCByZXF1ZXN0IHBlcmlvZC9zZXF1ZW5jZSBwYWlyLjEBICAtIGByZWZlcmVuY2UucGVyaW9kYCBtdXN0IGJlIGluIHRoZSBhY2NlcHRlZCBwZXJpb2Qgd2luZG93OiBgW3BlcmlvZChub3cgLbQgICAgRnJpZW5kUmVxdWVzdEdyYWNlV2luZG93KSwgcGVyaW9kKG5vdyldYC4FASAgLSBgcmVmZXJlbmNlLnNlcWAgbXVzdCBiZSBpbiBgMC4uPUZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZGAuTQEqIGBhY2NvdW50X2lkYDogc3RhdGVtZW50IGFjY291bnQgdG8gYXV0aG9yaXplLiBNdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgYnkgYW5vdGhlcnggIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbi6UY2xlYXJfZXhwaXJlZF9mcmllbmRfcmVxdWVzdF9zZXF1ZW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQxzZXEMAQh1OAAJKDUBQ2xlYXIgYSBzdGFsZSBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gYW5kIHJldm9rZSBpdHMgc3RhdGVtZW50IGFsbG93YW5jZS4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4hAVN1Y2NlZWRzIG9ubHkgd2hlbiB0aGUgcmVnaXN0cmF0aW9uJ3MgcGVyaW9kLWRlcml2ZWQgZXhwaXJ5IGhhcyBlbGFwc2VkLmEBT24gc3VjY2VzcywgcmVtb3ZlcyBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gc3RhdGUgYW5kIGRlY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgAsUGFyYW1ldGVyczphASogYGFjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCBhIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbi5ZASogYHNlcWA6IGZyaWVuZCByZXF1ZXN0IHNlcXVlbmNlIHRvIGNsZWFyLiBNdXN0IG1hdGNoIHN0b3JlZCByZWdpc3RyYXRpb24gc2VxdWVuY2UgYW5kqCAgYmUgaW4gYDAuLj1GcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2RgLmxzZXRfc3RhdGVtZW50X3N0b3JlX2FjY291bnQMARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAATh0YXJnZXRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAAKLAkBQ2xhaW0gYW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgZm9yIGEgdGFyZ2V0IGFjY291bnQuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OlN0bXRTdG9yZUFsaWFzYCwgcHJvZHVjZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BVAShgUmVnaXN0ZXJTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi5FAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyB0aGUgc3RhdGVtZW50IGFsbG93YW5jZSBmb3IgYHRhcmdldF9hY2NvdW50YCBhbmQgc3RvcmVzIHRoZZhtYXBwaW5nIGluIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgAsUGFyYW1ldGVyczo9ASogYHBlcmlvZGA6IGRheSBudW1iZXIgc2luY2UgVW5peCBlcG9jaC4gTXVzdCBiZSBpbiB0aGUgYWNjZXB0ZWQgcGVyaW9kIHdpbmRvdy5FASogYHNlcWA6IHNsb3QgbnVtYmVyIHdpdGhpbiB0aGUgcGVyaW9kLCBib3VuZGVkIGJ5IHRoZSBjb2xsZWN0aW9uLXNwZWNpZmljIGxpbWl0LswqIGB0YXJnZXRfYWNjb3VudGA6IHN0YXRlbWVudCBhY2NvdW50IHRvIGF1dGhvcml6ZS6MY2xlYXJfZXhwaXJlZF9zdG10X3N0b3JlX2FsbG93YW5jZXMIARhwZXJpb2Q4AQx1MzIAASxmaXJzdF9lbnRyeQgBFEFsaWFzAAsU8FJlbW92ZSBleHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIGZvciBhIHBhc3QgcGVyaW9kLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLkUBUmVtb3ZlcyB1cCB0byBgU3RtdFN0b3JlQ2xlYW51cExpbWl0YCBlbnRyaWVzIGZyb20gYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AgZm9yQQF0aGUgZ2l2ZW4gYHBlcmlvZGAsIGRlY3JlYXNpbmcgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGVhY2ggcmVtb3ZlZCBhY2NvdW50LlxjbGFpbV9sb25nX3Rlcm1fc3RvcmFnZQwBGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQADDA5AUNsYWltIGxvbmctdGVybSBzdG9yYWdlIG9uIGEgcmVtb3RlIGNoYWluIHVzaW5nIGFuIGFub255bW91cyBtZW1iZXJzaGlwIHByb29mLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpMb25nVGVybVN0b3JhZ2VDbGFpbShhbGlhcywgY29sbGVjdGlvbilgLCBjcmVhdGVkIGJ5IHRoZVUBYEFzUmVzb3VyY2VzYCAoYENsYWltTG9uZ1Rlcm1TdG9yYWdlKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciByaW5nLVZSRiBwcm9vZix2YWxpZGF0aW9uLgAsUGFyYW1ldGVyczpJASogYHBlcmlvZGA6IHRoZSBjbGFpbWluZyBwZXJpb2QuIE11c3QgYmUgdGhlIGN1cnJlbnQgcGVyaW9kIG9yIHRoZSBwcmV2aW91cyBvbmUgaWZoICB3aXRoaW4gdGhlIGdyYWNlIHdpbmRvdy4NASogYGNvdW50ZXJgOiB0aGUgY2xhaW0gY291bnRlciB3aXRoaW4gdGhlIHBlcmlvZC4gTXVzdCBiZSBsZXNzIHRoYW4tASAgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAuIEVhY2ggY291bnRlciBwcm9kdWNlcyBhIGRpc3RpbmN0IGFsaWFzLiUBKiBgYWNjb3VudF9pZGA6IHRoZSBhY2NvdW50IHRvIGF1dGhvcml6ZSBmb3Igc3RvcmFnZSBvbiB0aGUgcmVtb3RlIGNoYWluLpxjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXMIARhwZXJpb2Q4AQx1MzIAARRsaW1pdDgBDHUzMgANIPBDbGVhciBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGZvciBhbiBleHBpcmVkIHBlcmlvZC4ARQFUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbCBhdXRob3JpemVkIHZpYSB0aGUgYGF1dGhvcml6ZWAgYXR0cmlidXRlLiBJdCBjYW4gYmUlAWNhbGxlZCBieSBhbnlvbmUgb25jZSBhIHBlcmlvZCBoYXMgZnVsbHkgZXhwaXJlZCAocGFzdCB0aGUgZ3JhY2Ugd2luZG93KS4ALFBhcmFtZXRlcnM60CogYHBlcmlvZGA6IHRoZSBleHBpcmVkIHBlcmlvZCB0byBjbGVhciBhbGlhc2VzIGZvci4BASogYGxpbWl0YDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdG8gcmVtb3ZlIGluIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuOQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNYUGVyc29uYWxVc2VybmFtZUNob2ljZQABCChTdGFuZGFsb25lBABtBAEgVXNlcm5hbWUAAAAsUmVzZXJ2YXRpb24EAG0EASBVc2VybmFtZQABAAA9BQxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1hGcmllbmRSZXF1ZXN0UmVmZXJlbmNlAAAIARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAAAQQUMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQQQ2FsbAQEVAABCChhZGRfY2h1bmtzDAE0cmluZ19leHBvbmVudEUFATBSaW5nRXhwb25lbnQAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAE4ZW5jb2RlZF9jaHVua3NJBQGYQm91bmRlZFZlYzx1OCwgTWF4RW5jb2RlZENodW5rc0xlbjxUPj4AABBoQWRkcyBhIG5ldyBwYWdlIG9mIGNodW5rcy4AQQFUaGUgaGFzaCBvZiB0aGUgY2h1bmtzIG11c3QgbWF0Y2ggdGhlIGhhc2ggc3RvcmVkIG9uLWNoYWluIGluIGBDaHVua1BhZ2VIYXNoZXNgLtxUaGUgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBleGlzdHMgb24tY2hhaW4uVHNldF9jaHVua19wYWdlX2hhc2hlcwgBNHJpbmdfZXhwb25lbnRFBQEwUmluZ0V4cG9uZW50AAEscGFnZV9oYXNoZXNNBQHMQm91bmRlZFZlYzxDaHVua1BhZ2VIYXNoLCBDb25zdFUzMjxNQVhfUEFHRV9DT1VOVD4+AAEYDQFTZXRzIHRoZSBleHBlY3RlZCBoYXNoZXMgZm9yIGNodW5rIHBhZ2VzIGZvciBhIGdpdmVuIHJpbmcgZXhwb25lbnQuACEBQWxsb3dzIHNldHRpbmcgdGhlIGV4cGVjdGVkIGhhc2hlcyB0aGF0IGNodW5rcyBtdXN0IG1hdGNoIHdoZW4gYWRkZWQgdmlhNGBhZGRfY2h1bmtzYC4ArFRoZSBvcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRQUQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwUmluZ0V4cG9uZW50AAEMEFIyZTkACQAUUjJlMTAACgAUUjJlMTQADgAASQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABNBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAB1BAEYVmVjPFQ+AABRBQxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0EENhbGwEBFQAATQsbWVyZ2VfcmluZ3MMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAAMUQFNZXJnZSB0aGUgbWVtYmVycyBpbiB0d28gcmluZ3MgaW50byBhIHNpbmdsZSwgbmV3IHJpbmcuIEluIG9yZGVyIGZvciB0aGUgcmluZ3MgdG8gYmU1AWVsaWdpYmxlIGZvciBtZXJnaW5nLCB0aGV5IG11c3QgYmUgYmVsb3cgMS8yIG9mIG1heCBjYXBhY2l0eSwgaGF2ZSBubyBwZW5kaW5n4HN1c3BlbnNpb25zIGFuZCBub3QgYmUgdGhlIHRvcCByaW5nIHVzZWQgZm9yIG9uYm9hcmRpbmcuTHNldF9vbmJvYXJkaW5nX3NpemUIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgABBE0BRm9yY2Ugc2V0IHRoZSBvbmJvYXJkaW5nIHNpemUgZm9yIGEgY29sbGVjdGlvbi4gVGhpcyBjYWxsIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4wc2VsZl9pbmNsdWRlDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAARhtZW1iZXIIASxNZW1iZXJPZjxUPgABNGNhbGxfdmFsaWRfYXQoAQx1NjQAAihBAUFsbG93IGEgbWVtYmVyIHdhaXRpbmcgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUgdG8gaW5jbHVkZSB0aGVtc2VsdmVzIGludG8gYSByaW5nTQFhZnRlciBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLiBUaGlzIGJ5cGFzc2VzIHRoZSBub3JtYWwgY29ob3J0LWJhc2VkIG9uYm9hcmRpbmcgc2l6ZTByZXF1aXJlbWVudC4AOQFUaGlzIGNhbGwgbXVzdCBiZSBkaXNwYXRjaGVkIHdpdGggYSBgU2VsZkluY2x1ZGVgIG9yaWdpbiwgYXV0aGVudGljYXRlZCBieSB0aGUhAWBBc01lbWJlcmAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBUaGUgcmluZ3MgbXVzdCBiZSBpbiBhcHBlbmQtb25seSBtb2RlLgBNAVRoZSBgY2FsbF92YWxpZF9hdGAgcGFyYW1ldGVyIGRpY3RhdGVzIHRoZSB0aW1lIHdpbmRvdyBpbiB3aGljaCB0aGlzIHRyYW5zYWN0aW9uIGlzTQF2YWxpZCBhbmQgcmVwcmVzZW50cyB0aGUgdGltZXN0YW1wIChpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoKSB3aGVuIHRoaXMgY2FsbDhiZWNvbWVzIHZhbGlkLlRidWlsZF9yaW5nX2F1dGhvcml6ZWQYAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX2V4cG9uZW50RQUBMFJpbmdFeHBvbmVudAABIHJldmlzaW9u1AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAEodG9faW5jbHVkZTgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AQx1MzIAZCzYQnVpbGQgYSByaW5nIHJvb3QgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uANhTdWJtaXR0ZWQgYnkgdGhlIE9DVyB3aXRoIGEgYHRvX2luY2x1ZGVgIHNuYXBzaG90IGZyb20xAVtgUGFsbGV0OjpzaG91bGRfYnVpbGRfcmluZ2BdLiBMZWZ0b3ZlcnMgZnJvbSBsYXRlciBvbmJvYXJkaW5nIGFyZSBwaWNrZWQgdXAZAW9uIHRoZSBuZXh0IE9DVyB0aWNrLCBvciBieSB0aGUgbWVtYmVyIHZpYSBbYFNlbGY6OnNlbGZfaW5jbHVkZWBdIHdoZW6AY29ob3J0IGdhdGluZyBzdGFsbHMgb25ib2FyZGluZy4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuaG9uYm9hcmRfbWVtYmVyc19hdXRob3JpemVkFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEQaGVhZDgBJFBhZ2VJbmRleAABMGZpcnN0X21lbWJlclUFAUxPcHRpb248TWVtYmVyT2Y8VD4+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBlIBEBT25ib2FyZCBtZW1iZXJzIGZyb20gdGhlIG9uYm9hcmRpbmcgcXVldWUgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5wbWVyZ2VfcXVldWVfcGFnZXNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEwaW5pdGlhbF9oZWFkOAEkUGFnZUluZGV4AAEgbmV3X2hlYWQ4ASRQYWdlSW5kZXgAZgwNAU1lcmdlIHRoZSB0b3AgdHdvIG9uYm9hcmRpbmcgcXVldWUgcGFnZXMgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoByZW1vdmVfc3VzcGVuZGVkX2tleXNfYXV0aG9yaXplZBABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9u1AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBnIOxSZW1vdmUgc3VzcGVuZGVkIGtleXMgZnJvbSBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmxkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGgMyERlbGV0ZSBhIHBhZ2UgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AZW5xdWV1ZV9yaW5nX2RlbGV0aW9uX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaRzsRW5xdWV1ZSBhIHJpbmcgZm9yIGRlbGV0aW9uIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AIQFBcmNoaXZlcyB0aGUgcmluZyByb290LCBub3RpZmllcyBzdWJzY3JpYmVycywgcmVtb3ZlcyByaW5nIG1ldGFkYXRhLCBhbmT4ZW5xdWV1ZXMgcmluZyBwYWdlcyBpbnRvIGBSaW5nRGVsZXRpb25RdWV1ZWAgZm9yIHByb2Nlc3NpbmcgYnl4YGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZGAuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZGVsZXRlX29uYm9hcmRpbmdfcXVldWVfcGFnZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGoc/ERlbGV0ZSBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIGBNZW1iZXJzYCBlbnRyaWVzIGZvciB0aGUgbWVtYmVycyBpbiB0aGUgcGFnZSwgdGhlbiByZW1vdmVzJQF0aGUgcGFnZSBpdHNlbGYuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MgYW5kIHJpbmcgcGFnZXMgaGF2ZSBiZWVuOGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZmluYWxpemVfY29sbGVjdGlvbl9kZWxldGlvbl9hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAaxx0RmluYWxpemUgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCByZW1haW5pbmcgcGVyLWNvbGxlY3Rpb24gc3RvcmFnZSBhbmQgdGhlIG93bmVyJ3MgaWRlbnRpZmllchkBcmVmZXJlbmNlLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzLCByaW5nIHBhZ2VzLCBhbmQgb25ib2FyZGluZ5BxdWV1ZSBwYWdlcyBoYXZlIGJlZW4gZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmhtYXJrX3Jpbmdfc3RhbGVfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABsGPBNYXJrIGEgcmluZyBhcyBzdGFsZSBzbyB0aGUgb2ZmY2hhaW4gd29ya2VyIHdpbGwgcmVidWlsZCBpdC4AHQFBbnlvbmUgY2FuIHN1Ym1pdCB0aGlzIHRyYW5zYWN0aW9uIGlmIHRoZSByaW5nIGhhcyBtZW1iZXJzIHRoYXQgYXJlIG5vdCUBeWV0IGluY2x1ZGVkIGluIHRoZSByb290IChgdG90YWwgPiBpbmNsdWRlZGApIGFuZCB0aGUgcmluZyBpcyBub3QgYWxyZWFkeSUBbWFya2VkIHN0YWxlLiBUaGlzIGlzIGEgcmVjb3ZlcnkgbWVjaGFuaXNtIGluIGNhc2UgdGhlIGBTdGFsZVJpbmdzYCBlbnRyeWx3YXMgbG9zdCBvciBuZXZlciBpbnNlcnRlZC50Y2xlYW5fdXBfb2xkX3Jvb3RzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRsaW1pdDgBDHUzMgBtIIBDbGVhbiB1cCBleHBpcmVkIG9sZCByaW5nIHJvb3RzLgARAVJlbW92ZXMgdXAgdG8gYGxpbWl0YCBvbGQgcmluZyByb290cyBmb3IgdGhlIGdpdmVuIHJpbmcgaW4gdGhlIGdpdmVuLGNvbGxlY3Rpb24uANBUaGUgdHJhbnNhY3Rpb24gc291cmNlIG11c3QgYmUgYExvY2FsYCBvciBgSW5CbG9ja2AuAPRUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUFBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAWQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDYWxsBARUAAFcFHNwbGl0BAEoc3BsaXRfaW50b10FAWkBQm91bmRlZFZlYzwoQ29pblZhbHVlLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksClQ6Ok1heFNwbGl0T3V0cHV0cyw+AABQhFNwbGl0IGEgY29pbiBpbnRvIG11bHRpcGxlIGNvaW5zLgA9AVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4A1FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2lucyBieSBvbmUuAEkBVGhlIGBzcGxpdF9pbnRvYCBwYXJhbWV0ZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pblUBdmFsdWUgYW5kIGEgbGlzdCBvZiBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy4gRm9yIGVhY2ggcGFpciwgYSBuZXcgY29pbiB3aXRoIHRoZSBnaXZlbsR2YWx1ZSBpcyBjcmVhdGVkIGZvciBlYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgaWQuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uTQEqIFRoZSBjb2luIHZhbHVlIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uLQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW4gY29pbi4JASogVGhlIG51bWJlciBvZiBvdXRwdXRzIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhTcGxpdE91dHB1dHNdLiUBKiBUaGUgYWdlIG9mIHRoZSBuZXcgY29pbnMgaXMgc2V0IHRvIHRoZSBhZ2Ugb2YgdGhlIG9yaWdpbiBjb2luIHBsdXMgb25lLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLiB0cmFuc2ZlcgQBCHRvBAEwVDo6QWNjb3VudElkAAEsjFRyYW5zZmVyIGEgY29pbiB0byBhbm90aGVyIGFjY291bnQuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgDQVGhlIGNhbGwgaXMgZnJlZSBhbmQgYWdlcyB0aGUgcmVzdWx0aW5nIGNvaW4gYnkgb25lLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKdwqIFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4u4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uXGxvYWRfcmVjeWNsZXJfd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwZQQBOFNpZ25hdHVyZU9mPFQ+AAJEaExvYWQgY29pbiBpbnRvIGEgcmVjeWNsZXIuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBEVGhlIGNhbGwgaXMgZnJlZS4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCkBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLlEBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgY29pbidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLgUBKiBUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBmb3IgdGhlIGNvaW4ncyB2YWx1ZSBtdXN0IGFscmVhZHkgZXhpc3SEbG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0EAEwcHJlc2VydmF0aW9ubQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWWdAwEkQ29pblZhbHVlAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwZQQBOFNpZ25hdHVyZU9mPFQ+AANwkExvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyLgCMVGhlIG9yaWdpbiBtdXN0IGJlIGEgc2lnbmVkIG9yaWdpbi4AgFRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmVmdW5kZWQuAEUBVGhlIGBwcmVzZXJ2YXRpb25gIHBhcmFtZXRlciBpbmRpY2F0ZXMgaG93IHRoZSBhc3NldCB0cmFuc2ZlciBzaG91bGQgcHJlc2VydmUgdGhlRHNpZ25lcidzIGFjY291bnQuADkBVGhlIGB2YWx1ZWAgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgY29pbiB2YWx1ZSB0byBiZSBsb2FkZWQgaW50byB0aGUgcmVjeWNsZXIuPQFUaGUgZXF1aXZhbGVudCBhbW91bnQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgc2lnbmVyIHRvTHRoZSBwYWxsZXQgYWNjb3VudC4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AVQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgcGFyYW1ldGVyIGlzIHRoZSBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlNGBtZW1iZXJfa2V5YC4ANFJlcXVpcmVtZW50czoBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLkEBKiBUaGUgYHZhbHVlYCBtdXN0IGJlIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgW0NvbmZpZzo6TWluaW11bUV4cG9uZW50XSBhbmRwICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLlUBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudIggIGFtb3VudCBmb3IgdGhlIGdpdmVuIGNvaW4gdmFsdWUuWQEqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuoGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWQQATBwcmVzZXJ2YXRpb25tBQFEQ29kZWNQcmVzZXJ2YXRpb24AARR2YWx1ZZ0DASRDb2luVmFsdWUAAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBlBAE4U2lnbmF0dXJlT2Y8VD4AD0wtAUxvYWQgZXh0ZXJuYWwgYXNzZXQgaW50byBhIHJlY3ljbGVyIChpbmZhbGxpYmxlLCB2YWxpZGF0ZWQgdW5wYWlkIHZhcmlhbnQpLgBNAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhldHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YXJpYW50jQFbYEFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWRgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkKS4AANxUaGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhbGlkYXRpb24gcGhhc2UgbXVzdCBlbnN1cmU6FQEtIFRoZSBgbWVtYmVyX2tleWAgaXMgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci5FAS0gVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4tAS0gVGhlIGB2YWx1ZWAgaXMgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZEEBICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLCBhbmQgY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudC5ZAS0gVGhlIHNpZ25lciBoYXMgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnQgYW1vdW503CAgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlIChyZXNwZWN0aW5nIGBwcmVzZXJ2YXRpb25gKS6sLSBUaGUgbm9uY2UgaXMgdmFsaWQgZm9yIHJlcGxheSBwcm90ZWN0aW9uLtQtIFRoZSByZWN5Y2xlciBjb2xsZWN0aW9uIGZvciBgdmFsdWVgIGFscmVhZHkgZXhpc3RzLgBEVGhlIGNhbGwgaXMgZnJlZS64bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZF9iYXRjaAQBFGl0ZW1zcQUB1EJvdW5kZWRWZWM8VW5wYWlkTG9hZElucHV0PFQ+LCBUOjpNYXhCYXRjaFVucGFpZExvYWQ+ABA8GQFCYXRjaGVkIHZhcmlhbnQgb2YgW2BTZWxmOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkYF0uAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGV0dHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnSNAVtgQXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZGBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWQpLjEBVGhlIGV4dGVuc2lvbiB2YWxpZGF0ZXMgZWFjaCBpbm5lciBpdGVtIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdpdGhpbi1iYXRjaFUBbWVtYmVyLWtleSB1bmlxdWVuZXNzIGFuZCB0aGF0IHRoZSBzaWduZXIncyBiYWxhbmNlIGNvdmVycyB0aGUgc3VtIG9mIGFsbCBpbm5lciBhc3NldCBhbW91bnRzLgBBAVRoaXMgY2FsbCBkaXNwYXRjaGVzIGVhY2ggaW5uZXIgbG9hZCBieSByZS1ydW5uaW5nIHRoZSBzYW1lIGNoZWNrcyB0aGUgZXh0ZW5zaW9uUQFqdXN0IHBlcmZvcm1lZCAoc2VlIFtgUmVjeWNsZXJNYW5hZ2VyOjpsb2FkYF0pLiBUaGUgcmVkdW5kYW5jeSBtYXRjaGVzIHRoZSBkZWZlbnNpdmVNAXBhdHRlcm4gdXNlZCBieSBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXTogYSBkaXNwYXRjaCBwYXRoRQF0aGF0IGZhaWxzIGFueSBvZiB0aGVzZSBjaGVja3MgaXMgYSBsb2dpYyBidWcgaW4gdGhlIGV4dGVuc2lvbiwgbm90IGEgdXNlciBlcnJvci4ARFRoZSBjYWxsIGlzIGZyZWUuZHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW4UARxhbGlhc2VzfQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWWdAwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAAEaJRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IGEgbmV3IGNvaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYCwgd2hpY2ggY2FuIGJlYQFvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpIHVzaW5nWGBBc1VubG9hZFRva2VuUGVvcGxlYCzsYEFzVW5sb2FkVG9rZW5MaXRlUGVvcGxlYCwgb3IgYEFzVW5sb2FkVG9rZW5QYWlkYCB2YXJpYW50cy4ASQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gcHJvdmUgdGhleSBvd24gb25lIG9yIG1vcmUgY29pbnMgaW4gYSByZWN5Y2xlciByaW5nXQF3aXRob3V0IHJldmVhbGluZyB3aGljaCBzcGVjaWZpYyBjb2lucyB0aGV5IG93bi4gSXQgY29uc29saWRhdGVzIG9uZSBvciBtdWx0aXBsZSBpbnB1dHNoaW50byBhIHNpbmdsZSBvdXRwdXQgY29pbi4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLvgqIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvwqIGBfcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy7EKiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIG5ldyBjb2luLgA0UmVxdWlyZW1lbnRzOikBKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC7wKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi4hASogVGhlIGBhbGlhc2VzYCBwcm92aWRlZCBtdXN0IG1hdGNoIHRoZSBhbGlhc2VzIGRlcml2ZWQgZnJvbSB0aGUgcHJvb2ZzLhUBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCBmcm9tIHRoaXMgcmVjeWNsZXIuvCogVGhlIG51bWJlciBvZiBhbGlhc2VzIG11c3QgYmUgYSBwb3dlciBvZiB0d28uNQEqIFRoZSByZXN1bHRpbmcgY29uc29saWRhdGVkIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLox1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldBQBHGFsaWFzZXN9BQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZZ0DASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAVg8FVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0LgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBdAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6UHJlcGFpZF0gKHZpYSBmcmVlIG9yIHBhaWQgdW5sb2FkIHRva2VuKSwgbm8gZmVlIGlzIGRlZHVjdGVkLlEBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhlIGZlZSBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB1bmxvYWRlZCBhc3NldHMuADEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHdpdGhkcmF3IHRoZWlyIGNvaW5zIGJhY2sgaW50byB0aGUgdW5kZXJseWluZ4Bhc3NldCAoZS5nLiwgYW4gZXh0ZXJuYWwgYXNzZXQpLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLuQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdW5kZXJseWluZyBhc3NldC4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLqxwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwZQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABlQpAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyBhIGNvaW4uAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBJAVRoZSBjb2luIGlzIGNvbnN1bWVkLiBUaGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIGNvaW4ncyB2YWx1ZSBhbmQgdHJhbnNmZXJyZWQgdG8dAVtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4gVGhlIHJlbWFpbmluZyB2YWx1ZSBvZiB0aGUgY29pbiBpcyBkZXN0cm95ZWQuANRJZiB0aGUgY2FsbCBmYWlscywgdGhlIG9yaWdpbiBjb2luIGlzIHN0aWxsIGNvbnN1bWVkLgBdAVRvIHByb3RlY3QgdGhlIHVzZXIgYWdhaW5zdCB2YXJ5aW5nIGZlZXMsIGlmIHRoZSBjb2luJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBmZWUsIHRoZehjYWxsIGlzIGludmFsaWQgKGFuIGludmFsaWQgY2FsbCBuZXZlciBnb2VzIGludG8gYSBibG9jaykuAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM64CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0u1CogVGhlIGNvaW4gdmFsdWUgbXVzdCBiZSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBmZWUu2CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLrRwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9uYXRpdmUIAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBlBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAHPF0BUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIHRoZSBuYXRpdmUgY3VycmVuY3kuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgBFAVRoaXMgYWRkcyB0aGUgYG1lbWJlcl9rZXlgIHRvIGEgInBhaWQgdW5sb2FkIHRva2VuIHJpbmciLiBCZWluZyBwYXJ0IG9mIHRoaXMgcmluZyEBYWxsb3dzIHRoZSB1c2VyIHRvIGxhdGVyIGdlbmVyYXRlIGFuIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAA0BVGhlIGZlZSBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBjYWxsZXIgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC7UcGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfZXh0ZXJuYWxfYXNzZXQIAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBlBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAIQEUBUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIHRoZSB1bmRlcmx5aW5nPGV4dGVybmFsIGFzc2V0LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmchAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBgVW5sb2FkVG9rZW5gIHRvIHVubG9hZCBhIHJlY3ljbGVyLgANAVRoZSBmZWUgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgY2FsbGVyIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrYKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQuwHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X2FuZF92b3VjaGVycxwBHGFsaWFzZXN9BQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZZ0DASRDb2luVmFsdWUAARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW508AFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwbmV3X3ZvdWNoZXJzgQUB4EJvdW5kZWRWZWM8KENvaW5WYWx1ZSwgTWVtYmVyT2Y8VD4pLCBUOjpNYXhTcGxpdE91dHB1dHM+AAmMCQFVbmxvYWQgYSByZWN5Y2xlciBpbnRvIGEgbWl4IG9mIGV4dGVybmFsIGFzc2V0IGFuZCBmcmVzaCB2b3VjaGVycy4AUQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb27UZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKS4AWQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gb2ZmYm9hcmQgcGFydCBvZiB0aGUgdW5sb2FkZWQgdmFsdWUgaW50byB0aGUgdW5kZXJseWluZ+hhc3NldCB3aGlsZSByZW1pbnRpbmcgdGhlIHJlc3QgYXMgZnJlc2ggcmVjeWNsZXIgdm91Y2hlcnMuAEUBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgYXMtaXMuNQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHNwZWNpZmllZAUBYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAsIHNvIHRoZSByZWNpcGllbnQgcmVjZWl2ZXMgdGhlIHJlbWFpbmRlci4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLvgqIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXMgcHJvb2ZzLvwqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgZXh0ZXJuYWwgYXNzZXQgcG9ydGlvbi5dASogYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGA6IHRoZSBncm9zcyBhc3NldCBwb3J0aW9uIHRvIG9mZmJvYXJkIGZyb20gdGhlIHVubG9hZGVkIHZhbHVlLmEBKiBgbmV3X3ZvdWNoZXJzYDogdGhlIGZyZXNoIHJlY3ljbGVyIHZvdWNoZXJzIHRvIG1pbnQgZnJvbSB0aGUgcmVtYWluaW5nIHVubG9hZGVkIHZhbHVlLgBZAVRoZSB0b3RhbCB1bmxvYWRlZCB2YWx1ZSBtdXN0IGFsd2F5cyBlcXVhbCB0aGUgYXNzZXQgcG9ydGlvbiBwbHVzIHRoZSB2b3VjaGVyIHBvcnRpb24uVQFJbiBgRnJvbU91dHB1dGAgbW9kZSwgdGhlIGFzc2V0IHBvcnRpb24gbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gY292ZXIgdGhlIHVubG9hZCBmZWUuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS7wKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi5ZASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgKGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9uZSB3aGVuIGBmZWVgFQEgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB3aGljaCB3YXMgcHJlLW1hcmtlZCBpbiB0aGUgZXh0ZW5zaW9uKS5FASogYG5ld192b3VjaGVyc2AgbXVzdCBub3QgYmUgZW1wdHksIGFuZCBhbGwgdm91Y2hlciBtZW1iZXIga2V5cyBtdXN0IGJlIHZhbGlkIGFuZCQgIHVudXNlZC5hASogVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgZXF1YWwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgcGx1cyB0aGUgdG90YWwgYXNzZXQgdmFsdWVQICBvZiBgbmV3X3ZvdWNoZXJzYC5FASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgbXVzdCBjb3ZlciB0aGUgZmVlLsR1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzEAEUaW5wdXSNBQGgVW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPgABMGFsaWFzX3Byb29mc6EDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3mRBQEsRmVlQ3VycmVuY3kACxgxAVVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4AVQFDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNddGZvciB0aGUgc2luZ2xlLXJlY3ljbGVyIGNhc2UuAFkBU2VlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c10gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi7IdW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMQARhpbnB1dHOVBQG0VmVjPFVubG9hZFJlY3ljbGVySW5wdXQ8VDo6TWF4Q29uc29saWRhdGlvbj4+AAEwYWxpYXNfcHJvb2ZzoQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeZEFASxGZWVDdXJyZW5jeQAMWFEBVW5sb2FkIG11bHRpcGxlIHJlY3ljbGVycyB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAEEBVGhpcyBpcyBhIHNpZ25lZC1vcmlnaW4gdmVyc2lvbiBvZiBbYFNlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0ZAXdoZXJlIHRoZSBmZWUgaXMgcGFpZCBleHBsaWNpdGx5IGJ5IHRoZSBzaWduZXIgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGXwcmluZy1hdXRoZW50aWNhdGVkIHVubG9hZCB0b2tlbiwgYW5kIGZvciBtdWx0aXBsZSByZWN5Y2xlcnMuADEBVGhlIGZlZSBjaGFyZ2VkIGlzIG9uZSB1bmxvYWQgdG9rZW4gZmVlIHBlciByZWN5Y2xlciAoaS5lLiwgYGlucHV0cy5sZW4oKWApLgAsUGFyYW1ldGVyczoxASogYGlucHV0c2A6IEEgbGlzdCBvZiBpbnB1dHMsIHNwZWNpZnlpbmcgdGhlIHJlY3ljbGVyIGFuZCBhbGlhc2VzIHRvIHVubG9hZC5VASogYGFsaWFzX3Byb29mc2A6IHRoZSBwcm9vZnMgZm9yIGFsbCBhbGlhc2VzIGFjcm9zcyBhbGwgaW5wdXRzLCBzaWduZWQgb3ZlciBhIG1lc3NhZ2VVASAgdGhhdCBpbmNsdWRlcyB0aGUgc2lnbmVyLiBUaGUgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4sICBgaW5wdXRzYC64KiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIGFzc2V0LjkBKiBgZmVlX2N1cnJlbmN5YDogd2hldGhlciB0byBwYXkgdGhlIGZlZSBpbiBuYXRpdmUgY3VycmVuY3kgb3IgZXh0ZXJuYWwgYXNzZXQuADRSZXF1aXJlbWVudHM6cCogVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC6UKiBBbGwgc3BlY2lmaWVkIHJlY3ljbGVycyBtdXN0IGV4aXN0Li0BKiBUaGUgYWxpYXMgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4gYGlucHV0c2AuOQEqIGBpbnB1dHNgIG11c3Qgbm90IGJlIGVtcHR5IGFuZCBlYWNoIGVsZW1lbnQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBhbGlhcy5BASogVGhlIHNpZ25lciBtdXN0IGhhdmUgc3VmZmljaWVudCBiYWxhbmNlIHRvIHBheSB0aGUgZmVlIChvbmUgZmVlIHBlciByZWN5Y2xlcikuaHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5zGAEcYWxpYXNlc30FAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlnQMBJENvaW5WYWx1ZQABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoc3BsaXRfaW50b10FAWkBQm91bmRlZFZlYzwoQ29pblZhbHVlLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksClQ6Ok1heFNwbGl0T3V0cHV0cyw+AAEcbWF4X2ZlZfABVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgANtNRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IG11bHRpcGxlIG5ldyBjb2lucyAoc3BsaXQpLgApAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAuAEUBVGhpcyBmdW5jdGlvbiBjb21iaW5lcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbl0gYW5kRQFbU2VsZjo6c3BsaXRdIGluIGEgc2luZ2xlIGF0b21pYyBvcGVyYXRpb24uIFRoZSByZXN1bHRpbmcgY29pbnMnIGFnZSBpcyAxIGJlY2F1c2VFAXRoZSBhY3Rpb24gb2Ygc3BsaXR0aW5nIGFnZSBjb2lucy4gVGhpcyBpcyBhbHNvIGltcG9ydGFudCBiZWNhdXNlIHJlc3VsdGluZyBjb2luc+hhcmUgbm90IGVudGlyZWx5IGZyZXNoLCB0aGV5IGNhbiBiZSBsaW5rZWQgdG8gb3RoZXIgY29pbnMuAFkBVW5saWtlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSwgdGhpcyBjYWxsIGRvZXMgKipub3QqKiByZXF1aXJlIHRoZSBudW1iZXIgb2Z0YWxpYXNlcyB0byBiZSBhIHBvd2VyIG9mIHR3by4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLvgqIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLkkBKiBgc3BsaXRfaW50b2A6IGEgdmVjdG9yIG9mIHBhaXJzLCBlYWNoIHBhaXIgY29udGFpbmluZyBhIGNvaW4gdmFsdWUgYW5kIGEgbGlzdCBvZmggIGRlc3RpbmF0aW9uIGFjY291bnQgaWRzLlkBKiBgbWF4X2ZlZWA6IHRoZSBtYXhpbXVtIGZlZSB0aGUgY2FsbGVyIGlzIHdpbGxpbmcgdG8gcGF5LCBleHByZXNzZWQgaW4gdGhlIHVuZGVybHlpbmdJASAgYXNzZXQgYmFsYW5jZS4gSXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGU5ASAgdW5sb2FkZWQgY29pbnMgYW5kIHRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gLgDIICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCB0aGlzIG11c3QgYmUgMC5FASAgV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgdGhpcyBhbW91bnQgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgaW5wdXQ6IHRoZVUBICBuZXR3b3JrIGZlZSBpcyB0cmFuc2ZlcnJlZCB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0gYW5kIGFueSByZW1haW5kZXIgaXMgYnVybmVkLkEBICBUaGUgY2FsbGVyIGNhbiBxdWVyeSBgZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9hc3NldGAgdG8gZXN0aW1hdGUgdGhlIGZlZS4AYQEgIFRoaXMgcGFyYW1ldGVyIHNlcnZlcyBhcyBhIHNhZmVndWFyZDogdGhlIHRyYW5zYWN0aW9uIGlzIHJlamVjdGVkIGF0IHZhbGlkYXRpb24gaWYgdGhlQQEgIGFjdHVhbCBuZXR3b3JrIGZlZSBleGNlZWRzIGBtYXhfZmVlYCwgcHJvdGVjdGluZyB0aGUgY2FsbGVyIGZyb20gZXhjZXNzaXZlIGZlZV0BICBpbmNyZWFzZXMgdGhhdCB3b3VsZCByZW5kZXIgdGhlIGFyZ3VtZW50IGBzcGxpdF9pbnRvYCBpbnZhbGlkICh1bmxvYWRlZCBmdW5kcyBtdXN0IGJlmCAgaGlnaGVyIHRoYW4gdGhlIHNwbGl0IHBsdXMgdGhlIGZlZSkuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS7wKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi4hASogVGhlIGBhbGlhc2VzYCBwcm92aWRlZCBtdXN0IG1hdGNoIHRoZSBhbGlhc2VzIGRlcml2ZWQgZnJvbSB0aGUgcHJvb2ZzLmEBKiBUaGUgdG90YWwgdmFsdWUgb2YgdGhlIG5ldyBjb2lucyBkZWZpbmVkIGluIGBzcGxpdF9pbnRvYCBwbHVzIGBtYXhfZmVlYCBtdXN0IGVxdWFsIHRoZZAgIHRvdGFsIHZhbHVlIG9mIHRoZSB1bmxvYWRlZCBjb2lucy5VASogYG1heF9mZWVgIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgbWluaW11bSBjb2luLiAoVGhpcyBpcyBpbXBsaWVkIGJ5IHRoZSBjb25kaXRpb24kICBhYm92ZSku4CogRWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4u3CogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYG1heF9mZWVgIG11c3QgYmUgMC4tASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIG5ldHdvcmsgZmVlLqBkaXJlY3Rfb2ZmYm9hcmRfY29pbl9pbnRvX2V4dGVybmFsX2Fzc2V0BAEIdG8EATBUOjpBY2NvdW50SWQADjwlAURpcmVjdGx5IG9mZmJvYXJkIGEgZnJlc2gsIDAtYWdlIGNvaW4gaW50byB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldC4A1FRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCBvYnRhaW5lZCB0aHJvdWdo6FtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKSB1c2luZyBgQXNDb2luYC4ADQFCZWNhdXNlIHRoZSBjb2luIG11c3QgYmUgZnJlc2ggKGBhZ2UgPT0gMGApLCB0aGlzIGNhbGwgYnlwYXNzZXMgdGhlSQFyZWN5Y2xlci91bmxvYWQtdG9rZW4gb2ZmYm9hcmRpbmcgZmxvdyBhbmQgcmVsZWFzZXMgdGhlIHVuZGVybHlpbmcgYXNzZXQgZGlyZWN0bHkuACxQYXJhbWV0ZXJzOj0BKiBgdG9gOiBkZXN0aW5hdGlvbiBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgdGhlIHJlbGVhc2VkIHVuZGVybHlpbmcgYXNzZXQgYW1vdW50LgA0UmVxdWlyZW1lbnRzOpAqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpDb2luXS6oKiBUaGUgY29pbiBtdXN0IGJlIGZyZXNoOiBgY29pbi5hZ2UgPT0gMGAuCQEqIFRoZSBjb2luIHZhbHVlIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyB1bmRlcmx5aW5nLWFzc2V0IGFtb3VudC5cc2V0X3VuZGVybHlpbmdfYXNzZXRfaWQEASBhc3NldF9pZAUBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4ACiS8U2V0IHRoZSB1bmRlcmx5aW5nIGFzc2V0IGlkIHVzZWQgYnkgdGhlIHBhbGxldC4ALQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6VW5kZXJseWluZ0Fzc2V0SWRNYW5hZ2VyYF0uIFRoZSBzZXR0ZXIgaXMhASoqc2luZ2xlLXVzZSoqOiBjYWxsaW5nIGl0IGFnYWluIGFmdGVyIHRoZSBhc3NldCBpZCBoYXMgYmVlbiBzZXQgcmV0dXJuc00BW2BFcnJvcjo6QXNzZXRJZEFscmVhZHlTZXRgXS4gQ2hhbmdpbmcgdGhlIHVuZGVybHlpbmcgYXNzZXQgYWZ0ZXIgY29pbnMgZXhpc3Qgd291bGQ1AW9ycGhhbiB0aGUgaGVsZCBiYWxhbmNlcyBvZiBldmVyeSBpbi1mbGlnaHQgY29pbiwgc28gdGhlIG9uLWNoYWluIGRlY2lzaW9uIGlzXGludGVudGlvbmFsbHkgb25lLXNob3QuAORUaGUgYXNzZXQgaWQgbXVzdCBhbHJlYWR5IGV4aXN0IGluIFtgQ29uZmlnOjpGdW5naWJsZXNgXS44Y2xlYW5fcmVjeWNsZXIEARR2YWx1ZZ0DASRDb2luVmFsdWUAZRx0Q2xlYW4gdXAgYW4gZXhwaXJlZCByZWN5Y2xlci4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLgANAVRoaXMgcmVtb3ZlcyBhbiBvbGQgcmVjeWNsZXIgdGhhdCBoYXMgZXhjZWVkZWQgaXRzIGV4cGlyYXRpb24gdGltZS5JAUFueSByZW1haW5pbmcgKG5vdCB1bmxvYWRlZCkgdmFsdWUgaW4gdGhlIHJlY3ljbGVyIGlzIGNvbnNpZGVyZWQgbG9zdCBhbmQgYWRkZWQgdG90W1RvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zXS5kY2xlYW5fY29uc3VtZWRfZnJlZV90b2tlbgQBGHBlcmlvZDgBGFBlcmlvZABmDPxDbGVhbnVwIHN0b3JhZ2UgZm9yIGNvbnN1bWVkIGZyZWUgdW5sb2FkIHRva2VucyBvZiBvbGQgcGVyaW9kcy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLnBjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABoGAkBQ2xlYW4gdXAgYSBzaW5nbGUgcmluZyBpbiBhbiBleHBpcmVkIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb24uAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4pAVJpbmdzIG11c3QgYmUgY2xlYW5lZCBzZXF1ZW50aWFsbHkgKHJpbmcgMCBmaXJzdCwgdGhlbiAxLCBldGMuKSBiZWZvcmUgdGhldGNvbGxlY3Rpb24gY2FuIGJlIGRlbGV0ZWQgdmlhjQFbYGRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb25gXShTZWxmOjpkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uKS5MY2xlYW5fcmVjeWNsZXJfZHVzdABpFHBDbGVhbiB1cCBkdXN0IGZvciByZWN5Y2xlcnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5JAVJlbW92ZXMgdXAgdG8gRFVTVF9DTEVBTlVQX0JBVENIX1NJWkUgdW5sb2FkZWQgYWxpYXMgZW50cmllcyBwZXIgY2FsbCB0byBib3VuZCB0aGUob3BlcmF0aW9uLnBjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9kdXN0AGoMlENsZWFuIHVwIGR1c3QgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLqxkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uBAEYcGVyaW9kOAEYUGVyaW9kAGsYRQFEZWxldGUgYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGFmdGVyIGFsbCByaW5ncyBoYXZlIGJlZW4gY2xlYW5lZC4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLpBBbGwgcmluZ3MgbXVzdCBoYXZlIGJlZW4gY2xlYW5lZCB2aWFBAVtgY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZ2BdKFNlbGY6OmNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmcpIGJlZm9yZSB0aGlzOGNhbiBiZSBjYWxsZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLl0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBYQUEUwAABABpBQEYVmVjPFQ+AABhBQAABAidA2UFAGUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAPgBGFZlYzxUPgAAaQUAAAJhBQBtBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0RENvZGVjUHJlc2VydmF0aW9uAAEMKEV4cGVuZGFibGUAAAAcUHJvdGVjdAABACBQcmVzZXJ2ZQACAABxBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUFBFMAAAQAeQUBGFZlYzxUPgAAdQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDxVbnBhaWRMb2FkSW5wdXQEBFQAABABMHByZXNlcnZhdGlvbm0FAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlnQMBJENvaW5WYWx1ZQABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGUEAThTaWduYXR1cmVPZjxUPgAAeQUAAAJ1BQB9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAB1BAEYVmVjPFQ+AACBBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUFBFMAAAQAiQUBGFZlYzxUPgAAhQUAAAQInQMIAIkFAAAChQUAjQUMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldExVbmxvYWRSZWN5Y2xlcklucHV0BDBBbGlhc2VzQm91bmQAABABFHZhbHVlnQMBJENvaW5WYWx1ZQABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcYWxpYXNlc30FAXxCb3VuZGVkVmVjPEFsaWFzLCBBbGlhc2VzQm91bmQ+AACRBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0LEZlZUN1cnJlbmN5AAEIGE5hdGl2ZQAAADRFeHRlcm5hbEFzc2V0AAEAAJUFAAACjQUAmQUMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBBDYWxsBARUAAEcJHN1YnNjcmliZQwBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAFMbWVtYmVyc19jb2xsZWN0aW9uc50FAR0BQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyLD4AATBwYWxsZXRfaW5kZXgMAQh1OAAALKBSZWdpc3RlcnMgdGhlIHBhcmFjaGFpbiBhcyBhIHN1YnNjcmliZXIu0FRoZSBpbml0aWFsIHN0YXRlIHdpbGwgYmUgc2VudCBvdmVyIHNob3J0bHkgdmlhIFhDTS4AJCMjIE9yaWdpbqhSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYCAoZ292ZXJuYW5jZS9yb290KS4ANCMjIFBhcmFtZXRlcnMVAS0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJpbmcgcGFyYWNoYWluLkUBLSBgbWVtYmVyc19jb2xsZWN0aW9uc2A6IExpc3Qgb2YgY29sbGVjdGlvbiBpZGVudGlmaWVycyB0byBzdWJzY3JpYmUgdG8gYW5kIHRoZWlycCAgcmVzcGVjdGl2ZSByaW5nIGV4cG9uZW50cy41AS0gYHBhbGxldF9pbmRleGA6IFBhbGxldCBpbmRleCBvZiBtZW1iZXJzLXN1YnNjcmliZXIgb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uLHVuc3Vic2NyaWJlBAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWSpBQE4T3B0aW9uPFBhcmFJZD4AASRkVW5zdWJzY3JpYmVzIGEgcGFyYWNoYWluLgAkIyMgT3JpZ2luPQEtICoqU2VsZi11bnN1YnNjcmliZSoqOiBTdWJzY3JpYmVyIHBhcmFjaGFpbiB2aWEgWENNIChgRW5zdXJlU3Vic2NyaWJlck9yaWdpbmAp1C0gKipHb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKio6IFJlcXVpcmVzIGBNYW5hZ2VPcmlnaW5gADQjIyBQYXJhbWV0ZXJzYQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgdG8gdW5zdWJzY3JpYmUuIFJlcXVpcmVkIGZvciBnb3Zlcm5hbmNlLCBpZ25vcmVkxCAgZm9yIHNlbGYtdW5zdWJzY3JpYmUgKGRlcml2ZWQgZnJvbSBYQ00gb3JpZ2luKS44cmVxdWVzdF9yZXBsYXkMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAFEcmluZ19yb290X2luZGljZXOtBQGwQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AAiScUmVxdWVzdHMgcmVwbGF5IG9mIHNwZWNpZmljIHJpbmcgcm9vdHMuADUBUGVybWlzc2lvbmxlc3Mg4oCUIGFueSBzaWduZWQgb3JpZ2luIGNhbiByZXF1ZXN0IGEgcmVwbGF5IGZvciBhbnkgc3Vic2NyaWJlci5JAVRoZSBzdWJzY3JpYmVyIHBhcmFjaGFpbiBpcyBpZGVudGlmaWVkIGJ5IHRoZSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgIHBhcmFtZXRlci4ALFBhcmFtZXRlcnM66C0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCBvZiB0aGUgc3Vic2NyaWJlci6YLSBgaWRlbnRpZmllcmA6IENvbGxlY3Rpb24gaWRlbnRpZmllci5ZAS0gYHJpbmdfcm9vdF9pbmRpY2VzYDogTGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcywgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuPGVucXVldWVfdXBkYXRlcwgBJHNlbmRfcGFnZVUDAQx1MTYAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwz4RW5xdWV1ZXMgcGVuZGluZyB1cGRhdGVzIGludG8gYSBzZWFsZWQgYmF0Y2ggZm9yIGRpc3RyaWJ1dGlvbi4AxEF1dGhvcml6ZWQgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4oc2VuZF9iYXRjaAwBHHBhcmFfaWScARhQYXJhSWQAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAQMxFNlbmRzIHRoZSBjdXJyZW50IGJhdGNoIHRvIGEgc3BlY2lmaWMgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci44c2VuZF9pbml0X3BhZ2UQARxwYXJhX2lknAEYUGFyYUlkAAFgY3VycmVudF9jb2xsZWN0aW9uX2luZGV4OAEMdTMyAAFAYWZ0ZXJfcmluZ19pbmRleNQBRE9wdGlvbjxSaW5nSW5kZXg+AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAUM2FNlbmRzIG9uZSBwYWdlIG9mIGluaXRpYWxpemF0aW9uIGRhdGEgdG8gYSBzdWJzY3JpYmVyLgD0QXV0aG9yaXplZCBtYWludGVuYW5jZSBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLkxhYmFuZG9uX3N0dWNrX2JhdGNoBAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAYU5EFiYW5kb25zIGEgc3R1Y2sgYmF0Y2ggdGhhdCBleGNlZWRlZCBgU3R1Y2tCYXRjaFRpbWVvdXRgLjEBU3Vic2NyaWJlcnMgdGhhdCBkaWQgbm90IHJlY2VpdmUgdGhlIGJhdGNoIGNhbiByZWNvdmVyIHZpYSBgcmVxdWVzdF9yZXBsYXlgLgA1AUF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciB3aGVuIGEgYmF0Y2ggaGFzsGJlZW4gYWN0aXZlIGxvbmdlciB0aGFuIGBTdHVja0JhdGNoVGltZW91dGAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLp0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBoQUEUwAABAClBQEYVmVjPFQ+AAChBQAABAgIRQUApQUAAAKhBQCpBQQYT3B0aW9uBARUAZwBCBBOb25lAAAAEFNvbWUEAJwAAAEAAK0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAI0EARhWZWM8VD4AALEFDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQQQ2FsbAQEVAABMDhzY2hlZHVsZV9ldmVudAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABEGluZm+1BQE4RXZlbnRJbmZvT2Y8VD4AABRVAVNjaGVkdWxlIGEgbmV3IGFpcmRyb3AgZXZlbnQuIE9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYC4gVGhlIHByaXplIGFsbG9jYXRpb24gaXMZAWhlbGQgaW4gdGhlIHBhbGxldCdzIHBvdCBhY2NvdW50LiBUaGUgcG90IGlzIGFzc3VtZWQgdG8gYmUgcHJlLWZ1bmRlZC4AUQFDcm9zcy1wYWxsZXQgY2FsbGVycyBzaG91bGQgdXNlIHRoZSBbYGNyYXRlOjp0eXBlczo6QWlyZHJvcDo6c2NoZWR1bGVgXSB0cmFpdCBtZXRob2TkaW5zdGVhZCwgd2hpY2ggZGViaXRzIGEgY2FsbGVyLXN1cHBsaWVkIGBzb3VyY2VgIGFjY291bnQuWHJlbW92ZV9zY2hlZHVsZWRfZXZlbnQEASBldmVudF9pZAgBHEV2ZW50SWQAAQgRAVJlbW92ZSBhIHByZXZpb3VzbHkgc2NoZWR1bGVkIGV2ZW50LiBUaGUgZXZlbnQgbXVzdCBub3QgaGF2ZSBhbHJlYWR5nHN0YXJ0ZWQsIG90aGVyd2lzZSB0aGlzIGNhbGwgd2lsbCBmYWlsLjBlbmFibGVfYXNzZXQIASBhc3NldF9pZAUBATBBc3NldElkT2Y8VD4AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAChBNAUVuYWJsZSBhbiBhc3NldCBmb3IgdXNlIGluIGFpcmRyb3AgZXZlbnRzLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAFkBVHJhbnNmZXJzIHRoZSBhc3NldCdzIGN1cnJlbnQgbWluaW11bSBiYWxhbmNlIGZyb20gYHNvdXJjZWAgdG8gdGhlIHBhbGxldCdzIHBvdCBzbyB0aGUlAXBvdCdzIGFzc2V0IGFjY291bnQgc3RheXMgYWxpdmUgd2hpbGUgZXZlbnRzIGhvbGQgcHJpemUgZnVuZHMgYWdhaW5zdCBpdC40ZGlzYWJsZV9hc3NldAgBIGFzc2V0X2lkBQEBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAsUWQFEaXNhYmxlIGFuIGFzc2V0IHByZXZpb3VzbHkgZW5hYmxlZCB3aXRoIGBlbmFibGVfYXNzZXRgLiBSZWZ1bmRzIHRoZSBvcmlnaW5hbGx5LWZ1bmRlZDkBYW1vdW50IGZyb20gdGhlIHBvdCB0byBgYmVuZWZpY2lhcnlgLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAE0BVGhlIG1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG5vIGV2ZW50cyBzdGlsbCByZWZlcmVuY2UgdGhpcyBhc3NldCBiZWZvcmUZAWRpc2FibGluZywgYnV0IHRoaXMgaXMgc2FmZSBzaW5jZSBzY2hlZHVsaW5nIGFuIGV2ZW50IGlzIHBlcm1pc3Npb25lZC50c3RhcnRfcmVnaXN0cmF0aW9uX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAIc3E9DVy1kcml2ZW46IHRyYW5zaXRpb24gYFNjaGVkdWxlZCDihpIgUmVnaXN0ZXJpbmdgIHdoZW6EYHJlZ2lzdHJhdGlvbl9zdGFydHNgIGlzIHJlYWNoZWQuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLnRjbG9zZV9yZWdpc3RyYXRpb25fYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIAAzRsT0NXLWRyaXZlbjogYXQgYGRyYXdfdGltZWA6UC0gY2xvc2UgcmVnaXN0cmF0aW9uUC0gY2FwdHVyZSByYW5kb21uZXNzhC0gY29tcHV0ZSB0aGUgdGFyZ2V0IHdpbm5lciBjb3VudMwtIHJlbGVhc2UgdGhlIHVudXNlZC1zbG90IHByaXplIGFsbG9jYXRpb24gdXAtZnJvbnSoLSB0cmFuc2l0aW9uIGBSZWdpc3RlcmluZyDihpIgRHJhd1dpbm5lcnNgABUBVGhlIGRyYXcgaXRzZWxmIGlzIHBlcmZvcm1lZCBpbiBiYXRjaGVzIGJ5IGBkcmF3X3dpbm5lcnNfYXV0aG9yaXplZGAuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLlxkcmF3X3dpbm5lcnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABCTQT0NXLWRyaXZlbjogZHJhdyB1cCB0byBgRHJhd0xpbWl0YCB3aW5uZXJzIHBlciBjYWxsLgBFAUFmdGVyIGFsbCB0aGUgd2lubmVycyBhcmUgZHJhd24sIHRoZSB0cmFuc2l0aW9uIHRvIGBDbGFpbWluZ2AgaXMgcGVyZm9ybWVkIGJ5IHRoZZBzZXBhcmF0ZSBgY2xvc2VfZHJhd2luZ19hdXRob3JpemVkYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuYGNsb3NlX2RyYXdpbmdfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABRxRAU9DVy1kcml2ZW46IG9uY2UgYGRyYXdfd2lubmVyc19hdXRob3JpemVkYCBoYXMgZmlsbGVkIHRoZSB3aW5uZXIgc2V0LCB0cmFuc2l0aW9uIHRoZZxldmVudCBmcm9tIGBEcmF3V2lubmVyc2AgdG8gYENsYWltaW5nYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuZGNsb3NlX2NsYWltaW5nX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAYYMQFPQ1ctZHJpdmVuOiBhdCBgZW5kX3RpbWVgIGNsb3NlIGNsYWltaW5nIGFuZCBlbnRlciB0aGUgZmlyc3QgY2xlYW4tdXAgcGhhc2UuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLoRjbGVhbl91cF9yZWdpc3RyYXRpb25zX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAccOQFPQ1ctZHJpdmVuOiBGaXJzdCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIGNsZWFyIHVwIHRvIGBDbGVhckxpbWl0YCBlbnRyaWVzIGZyb21VAWBSZWdpc3RyYXRpb25zYC4gV2hlbiB0aGUgc3RvcmFnZSBpcyBmdWxseSBkcmFpbmVkLCB0cmFuc2l0aW9ucyB0byBgQ2xlYXJpbmdXaW5uZXJzYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wubGNsZWFuX3VwX3dpbm5lcnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIACBw9AU9DVy1kcml2ZW46IFNlY29uZCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIGNsZWFyIHVwIHRvIGBDbGVhckxpbWl0YCBlbnRyaWVzIGZyb20pAWBXaW5uZXJzYC4gV2hlbiB0aGUgc3RvcmFnZSBpcyBmdWxseSBkcmFpbmVkLCB0cmFuc2l0aW9ucyB0byBgRmluYWxpemluZ2AuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLkxmaW5hbGl6ZV9hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAJHE0BT0NXLWRyaXZlbjogVGhpcmQgc3RlcCBvZiBjbGVhbi11cCBpcyB0byByZWxlYXNlIHRoZSB1bmNsYWltZWQgcHJpemUgYWxsb2NhdGlvbiBhbmREcmVtb3ZlIHRoZSBldmVudC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrUFDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcyRFdmVudEluZm8IHEFzc2V0SWQBBQEwQXNzZXRCYWxhbmNlAfAAEAEUcHJpemXdBAGMQWlyZHJvcFByaXplPEFzc2V0SWQsIEFzc2V0QmFsYW5jZT4AAUxyZWdpc3RyYXRpb25fc3RhcnRzKAEMdTY0AAEkZHJhd190aW1lKAEMdTY0AAEgZW5kX3RpbWUoAQx1NjQAALkFDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBBDYWxsBARUAAEEGGJlc3RvdwgBEHZvdGW9BQEgVm90ZURhdGEAATxjYWxsX3ZhbGlkX2Zyb20oARxTZWNvbmRzAAAQOEJlc3RvdyBhIHZvdGUuAFUBQWNjZXB0cyBvbmx5IHRoZSBbYE9yaWdpbjo6Vm90ZXJgXSBvcmlnaW4sIHdoaWNoIGlzIGNyZWF0ZWQgYnkgdmVyaWZ5aW5nIGEgcmluZyBwcm9vZgUBaW4gdGhlIFtgVm90ZXJBdXRoYF0oZXh0ZW5zaW9uOjpWb3RlckF1dGgpIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQUMTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMgVm90ZURhdGEAAAwBHHN1YmplY3QIASRTdWJqZWN0SWQAARRwb2ludAwBHFBvaW50SWQAASRkaXJlY3Rpb27BBQEkRGlyZWN0aW9uAADBBQxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyREaXJlY3Rpb24AAQgoSG9ub3VyYWJsZQAAADREaXNob25vdXJhYmxlAAEAAMUFDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0AQIBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskFDIBpbmRpdl9wYWxsZXRfdmFsdWVfdHJhbnNmZXJfYXV0aCRleHRlbnNpb25YQXV0aG9yaXplVmFsdWVUcmFuc2ZlcggEVAAEUAAABADNBQGMT3B0aW9uPHNwX2NvcmU6OmVkMjU1MTk6OlNpZ25hdHVyZT4AAM0FBBhPcHRpb24EBFQBZQQBCBBOb25lAAAAEFNvbWUEAGUEAAABAADRBQxccGFsbGV0X3ZlcmlmeV9zaWduYXR1cmUkZXh0ZW5zaW9uPFZlcmlmeVNpZ25hdHVyZQQEVAABCCBEaXNhYmxlZAAAABhTaWduZWQIASRzaWduYXR1cmVhBAEwVDo6U2lnbmF0dXJlAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABAADVBQxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24gQXNQZXJzb24EBFQAAAQA2QUBXE9wdGlvbjxBc1BlcnNvbkluZm88VD4+AADZBQQYT3B0aW9uBARUAd0FAQgQTm9uZQAAABBTb21lBADdBQAAAQAA3QUMTGluZGl2X3BhbGxldF9wZW9wbGUkZXh0ZW5zaW9uMEFzUGVyc29uSW5mbwQEVAABFGhBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAABgQXNQZXJzb25hbEFsaWFzV2l0aFByb29mDAClAwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAEAbEFzUGVyc29uYWxJZGVudGl0eVdpdGhQcm9vZggAZQQBOFNpZ25hdHVyZU9mPFQ+AAAoAShQZXJzb25hbElkAAIAdEFzUGVyc29uYWxJZGVudGl0eVdpdGhBY2NvdW50BAA4ASBUOjpOb25jZQADAIRBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWQQADgBIFQ6Ok5vbmNlAAClAwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAQAAOEFDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvblxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudAQEVAAABADlBQGYT3B0aW9uPEFzUHJvb2ZPZklua1BhcnRpY2lwYW50SW5mbzxUPj4AAOUFBBhPcHRpb24EBFQB6QUBCBBOb25lAAAAEFNvbWUEAOkFAAABAADpBQxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luayRleHRlbnNpb25sQXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvBARUAAEMOEFzQXBwbHlXaXRoU2lnBAA4ASBUOjpOb25jZQAAAChBc1JlZmVycmVkBAA4ASBUOjpOb25jZQABACRBc0ludml0ZWQEADgBIFQ6Ok5vbmNlAAIAAO0FDEhpbmRpdl9wYWxsZXRfc2NvcmUkZXh0ZW5zaW9uSFNjb3JlQXNQYXJ0aWNpcGFudAQEVAAABADxBQGgT3B0aW9uPFNjb3JlQXNQYXJ0aWNpcGFudERhdGE8VDo6Tm9uY2U+PgAA8QUEGE9wdGlvbgQEVAH1BQEIEE5vbmUAAAAQU29tZQQA9QUAAAEAAPUFDEhpbmRpdl9wYWxsZXRfc2NvcmUkZXh0ZW5zaW9uWFNjb3JlQXNQYXJ0aWNpcGFudERhdGEEFE5vbmNlATgABAEUbm9uY2U4ARROb25jZQAA+QUMRGluZGl2X3BhbGxldF9nYW1lJGV4dGVuc2lvbjRHYW1lQXNJbnZpdGVkBARUAAAEAP0FAXBPcHRpb248R2FtZUFzSW52aXRlZERhdGE8VD4+AAD9BQQYT3B0aW9uBARUAQEGAQgQTm9uZQAAABBTb21lBAABBgAAAQAAAQYMRGluZGl2X3BhbGxldF9nYW1lJGV4dGVuc2lvbkRHYW1lQXNJbnZpdGVkRGF0YQQEVAAAEAEUbm9uY2U4ASBUOjpOb25jZQABHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASxUaWNrZXRPZjxUPgABJHNpZ25hdHVyZWEEAUhUOjpUaWNrZXRTaWduYXR1cmUAAAUGDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUkZXh0ZW5zaW9uOFBlb3BsZUxpdGVBdXRoBARUAAAEAAkGAXxPcHRpb248UGVvcGxlTGl0ZUF1dGhEYXRhT2Y8VD4+AAAJBgQYT3B0aW9uBARUAQ0GAQgQTm9uZQAAABBTb21lBAANBgAAAQAADQYMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb25IUGVvcGxlTGl0ZUF1dGhEYXRhCBROb25jZQE4FFByb29mAaUDARAwQXNMaXRlUGVyc29uBAA4ARROb25jZQAAAFhBc0xpdGVBbGlhc1dpdGhBY2NvdW50BAA4ARROb25jZQABAFBBc0xpdGVBbGlhc1dpdGhQcm9vZgwApQMBFFByb29mAAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQAAgB0QXNMaXRlQWxpYXNXaXRoQWNjb3VudFJldmlzZWQQADgBFE5vbmNlAAClAwEUUHJvb2YAADgBJFJpbmdJbmRleAAACAEcQ29udGV4dAADAAARBgxQaW5kaXZfcGFsbGV0X21lbWJlcnMkZXh0ZW5zaW9uIEFzTWVtYmVyBARUAAAEABUGAVxPcHRpb248QXNNZW1iZXJJbmZvPFQ+PgAAFQYEGE9wdGlvbgQEVAEZBgEIEE5vbmUAAAAQU29tZQQAGQYAAAEAABkGDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24wQXNNZW1iZXJJbmZvBARUAAEELFNlbGZJbmNsdWRlBABlBAE4U2lnbmF0dXJlT2Y8VD4AAAAAHQYMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbiRBc0NvaW5hZ2UEBFQAAAQAIQYBYE9wdGlvbjxBc0NvaW5hZ2VJbmZvPFQ+PgAAIQYEGE9wdGlvbgQEVAElBgEIEE5vbmUAAAAQU29tZQQAJQYAAAEAACUGDFBpbmRpdl9wYWxsZXRfY29pbmFnZSRleHRlbnNpb240QXNDb2luYWdlSW5mbwQEVAABGBhBc0NvaW4AAABMQXNVbmxvYWRUb2tlblBlb3BsZRABFHByb29mKQYBoDxUOjpQZW9wbGVQcm9vZiBhcyBWYWxpZGF0ZVByb29mPjo6UHJvb2YAARhwZXJpb2Q4ARhQZXJpb2QAARxjb3VudGVyOAEMdTMyAAEwYWxpYXNfcHJvb2ZzoQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQBcQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGUQARRwcm9vZi0GAbA8VDo6TGl0ZVBlb3BsZVByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnOhAwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgACAERBc1VubG9hZFRva2VuUGFpZBQBFHByb29mpQMBKFByb29mT2Y8VD4AARhwZXJpb2Q4ARhQZXJpb2QAAVRwYWlkX3Rva2VuX3JpbmdfaW5kZXg4AQx1MzIAAWBwYWlkX3Rva2VuX3JpbmdfcmV2aXNpb244AQx1MzIAATBhbGlhc19wcm9vZnOhAwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgADAFxBc1VubG9hZFRva2VuRnJvbU91dHB1dBABSGZlZV9yZWN5Y2xlcl92YWx1ZZ0DASRDb2luVmFsdWUAAUhmZWVfcmVjeWNsZXJfaW5kZXg4ASRSaW5nSW5kZXgAAVRmZWVfcmVjeWNsZXJfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEwYWxpYXNfcHJvb2ZzoQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4ABABYSW5mYWxsaWJsZVVucGFpZFNpZ25lZAQBFG5vbmNlOAEgVDo6Tm9uY2UABQAAKQYMUHBlb3BsZV9wYXNlb19ydW50aW1lGHBlb3BsZSxQZW9wbGVQcm9vZgAACAEUcHJvb2alAwHgPEJhbmRlcnNuYXRjaFZyZlZlcmlmaWFibGUgYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6UHJvb2YAARByaW5nOAEkUmluZ0luZGV4AAAtBgxQcGVvcGxlX3Bhc2VvX3J1bnRpbWUYcGVvcGxlPExpdGVQZW9wbGVQcm9vZgAACAEUcHJvb2alAwHgPEJhbmRlcnNuYXRjaFZyZlZlcmlmaWFibGUgYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6UHJvb2YAARByaW5nOAEkUmluZ0luZGV4AAAxBgxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcyRleHRlbnNpb24sQXNSZXNvdXJjZXMEBFQAAAQANQYBaE9wdGlvbjxBc1Jlc291cmNlc0luZm88VD4+AAA1BgQYT3B0aW9uBARUATkGAQgQTm9uZQAAABBTb21lBAA5BgAAAQAAOQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uPEFzUmVzb3VyY2VzSW5mbwQEVAABEHhSZWdpc3RlckZyaWVuZFJlcXVlc3RXaXRoUHJvb2YIAKUDAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAACIUmVnaXN0ZXJGcmllbmRSZXF1ZXN0Rm9yQ29sbGVjdGlvbgwApQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAiQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAEAfFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UMAKUDAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAIkDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAFBDbGFpbUxvbmdUZXJtU3RvcmFnZRAApQMBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAiQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAMAAD0GDExpbmRpdl9wYWxsZXRfaG9ub3VyJGV4dGVuc2lvbiRWb3RlckF1dGgEBFQAAAQAQQYBYE9wdGlvbjxWb3RlckF1dGhEYXRhPFQ+PgAAQQYEGE9wdGlvbgQEVAFFBgEIEE5vbmUAAAAQU29tZQQARQYAAAEAAEUGDExpbmRpdl9wYWxsZXRfaG9ub3VyJGV4dGVuc2lvbjRWb3RlckF1dGhEYXRhBARUAAAMARRwcm9vZqUDAThSaW5nUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAEkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAE0GCHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAPQBEGJvb2wAAFEGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAFUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAABZBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAABdBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAYQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABABlBgEMRXJhAABlBhAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AAGkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAABtBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAHEGCFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlw7AEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWTNAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAHUGCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZXkGARBNb2RlAAB5Bgh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAH0GCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBgQYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YYEGASxBY2NvdW50RGF0YQAAgQYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQHwABABEGZyZWXwARxCYWxhbmNlAAEgcmVzZXJ2ZWTwARxCYWxhbmNlAAEYZnJvemVu8AEcQmFsYW5jZQABFGZsYWdzhQYBKEV4dHJhRmxhZ3MAAIUGDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABADwARB1MTI4AACJBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAQECAAwBGG5vcm1hbAECAQRUAAEsb3BlcmF0aW9uYWwBAgEEVAABJG1hbmRhdG9yeQECAQRUAACNBgAAApEGAJEGCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBlQYEVAE8AAwBFHBoYXNlqQcBFFBoYXNlAAEUZXZlbnSVBgEERQABGHRvcGljc60HARhWZWM8VD4AAJUGCFBwZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAZQYU3lzdGVtBACZBgFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAMEGAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAxQYBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAEACBCYWxhbmNlcwQAyQYBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BAD5BgGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAGEFzc2V0cwQA/QYBdHBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWU+AAwAJEFzc2V0UmF0ZQQAAQcBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgANADhBc3NldFR4UGF5bWVudAQABQcBnHBhbGxldF9hc3NldF90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEAAkHAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXZlbnQ8UnVudGltZT4ADwBIU2tpcEZlZWxlc3NQYXltZW50BAANBwGscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50OjpFdmVudDxSdW50aW1lPgAQAERPcmlnaW5SZXN0cmljdGlvbgQAEQcBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABEARENvbGxhdG9yU2VsZWN0aW9uBAAVBwGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAGQcBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEAB0HAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAIQcBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EADEHAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAAME1lc3NhZ2VRdWV1ZQQANQcBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAiABxVdGlsaXR5BAA9BwFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBABFBwF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQASQcBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAgSWRlbnRpdHkEAFEHAXxwYWxsZXRfaWRlbnRpdHk6OkV2ZW50PFJ1bnRpbWU+ADIAGFBlb3BsZQQAVQcBjGluZGl2X3BhbGxldF9wZW9wbGU6OkV2ZW50PFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAFkHAZRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkV2ZW50PFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAF0HAaRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpFdmVudDxSdW50aW1lPgA1ABBHYW1lBABhBwGEaW5kaXZfcGFsbGV0X2dhbWU6OkV2ZW50PFJ1bnRpbWU+ADcAFFNjb3JlBABpBwGIaW5kaXZfcGFsbGV0X3Njb3JlOjpFdmVudDxSdW50aW1lPgA4ACBEdW1teURpbQQAbQcBmGluZGl2X3BhbGxldF9kdW1teV9kaW06OkV2ZW50PFJ1bnRpbWU+ADsAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgQAcQcBzGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uOjpFdmVudDxSdW50aW1lPgA8AChQZW9wbGVMaXRlBAB1BwGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFdmVudDxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAHkHAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFdmVudDxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBAB9BwGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFdmVudDxSdW50aW1lPgBAABxNZW1iZXJzBACBBwGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkV2ZW50PFJ1bnRpbWU+AEMAHENvaW5hZ2UEAIUHAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXZlbnQ8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBACJBwG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkV2ZW50PFJ1bnRpbWU+AEUAHEFpcmRyb3AEAI0HAZBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6RXZlbnQ8UnVudGltZT4ARgAYSG9ub3VyBACZBwGMaW5kaXZfcGFsbGV0X2hvbm91cjo6RXZlbnQ8UnVudGltZT4ARwAQU3VkbwQAoQcBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgD/AACZBgwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABIEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb50GAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3KpBgE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm+dBgFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQEARBoYXNoPAEcVDo6SGFzaAACBNBgOmNvZGVgIHdhcyB1cGRhdGVkIHRvIHRoZSBjb2RlIHdpdGggdGhlIGdpdmVuIGhhc2guKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb270ARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9yqQYBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQunQYIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0AQIBGFdlaWdodAABFGNsYXNzoQYBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZaUGARBQYXlzAAChBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAApQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAqQYIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQArQYBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EALEGAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEALUGATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAuQYBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAC9BgEkVHJpZUVycm9yAA4AAK0GCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAsQYIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAtQYINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAC5Bggoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAvQYMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAMEGDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZAECARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoVQUBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xQYMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3LkATxPcHRpb248VmVjPHU4Pj4E6FNob3VsZCBiZSBwYXNzZWQgdG8gYGNsZWFyX2hpc3RvcmljYCBpbiBhIHN1Y2Nlc3NpdmUgY2FsbC4HBMhUaGUgc2V0IG9mIGhpc3RvcmljYWwgbWlncmF0aW9ucyBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMkGDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNl8AEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVl8AEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzzQYBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudPABKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudPABKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudPABKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnTwAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xk8AEoVDo6QmFsYW5jZQABDG5ld/ABKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29u0QYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29u0QYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29u0QYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb27RBgFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWTwAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb27RBgFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBAD1BgE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNBhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAANEGCFBwZW9wbGVfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABIBxTZXNzaW9uBADVBgFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EANkGAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AHE1vYlJ1bGUEAN0GAYRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkhvbGRSZWFzb24ANAAoUHJvb2ZPZkluawQA4QYBlGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkhvbGRSZWFzb24ANQAQR2FtZQQA5QYBdGluZGl2X3BhbGxldF9nYW1lOjpIb2xkUmVhc29uADcAFFNjb3JlBADpBgF4aW5kaXZfcGFsbGV0X3Njb3JlOjpIb2xkUmVhc29uADgAHENvaW5hZ2UEAO0GAYBpbmRpdl9wYWxsZXRfY29pbmFnZTo6SG9sZFJlYXNvbgBEABxBaXJkcm9wBADxBgGAaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkhvbGRSZWFzb24ARgAA1QYMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAA2QYMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAA3QYMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQoSG9sZFJlYXNvbgABCBhQYXlvdXQAAAAYQ3JlZGl0AAEAAOEGDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChIb2xkUmVhc29uAAEEKFByb29mT2ZJbmsAAAAA5QYMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldChIb2xkUmVhc29uAAEELFBsYXlEZXBvc2l0AAAAAOkGDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAADtBgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQcV3JhcHBlZAAAAADxBgxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0KEhvbGRSZWFzb24AAQQcQWlyZHJvcAAAAAD1Bgw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAA+QYMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVl8AEwQmFsYW5jZU9mPFQ+AAEMdGlw8AEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0GDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2XwAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZAUBAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZAUBAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW70ARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZAUBAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2XwAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTwAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEgcmVzZXJ2ZXNJAQFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEYYW1vdW508AEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABGGFtb3VudPABKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkBQEBKFQ6OkFzc2V0SWQAARhhbW91bnTwAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAEHDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmQFAQEwVDo6QXNzZXRLaW5kAAEQcmF0ZVEBASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmQFAQEwVDo6QXNzZXRLaW5kAAEAQEFzc2V0UmF0ZVVwZGF0ZWQMAShhc3NldF9raW5kBQEBMFQ6OkFzc2V0S2luZAABDG9sZFEBASRGaXhlZFUxMjgAAQxuZXdRAQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0BQcMXHBhbGxldF9hc3NldF90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWXwAURBc3NldEJhbGFuY2VPZjxUPgABDHRpcPABREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWTNAgFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJBwxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEYcmVhc29u0QYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW508AEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQFAQEoVDo6QXNzZXRJZAABGHJlYXNvbtEGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudPABKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZAUBAShUOjpBc3NldElkAAEYcmVhc29u0QYBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW508AEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQcMbHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQoRmVlU2tpcHBlZAQBGG9yaWdpblkDAcA8VDo6UnVudGltZU9yaWdpbiBhcyBPcmlnaW5UcmFpdD46OlBhbGxldHNPcmlnaW4AAAR4QSB0cmFuc2FjdGlvbiBmZWUgd2FzIHNraXBwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQcMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEEMFVzYWdlQ2xlYW5lZAQBGGVudGl0eVkBAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVBwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXP4AURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW508AEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTwATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQcMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQcMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQcMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWUlBwFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW4FAQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbgUBASBMb2NhdGlvbgABHG1lc3NhZ2WJAgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2luBQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb24FAQEgTG9jYXRpb24AARRlcnJvci0HASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2luBQEBIExvY2F0aW9uAAEUZXJyb3K5AgEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2luBQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZa0CASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0AQIBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQBAgEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2luBQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb27NAgFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2luBQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luBQEBIExvY2F0aW9uAAEYYXNzZXRzBQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9uBQEBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3SVAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb24FAQEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9uBQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3K5AgEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9udQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2luBQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbgUBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXIFAQEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcs0CAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbgUBASBMb2NhdGlvbgABEGNvc3SVAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb24FAQEgTG9jYXRpb24AARBjb3N0lQIBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9uBQEBIExvY2F0aW9uAAEQY29zdJUCARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZwUBASBMb2NhdGlvbgABEGZlZXOVAgEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbgUBASBMb2NhdGlvbgABGGFzc2V0cwUDATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2VyBQEBIExvY2F0aW9uAAEYdGFyZ2V0BQEBIExvY2F0aW9uAAEYZXhwaXJ5PQMBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlcgUBASBMb2NhdGlvbgABGHRhcmdldAUBASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldAUBASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlBxAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkAQIBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZAECARhXZWlnaHQAARRlcnJvcikHAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBAApBwFASW5zdHJ1Y3Rpb25FcnJvcgACAAApBxAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yuQIBFEVycm9yAAAtBxAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAAAxBwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAAAlBwEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQcMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW5JAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcjkHAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW5JAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZAECARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc/QBEGJvb2wYiFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZC4ASQFOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgYE1lc3NhZ2VQcm9jZXNzb3JgIHdhcyBpbnRlcm5hbGx5NQFzdWNjZXNzZnVsLiBJdCAqc29sZWx5KiBtZWFucyB0aGF0IHRoZSBNUSBwYWxsZXQgd2lsbCB0cmVhdCB0aGlzIGFzIGEgc3VjY2Vzc00BY29uZGl0aW9uIGFuZCBkaXNjYXJkIHRoZSBtZXNzYWdlLiBBbnkgaW50ZXJuYWwgZXJyb3IgbmVlZHMgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4BBFRNZXNzYWdlIGlzIHByb2Nlc3NlZC5IT3ZlcndlaWdodEVucXVldWVkEAEIaWQIASBbdTg7IDMyXQSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luSQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEocGFnZV9pbmRleDgBJFBhZ2VJbmRleARgVGhlIHBhZ2Ugb2YgdGhlIG1lc3NhZ2UuATRtZXNzYWdlX2luZGV4OAEcVDo6U2l6ZQSkVGhlIGluZGV4IG9mIHRoZSBtZXNzYWdlIHdpdGhpbiB0aGUgcGFnZS4CBIxNZXNzYWdlIHBsYWNlZCBpbiBvdmVyd2VpZ2h0IHF1ZXVlLihQYWdlUmVhcGVkCAEYb3JpZ2luSQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRYVGhlIHF1ZXVlIG9mIHRoZSBwYWdlLgEUaW5kZXg4ASRQYWdlSW5kZXgEWFRoZSBpbmRleCBvZiB0aGUgcGFnZS4DBFRUaGlzIHBhZ2Ugd2FzIHJlYXBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5BxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgbWVzc2FnZXNMUHJvY2Vzc01lc3NhZ2VFcnJvcgABGCRCYWRGb3JtYXQAAAAcQ29ycnVwdAABACxVbnN1cHBvcnRlZAACAChPdmVyd2VpZ2h0BAABAgEYV2VpZ2h0AAMAFFlpZWxkAAQARFN0YWNrTGltaXRSZWFjaGVkAAUAAD0HDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3KpBgE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3KpBgE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0QQcBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3KpBgE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBBwQYUmVzdWx0CARUARAERQGpBgEICE9rBAAQAAAAAAxFcnIEAKkGAAABAABFBww8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludMEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50wQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0QQcBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnTBAwFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXTwATBCYWxhbmNlT2Y8VD4ABATwVGhlIGRlcG9zaXQgZm9yIGEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQvcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQcMMHBhbGxldF9wcm94eRhwYWxsZXQURXZlbnQEBFQAARw0UHJveHlFeGVjdXRlZAQBGHJlc3VsdEEHAThEaXNwYXRjaFJlc3VsdAAABLxBIHByb3h5IHdhcyBleGVjdXRlZCBjb3JyZWN0bHksIHdpdGggdGhlIGdpdmVuLixQdXJlQ3JlYXRlZBgBEHB1cmUEATBUOjpBY2NvdW50SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlzQMBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4VQMBDHUxNgABCGF0OAFEQmxvY2tOdW1iZXJGb3I8VD4AATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4oUHVyZUtpbGxlZBABEHB1cmUEATBUOjpBY2NvdW50SWQAARxzcGF3bmVyBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZc0DATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleFUDAQx1MTYAAgScQSBwdXJlIHByb3h5IHdhcyBraWxsZWQgYnkgaXRzIHNwYXduZXIuJEFubm91bmNlZAwBEHJlYWwEATBUOjpBY2NvdW50SWQAARRwcm94eQQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AAwTgQW4gYW5ub3VuY2VtZW50IHdhcyBwbGFjZWQgdG8gbWFrZSBhIGNhbGwgaW4gdGhlIGZ1dHVyZS4oUHJveHlBZGRlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGXNAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAEBEhBIHByb3h5IHdhcyBhZGRlZC4wUHJveHlSZW1vdmVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZc0DATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAUEUEEgcHJveHkgd2FzIHJlbW92ZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABEGtpbmRNBwEsRGVwb3NpdEtpbmQAASxvbGRfZGVwb3NpdPABMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNBwgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAABRBww8cGFsbGV0X2lkZW50aXR5GHBhbGxldBRFdmVudAQEVAABWCxJZGVudGl0eVNldAQBDHdobwQBMFQ6OkFjY291bnRJZAAABOxBIG5hbWUgd2FzIHNldCBvciByZXNldCAod2hpY2ggd2lsbCByZW1vdmUgYWxsIGp1ZGdlbWVudHMpLjxJZGVudGl0eUNsZWFyZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARxkZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAEEzEEgbmFtZSB3YXMgY2xlYXJlZCwgYW5kIHRoZSBnaXZlbiBiYWxhbmNlIHJldHVybmVkLjhJZGVudGl0eUtpbGxlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTwATBCYWxhbmNlT2Y8VD4AAgTEQSBuYW1lIHdhcyByZW1vdmVkIGFuZCB0aGUgZ2l2ZW4gYmFsYW5jZSBzbGFzaGVkLkhKdWRnZW1lbnRSZXF1ZXN0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAADBJxBIGp1ZGdlbWVudCB3YXMgYXNrZWQgZnJvbSBhIHJlZ2lzdHJhci5QSnVkZ2VtZW50VW5yZXF1ZXN0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAEBIhBIGp1ZGdlbWVudCByZXF1ZXN0IHdhcyByZXRyYWN0ZWQuOEp1ZGdlbWVudEdpdmVuCAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAE8cmVnaXN0cmFyX2luZGV4OAE4UmVnaXN0cmFySW5kZXgABQSUQSBqdWRnZW1lbnQgd2FzIGdpdmVuIGJ5IGEgcmVnaXN0cmFyLjhSZWdpc3RyYXJBZGRlZAQBPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAYEWEEgcmVnaXN0cmFyIHdhcyBhZGRlZC5AU3ViSWRlbnRpdHlBZGRlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAcE9EEgc3ViLWlkZW50aXR5IHdhcyBhZGRlZCB0byBhbiBpZGVudGl0eSBhbmQgdGhlIGRlcG9zaXQgcGFpZC5AU3ViSWRlbnRpdGllc1NldAwBEG1haW4EATBUOjpBY2NvdW50SWQAAThudW1iZXJfb2Zfc3ViczgBDHUzMgABLG5ld19kZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAgEvEFuIGFjY291bnQncyBzdWItaWRlbnRpdGllcyB3ZXJlIHNldCAoaW4gYnVsaykuSFN1YklkZW50aXR5UmVuYW1lZAgBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQACQQhAUEgZ2l2ZW4gc3ViLWFjY291bnQncyBhc3NvY2lhdGVkIG5hbWUgd2FzIGNoYW5nZWQgYnkgaXRzIHN1cGVyLWlkZW50aXR5LkhTdWJJZGVudGl0eVJlbW92ZWQMAQxzdWIEATBUOjpBY2NvdW50SWQAARBtYWluBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdPABMEJhbGFuY2VPZjxUPgAKBAkBQSBzdWItaWRlbnRpdHkgd2FzIHJlbW92ZWQgZnJvbSBhbiBpZGVudGl0eSBhbmQgdGhlIGRlcG9zaXQgZnJlZWQuSFN1YklkZW50aXR5UmV2b2tlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l08AEwQmFsYW5jZU9mPFQ+AAsIGQFBIHN1Yi1pZGVudGl0eSB3YXMgY2xlYXJlZCwgYW5kIHRoZSBnaXZlbiBkZXBvc2l0IHJlcGF0cmlhdGVkIGZyb20gdGhlyG1haW4gaWRlbnRpdHkgYWNjb3VudCB0byB0aGUgc3ViLWlkZW50aXR5IGFjY291bnQuOEF1dGhvcml0eUFkZGVkBAEkYXV0aG9yaXR5BAEwVDo6QWNjb3VudElkAAwEfEEgdXNlcm5hbWUgYXV0aG9yaXR5IHdhcyBhZGRlZC5AQXV0aG9yaXR5UmVtb3ZlZAQBJGF1dGhvcml0eQQBMFQ6OkFjY291bnRJZAANBIRBIHVzZXJuYW1lIGF1dGhvcml0eSB3YXMgcmVtb3ZlZC4sVXNlcm5hbWVTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZW0EASxVc2VybmFtZTxUPgAOBHRBIHVzZXJuYW1lIHdhcyBzZXQgZm9yIGB3aG9gLjhVc2VybmFtZVF1ZXVlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lbQQBLFVzZXJuYW1lPFQ+AAEoZXhwaXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AA8EGQFBIHVzZXJuYW1lIHdhcyBxdWV1ZWQsIGJ1dCBgd2hvYCBtdXN0IGFjY2VwdCBpdCBwcmlvciB0byBgZXhwaXJhdGlvbmAuSFByZWFwcHJvdmFsRXhwaXJlZAQBFHdob3NlBAEwVDo6QWNjb3VudElkABAEOQFBIHF1ZXVlZCB1c2VybmFtZSBwYXNzZWQgaXRzIGV4cGlyYXRpb24gd2l0aG91dCBiZWluZyBjbGFpbWVkIGFuZCB3YXMgcmVtb3ZlZC5IUHJpbWFyeVVzZXJuYW1lU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVtBAEsVXNlcm5hbWU8VD4AEQQBAUEgdXNlcm5hbWUgd2FzIHNldCBhcyBhIHByaW1hcnkgYW5kIGNhbiBiZSBsb29rZWQgdXAgZnJvbSBgd2hvYC5cRGFuZ2xpbmdVc2VybmFtZVJlbW92ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZW0EASxVc2VybmFtZTxUPgASCF0BQSBkYW5nbGluZyB1c2VybmFtZSAoYXMgaW4sIGEgdXNlcm5hbWUgY29ycmVzcG9uZGluZyB0byBhbiBhY2NvdW50IHRoYXQgaGFzIHJlbW92ZWQgaXRzbGlkZW50aXR5KSBoYXMgYmVlbiByZW1vdmVkLjxVc2VybmFtZVVuYm91bmQEASB1c2VybmFtZW0EASxVc2VybmFtZTxUPgATBHBBIHVzZXJuYW1lIGhhcyBiZWVuIHVuYm91bmQuPFVzZXJuYW1lUmVtb3ZlZAQBIHVzZXJuYW1lbQQBLFVzZXJuYW1lPFQ+ABQEcEEgdXNlcm5hbWUgaGFzIGJlZW4gcmVtb3ZlZC44VXNlcm5hbWVLaWxsZWQEASB1c2VybmFtZW0EASxVc2VybmFtZTxUPgAVBGxBIHVzZXJuYW1lIGhhcyBiZWVuIGtpbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRVBwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXZlbnQEBFQAAShQUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAT4QW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhbmQgaW5kZXhlZC5AUGVyc29uT25ib2FyZGluZwgBDHdobygBKFBlcnNvbmFsSWQAAQxrZXkIASxNZW1iZXJPZjxUPgABBBEBQW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhZ2FpbiBhbmQgaW5kZXhlZC48QWxpYXNEaXNwYXRjaGVkCAEUYWxpYXNxAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJRBIGNhbGwgd2FzIGRpc3BhdGNoZWQgdW5kZXIgYW4gYWxpYXMuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFzcQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc3EDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5QUGVyc29uYWxJZEFjY291bnRTZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBNBBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuWFBlcnNvbmFsSWRBY2NvdW50VW5zZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBLRBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwSIVGhlIHBlb3BsZSBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLmRGb3JjZVBlcnNvbmhvb2RSZWNvZ25pemVkBAEYcGVvcGxldQQBQFZlYzxNZW1iZXJPZjxUPj4ACAS0UGVyc29uaG9vZCB3YXMgZm9yY2VmdWxseSByZWNvZ25pemVkIGJ5IHJvb3QuOEFsaWFzQ2xlYW5lZFVwCAEUYWxpYXNxAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAJBKxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0WQcMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQURXZlbnQEBFQAAUQsQ2FzZUNyZWF0ZWQEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BIBUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjcmVhdGVkLgAEYEEgY2FzZSBoYXMgYmVlbiBjcmVhdGVkLiBDYWxsYmFjawQBGHJlc3VsdEEHAThEaXNwYXRjaFJlc3VsdARsVGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2suAQScQSBjYWxsYmFjayB3YXMgdHJpZ2dlcmVkIGZyb20gbW9iLXJ1bGUuNENhbGxiYWNrRXJyb3IAAgTwVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgY2FsbGJhY2suKENhc2VDbG9zZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BHxUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjbG9zZWQuARx2ZXJkaWN0hQQBJEp1ZGdlbWVudAR8VGhlIHZlcmRpY3Qgb2YgdGhlIGNsb3NlZCBjYXNlLgMEzFRoZSBjYXNlIGhhcyBiZWVuIGNsb3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzdWx0LhRWb3RlZAwBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuARxvcGluaW9uhQQBJEp1ZGdlbWVudARkVGhlIG9waW5pb24gb2YgdGhlIHZvdGVyLgQEhEEgdm90ZSBoYXMgYmVlbiBwbGFjZWQgb24gYSBjYXNlLixWb3RlQ2xlYW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuBQRgQSB2b3RlIGhhcyBiZWVuIGNsZWFuZWQuLENhc2VSZW1vdmVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARIVGhlIGNhc2Ugdm90ZWQgb24uBgRgQSBjYXNlIGhhcyBiZWVuIHJlbW92ZWQuOENhc2VJbnRlcnZlbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLgEcdmVyZGljdIUEASRKdWRnZW1lbnQEgFRoZSB2ZXJkaWN0IGFwcGxpZWQgdG8gdGhlIGNhc2UuBwRsQSBjYXNlIGhhcyBiZWVuIGludGVydmVuZWQuMFZvdGVzQ2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEwY2FzZV9pbmRpY2VzjQQBOFZlYzxDYXNlSW5kZXg+BIhUaGUgY2FzZSB0aGF0IGhhcyBiZWVuIGludGVydmVuZWQuCASQQ3JlZGl0cyBmb3Igdm90ZXMgaGF2ZSBiZWVuIGNsYWltZWQuMFJld2FyZFBheW91dAwBFHZvdGVyCAEUQWxpYXMEfFRoZSBhbGlhcyB0aGF0IGVhcm5lZCBhIHJld2FyZC4BLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkBJxUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHBheW91dC4BGGFtb3VudPABMEJhbGFuY2VPZjxUPgScVGhlIHBheW91dCBhbW91bnQgdGhhdCB3YXMgdHJhbnNmZXJyZWQuCQSAQSByZXdhcmQgdGhhdCBoYXMgYmVlbiBwYWlkIG91dC5IUGF5b3V0Um91bmRTdGFydGVkDAEUcm91bmQ4AShSb3VuZEluZGV4BIhUaGUgaW5kZXggb2YgdGhlIG5ldyBwYXlvdXQgcm91bmQuATxpbml0aWFsX2JhbGFuY2XwATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW508AEwQmFsYW5jZU9mPFQ+BHhUaGUgYW1vdW50IG9mIGZ1bmRzIHBlciByb3VuZC4BFGNvdW50OAEMdTMyBHxUaGUgbnVtYmVyIG9mIHJvdW5kcyBzY2hlZHVsZWQuARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgS4VGhlIG1pbmltdW0gcGVyaW9kIChpbiBibG9ja3MpIGJldHdlZW4gcm91bmRzLgsEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4MBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLjRDcmVkaXRDbGFpbWVkCAEUdm90ZXIIARRBbGlhcwSMVGhlIGFsaWFzIG9mIHRoZSB2b3RlciB3aG8gY2xhaW1lZC4BGGFtb3VudPABMEJhbGFuY2VPZjxUPgR0VGhlIGFtb3VudCBvZiBjcmVkaXQgY2xhaW1lZC4NBNRDcmVkaXQgaGFzIGJlZW4gY2xhaW1lZCBmcm9tIHRoZSBwYXlvdXQgZGlzdHJpYnV0aW9uLjRQb2ludHNDbGVhbmVkCAEUcm91bmQ4AShSb3VuZEluZGV4BLxUaGUgcm91bmQgaW5kZXggZnJvbSB3aGljaCBwb2ludHMgd2VyZSByZW1vdmVkLgEUdm90ZXIIARRBbGlhcwSQVGhlIGFsaWFzIHdob3NlIHBvaW50cyB3ZXJlIHJlbW92ZWQuDgSYU3RhbGUgdm90aW5nIHBvaW50cyBoYXZlIGJlZW4gY2xlYW5lZC4sQ2FzZVRvdWNoZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BGhUaGUgY2FzZSB0aGF0IHdhcyB0b3VjaGVkLgEccmlwZW5lZPQBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRdBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIE1vYiBSdWxlIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50hQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEgTW9iIFJ1bGUgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4VQMBLEZhbWlseUluZGV4AAEQa2luZJkEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWedBAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRhBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFQHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEMdTMyAAEEoFRoZSBnYW1lIGFuZCBpdHMgcG9zdC1wcm9jZXNzIGhhcyBlbmRlZC4oR2FtZUtpbGxlZAQBFGluZGV4OAEMdTMyAAIE/FRoZSBjdXJyZW50IGdhbWUgd2FzIGZvcmNlLWtpbGxlZCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLjRHYW1lUGhhc2VzU2V0BAEYcGhhc2Vz5QQBTFBoYXNlRHVyYXRpb25WYWx1ZXMAAwQZAVRoZSBnYW1lIHBoYXNlIGR1cmF0aW9ucyB3ZXJlIG92ZXJyaWRkZW4gYnkgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4gU2lnbmVkVXAEAQx3aG9lBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4ABASAQSBwbGF5ZXIgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS48UmVwb3J0U3VibWl0dGVkCAEMd2hvZQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEoZ2FtZV9pbmRleDgBDHUzMgAFBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvZQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyZQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAcEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIACASMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAJBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACgR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy44UGxheURlcG9zaXRTZXQEARhhbW91bnTwAUhOYXRpdmVCYWxhbmNlT2Y8VD4AEASgVGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IHdhcyB1cGRhdGVkLkBBaXJkcm9wU2NoZWR1bGVkCAEoZ2FtZV9pbmRleDgBDHUzMgABIGV2ZW50X2lkCAE4QWlyZHJvcEV2ZW50SWQAEQTQQW4gYWlyZHJvcCBldmVudCB3YXMgc2NoZWR1bGVkIGZvciB0aGUgY3VycmVudCBnYW1lLlRBaXJkcm9wU2NoZWR1bGVGYWlsZWQIAShnYW1lX2luZGV4OAEMdTMyAAEUZXJyb3KpBgE0RGlzcGF0Y2hFcnJvcgASBOhUaGUgYWlyZHJvcCBldmVudCBmb3IgdGhlIGN1cnJlbnQgZ2FtZSBmYWlsZWQgdG8gc2NoZWR1bGUuNEdhbWVDYW5jZWxsZWQEAShnYW1lX2luZGV4OAEMdTMyABMEgEdhbWUgYGdhbWVfaW5kZXhgIHdhcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0ZQcMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlczxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAAaQcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXZlbnQEBFQAASQ0Q3JlZGl0Q2xhaW1lZAwBDHdob2UHAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR4VGhlIHBlcnNvbiB3aG8gY2xhaW1lZCBjcmVkaXQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAS8RGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVkIHRoZSB0cmFuc2Zlci4BGGFtb3VudPABMEJhbGFuY2VPZjxUPgRMQW1vdW50IHRyYW5zZmVycmVkLgAEcEEgcGVyc29uIGhhcyBjbGFpbWVkIGNyZWRpdC5QUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG9lBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EsFRoZSBhY2NvdW50IHdob3NlIHBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQuARxyZXN1bWVk9AEQYm9vbAQRAVdoZXRoZXIgdGhpcyB3YXMgcmVzdW1pbmcgZnJvbSBzdXNwZW5zaW9uIG9yIGZpcnN0LXRpbWUgcmVjb2duaXRpb24uAQSkUGVyc29uaG9vZCB3YXMgcmVjb2duaXplZCBmb3IgYW4gYWNjb3VudC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW508AEwQmFsYW5jZU9mPFQ+BFRUaGUgYW1vdW50IHBlciByb3VuZC4BFGNvdW50OAEMdTMyBFRUaGUgbnVtYmVyIG9mIHJvdW5kcy4BIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4EhFRoZSBkdXJhdGlvbiBwZXIgcm91bmQgaW4gYmxvY2tzLgIEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4DBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLkRSb3VuZFRyYW5zaXRpb25lZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASYVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIHRyYW5zaXRpb25lZC4EBHhBIHJvdW5kIGhhcyBiZWVuIHRyYW5zaXRpb25lZC5MUGF5b3V0Um91bmRPcGVyYXRlZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASIVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIG9wZXJhdGVkLgUEGQFBIHBheW91dCByb3VuZCBoYXMgYmVlbiBvcGVyYXRlZCAoY3JlZGl0IGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cykuJENhc2hlZE91dAQBDHdob2UHAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR8VGhlIHBhcnRpY2lwYW50IHdobyBjYXNoZWQgb3V0LgYEuEEgcGFydGljaXBhbnQgaGFzIGNhc2hlZCBvdXQgc2NvcmUgZm9yIHBvaW50cy54UGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlU2V0AAcEvFRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuXEFic2VuY2VHcmFjZVNjaGVkdWxlU2V0AAgEoFRoZSBhYnNlbmNlLWdyYWNlIHNjaGVkdWxlIGhhcyBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtBwxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXZlbnQEBFQAASAsSWRzUmVzZXJ2ZWQEARRjb3VudDgBDHUzMgAABHRBIG51bWJlciBvZiBJRHMgd2FzIHJlc2VydmVkLiRJZFJlbmV3ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAQRIQW4gSUQgd2FzIHJlbmV3ZWQuMElkVW5yZXNlcnZlZAQBCGlkKAEoUGVyc29uYWxJZAACBGhBIHJlc2VydmVkIElEIHdhcyByZW1vdmVkLkBQZW9wbGVSZWdpc3RlcmVkBAEUY291bnQ4AQx1MzIAAwRkUmVnaXN0ZXIgbXVsdGlwbGUgcGVvcGxlLjxQZW9wbGVTdXNwZW5kZWQEARRjb3VudDgBDHUzMgAEBGxTdXNwZW5kIGEgbnVtYmVyIG9mIHBlb3BsZS5EUGVyc29uaG9vZFJlc3VtZWQEAQhpZCgBKFBlcnNvbmFsSWQABQSEU29tZW9uZSdzIHBlcnNvbmhvb2Qgd2FzIHJlc3VtZWQuSFN1c3BlbnNpb25zU3RhcnRlZAAGBHxUaGUgcGFsbGV0IGVuYWJsZWQgc3VzcGVuc2lvbnMuQFN1c3BlbnNpb25zRW5kZWQABwSAVGhlIHBhbGxldCBkaXNhYmxlZCBzdXNwZW5zaW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxBwyMaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb24YcGFsbGV0FEV2ZW50BARUAAFEMEFzc2V0Q3JlYXRlZAAABNBUaGUgZm9yZWlnbiBhc3NldCB3YXMgY3JlYXRlZCBhbmQgcmVzZXJ2ZXMgd2VyZSBzZXQuUFhjbUZ1bmRzVHJhbnNmZXJTZW50AAEEsEFuIFhDTSBmdW5kcyB0cmFuc2ZlciB3YXMgc2VudCB0byBBc3NldCBIdWIuYFhjbUZ1bmRzVHJhbnNmZXJUaW1lZE91dAACBLxUaGUgWENNIHRyYW5zZmVyIHRpbWVkIG91dCBhbmQgd2lsbCBiZSByZXRyaWVkLjRGdW5kc1ZlcmlmaWVkAAMElFRyYW5zZmVycmVkIGZ1bmRzIGhhdmUgYmVlbiB2ZXJpZmllZC4oUG90c0Z1bmRlZAAEBGhBbGwgcG90cyBoYXZlIGJlZW4gZnVuZGVkLohQZW9wbGVMaXRlQXR0ZXN0YXRpb25BbGxvd2FuY2VzU2V0AAUExFBlb3BsZSBMaXRlIGF0dGVzdGF0aW9uIGFsbG93YW5jZXMgaGF2ZSBiZWVuIHNldC5cTW9iUnVsZVBheW91dHNTY2hlZHVsZWQABgSYTW9iIFJ1bGUgcGF5b3V0IHNjaGVkdWxlIGhhcyBiZWVuIHNldC5UU2NvcmVQYXlvdXRzU2NoZWR1bGVkAAcEjFNjb3JlIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQudE9uUG9sbEluaXRpYWxpemF0aW9uQ29tcGxldGVkAAgEyFRoZSBvbmUtdGltZSBvbl9wb2xsIGluaXRpYWxpemF0aW9uIGhhcyBjb21wbGV0ZWQuZE1pZ3JhdGlvblBlb3BsZVJlY29nbml6ZWQACQS8TWlncmF0aW9uOiBpbml0aWFsIHBlb3BsZSBoYXZlIGJlZW4gcmVjb2duaXplZC5oTWlncmF0aW9uT25ib2FyZGluZ1NpemVTZXQACgSgTWlncmF0aW9uOiBvbmJvYXJkaW5nIHNpemUgaGFzIGJlZW4gc2V0LnhNaWdyYXRpb25Qcm9vZk9mSW5rSW5pdGlhbGl6ZWQACwTQTWlncmF0aW9uOiBQcm9vZi1vZi1JbmsgcGFsbGV0IGhhcyBiZWVuIGluaXRpYWxpemVkLlxNaWdyYXRpb25HYW1lc1NjaGVkdWxlZAAMBJRNaWdyYXRpb246IGdhbWVzIGhhdmUgYmVlbiBzY2hlZHVsZWQuXE1pZ3JhdGlvbkludml0ZXNHcmFudGVkAA0ElE1pZ3JhdGlvbjogaW52aXRlcyBoYXZlIGJlZW4gZ3JhbnRlZC58TWlncmF0aW9uUmVpbWJ1cnNlbWVudFZhbHVlc1NldAAOBOxNaWdyYXRpb246IFByb29mLW9mLUluayByZWltYnVyc2VtZW50IHZhbHVlcyBoYXZlIGJlZW4gc2V0LoRNaWdyYXRpb25BdHRlc3RhdGlvbkFsbG93YW5jZXNTZXQADwTwTWlncmF0aW9uOiBQZW9wbGUgTGl0ZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2VzIGhhdmUgYmVlbiBzZXQuSE1pZ3JhdGlvbkNvbXBsZXRlZAAQBBkBTWlncmF0aW9uIGhhcyBjb21wbGV0ZWQgYW5kIG9uX3BvbGwgaW5pdGlhbGl6YXRpb24gaGFzIGJlZW4gdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHUHDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0FEV2ZW50BARUAAEYeEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAAE8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIHZlcmlmaWVyLnRBdHRlc3RhdGlvbkFsbG93YW5jZUluY3JlYXNlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgABBC0BQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQgYnkgYGNvdW50YCBhdHRlc3RhdGlvbnMuOFBlcnNvbkF0dGVzdGVkCAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEgdmVyaWZpZXIEATBUOjpBY2NvdW50SWQAAgTUQSBuZXcgbGl0ZSBwZXJzb24gd2FzIHJlZ2lzdGVyZWQgdGhyb3VnaCBhdHRlc3RhdGlvbi5IQ29uc3VtZXJSZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBKxBIGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFzcQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQABAS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc3EDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAUEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR5BwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQURXZlbnQEBFQAAThAUGVyc29uUmVnaXN0ZXJlZAgBFGFsaWFzCAEUQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAAEmEEgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuUExpdGVQZXJzb25SZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBKxBIGxpdGUgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuZEZyaWVuZFJlcXVlc3RTdG10VXNhZ2VTZXQQARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEMc2VxDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAIEAQFGcmllbmQgcmVxdWVzdCBzdGF0ZW1lbnQgdXNhZ2UgaGFzIGJlZW4gYXNzaWduZWQgZm9yIGEgc2VxdWVuY2UudEZyaWVuZFJlcXVlc3RTdG10VXNhZ2VSZW1vdmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBMBGcmllbmQgcmVxdWVzdCBzdGF0ZW1lbnQgdXNhZ2UgaGFzIGJlZW4gcmVtb3ZlZC5oUGVyc29uQXV0aG9yaXphdGlvblRvdWNoZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQElEEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiB3YXMgdG91Y2hlZC6ERXhwaXJlZFVzZXJuYW1lUmVzZXJ2YXRpb25SZW1vdmVkCAEgdXNlcm5hbWVtBAEgVXNlcm5hbWUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAUEsEFuIGV4cGlyZWQgdXNlcm5hbWUgcmVzZXJ2YXRpb24gd2FzIHJlbW92ZWQuUElkZW50aWZpZXJLZXlVcGRhdGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBKBBIGNvbnN1bWVyJ3MgaWRlbnRpZmllciBrZXkgd2FzIHVwZGF0ZWQueFVzZXJuYW1lUmVzZXJ2YXRpb25EdXJhdGlvblNldAQBIGR1cmF0aW9uKAEMdTY0AAcEqFRoZSB1c2VybmFtZSByZXNlcnZhdGlvbiBkdXJhdGlvbiB3YXMgc2V0LlRTdG10U3RvcmVBbGxvd2FuY2VTZXQQARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEMc2VxOAEMdTMyAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAIBMxBbiBhbm9ueW1vdXMgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSB3YXMgZ3JhbnRlZC5oU3RtdFN0b3JlQWxsb3dhbmNlc0NsZWFyZWQMARhwZXJpb2Q4AQx1MzIAASRmaXJzdF9rZXkIARRBbGlhcwABFGNvdW50OAEMdTMyAAkEzEV4cGlyZWQgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZXMgd2VyZSBjbGVhbmVkIHVwLjRQZXJzb25EZW1vdGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAKBNxBIGZ1bGwgcGVyc29uIHdhcyBkZW1vdGVkIGR1ZSB0byBleHBpcmVkIGF1dGhvcml6YXRpb24uWExvbmdUZXJtU3RvcmFnZUNsYWltZWQUARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABKGNvbGxlY3Rpb26JAwFQTWVtYmVyc2hpcENvbGxlY3Rpb24ACwTITG9uZy10ZXJtIHN0b3JhZ2UgaGFzIGJlZW4gY2xhaW1lZCBmb3IgYW4gYWNjb3VudC58TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbkZhaWxlZBQBFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEoY29sbGVjdGlvbokDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgAMCFkBQSBsb25nLXRlcm0gc3RvcmFnZSBjbGFpbSB3YXMgYWNjZXB0ZWQgYnV0IHRoZSBkb3duc3RyZWFtIGFsbG9jYXRpb24gZmFpbGVkLiBUaGUgYWxpYXOUaXMgc3RpbGwgbWFya2VkIHNwZW50IGZvciB0aGUgcGVyaW9kLnRMb25nVGVybVN0b3JhZ2VBbGlhc2VzQ2xlYXJlZAgBGHBlcmlvZDgBDHUzMgABFGNvdW50OAEMdTMyAA0EBQFFeHBpcmVkIGxvbmctdGVybSBzdG9yYWdlIGFsaWFzZXMgaGF2ZSBiZWVuIGNsZWFyZWQgZm9yIGEgcGVyaW9kLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0HDGxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXIYcGFsbGV0FEV2ZW50BARUAAEIaENodW5rUGFnZUhhc2hlc0luaXRpYWxpemVkCAE0cmluZ19leHBvbmVudEUFATBSaW5nRXhwb25lbnQAASx0b3RhbF9wYWdlczgBDHUzMgAABBkBQSBuZXcgY2h1bmsgcGFnZSBoYXNoIHNldCBoYXMgYmVlbiBpbml0aWFsaXplZCAoZS5nLiwgZHVyaW5nIGdlbmVzaXMpLixDaHVua3NBZGRlZAwBNHJpbmdfZXhwb25lbnRFBQEwUmluZ0V4cG9uZW50AAEsc3RhcnRfaW5kZXg4AQx1MzIAARRjb3VudDgBDHUzMgABBCEBTmV3IGNodW5rcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIGFuIGV4aXN0aW5nIG9yIG5ldyBjaHVuayBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQcMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFdmVudAQEVAABKCxNZW1iZXJBZGRlZAQBDGtleQgBLE1lbWJlck9mPFQ+AAAE6EFuIGVudGl0eSBoYXMgaGFkIHRoZWlyIG1lbWJlcnNoaXAgcmVjb2duaXNlZCBhbmQgaW5kZXhlZC40TWVtYmVyUmVtb3ZlZAQBDGtleQgBLE1lbWJlck9mPFQ+AAEErEFuIGVudGl0eSBoYXMgaGFkIHRoZWlyIG1lbWJlcnNoaXAgcmV2b2tlZC5sQ29sbGVjdGlvbk1hcmtlZEZvckRlbGV0aW9uBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAgSoQSBjb2xsZWN0aW9uIGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uRENvbGxlY3Rpb25EZWxldGVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAwSQQSBjb2xsZWN0aW9uIGhhcyBiZWVuIGZ1bGx5IGRlbGV0ZWQuJFJpbmdCdWlsdAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAAEBFhBIHJpbmcgcm9vdCB3YXMgYnVpbHQuQE1lbWJlcnNPbmJvYXJkZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgAFBFxNZW1iZXJzIHdlcmUgb25ib2FyZGVkLixSaW5nc01lcmdlZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8YmFzZV9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAFEdGFyZ2V0X3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgABgRYVHdvIHJpbmdzIHdlcmUgbWVyZ2VkLkRPbmJvYXJkaW5nU2l6ZVNldAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8b25ib2FyZGluZ19zaXplOAEMdTMyAAcEtFRoZSBvbmJvYXJkaW5nIHNpemUgd2FzIHNldCBmb3IgYSBjb2xsZWN0aW9uLkhNZW1iZXJTZWxmSW5jbHVkZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABDGtleQgBLE1lbWJlck9mPFQ+AAgEjEEgbWVtYmVyIHNlbGYtaW5jbHVkZWQgaW50byBhIHJpbmcuQE9sZFJvb3RDbGVhbmVkVXAMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBDHUzMgAJBKRBbiBvbGQgcm9vdCByZXZpc2lvbiBoYXMgYmVlbiBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUHDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQURXZlbnQEBFQAAWAkQ29pblNwbGl0BAEwb3V0cHV0X2NvdW50OAEMdTMyAAAAPENvaW5UcmFuc2ZlcnJlZAwBCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWWdAwEkQ29pblZhbHVlAAEcbmV3X2FnZVUDAQx1MTYAAQBYUmVjeWNsZXJMb2FkZWRXaXRoQ29pbgQBFHZhbHVlnQMBJENvaW5WYWx1ZQACAHxSZWN5Y2xlckxvYWRlZFdpdGhFeHRlcm5hbEFzc2V0DAEMd2hvBAEwVDo6QWNjb3VudElkAAEUdmFsdWWdAwEkQ29pblZhbHVlAAEYYW1vdW508AFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAMAYFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbhABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfdmFsdWWdAwEkQ29pblZhbHVlAAEwb3V0cHV0X3ZhbHVlnQMBJENvaW5WYWx1ZQABLGlucHV0X2NvdW50OAEMdTMyAAQAhFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldBABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWWdAwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnTwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABQCwUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0QW5kVm91Y2hlcnMUAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlnQMBJENvaW5WYWx1ZQABLGlucHV0X2NvdW50OAEMdTMyAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW508AFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAE0dm91Y2hlcl9jb3VudDgBDHUzMgAGAIRQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aENvaW4IAQxmZWXwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AASRkZXN0cm95ZWTwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABwCMUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhOYXRpdmUIAQx3aG8EATBUOjpBY2NvdW50SWQAAQxmZWXwAUhOYXRpdmVCYWxhbmNlT2Y8VD4ACACoUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhFeHRlcm5hbEFzc2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEMZmVl8AFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAkAdFBlb3BsZUZyZWVVbmxvYWRUb2tlbkNvbnN1bWVkBAEYcGVyaW9kOAEYUGVyaW9kAAoAhExpdGVQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAALAGRSZWN5Y2xlcnNVbmxvYWRlZEludG9Db2luDAEIdG8EATBUOjpBY2NvdW50SWQAATBvdXRwdXRfdmFsdWWdAwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIADACIUmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldAwBCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnTwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADQC4UmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldE5vbkFub255bW91cxQBDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnTwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3mRBQEsRmVlQ3VycmVuY3kADgBkUmVjeWNsZXJVbmxvYWRlZEludG9Db2lucwQBMG91dHB1dF9jb3VudDgBDHUzMgAPAHxDb2luT2ZmYm9hcmRlZEludG9FeHRlcm5hbEFzc2V0DAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZZ0DASRDb2luVmFsdWUAARhhbW91bnTwAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEAA8UmVjeWNsZXJDbGVhbmVkDAEUdmFsdWWdAwEkQ29pblZhbHVlAAE8cmVtYWluaW5nX2NvaW5zOAEMdTMyAAFAZGVzdHJveWVkX2Ftb3VudPABVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgARAGRDb25zdW1lZEZyZWVUb2tlbnNDbGVhbmVkBAEYcGVyaW9kOAEYUGVyaW9kABIAaFBhaWRVbmxvYWRUb2tlblJpbmdDbGVhbmVkCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAATAExSZWN5Y2xlckR1c3RDbGVhbmVkABQAaFBhaWRVbmxvYWRUb2tlbkR1c3RDbGVhbmVkABUAnEV4cGlyZWRQYWlkVW5sb2FkVG9rZW5Db2xsZWN0aW9uRGVsZXRlZAQBGHBlcmlvZDgBGFBlcmlvZAAWAFBVbmRlcmx5aW5nQXNzZXRJZFNldAQBIGFzc2V0X2lkBQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgAXAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkHDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXZlbnQEBFQAARgoU3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAARcQSBwYXJhY2hhaW4gc3Vic2NyaWJlZC4wVW5zdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAABBGRBIHBhcmFjaGFpbiB1bnN1YnNjcmliZWQuLFVwZGF0ZXNTZW50CAEccGFyYV9pZJwBGFBhcmFJZAABMHVwZGF0ZV9jb3VudDgBDHUzMgACBIBVcGRhdGUgYmF0Y2ggc2VudCB0byBzdWJzY3JpYmVyLkBVcGRhdGVTZW5kRmFpbGVkBAEccGFyYV9pZJwBGFBhcmFJZAADBMRTZW5kaW5nIHJpbmcgcm9vdCB1cGRhdGVzIHRvIGEgc3Vic2NyaWJlciBmYWlsZWQuPFJlcGxheVJlcXVlc3RlZAwBHHBhcmFfaWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABNGluZGljZXNfY291bnQ4AQx1MzIABAS8UmVwbGF5IG9mIHJpbmcgcm9vdHMgcmVxdWVzdGVkIGJ5IGEgc3Vic2NyaWJlci44QmF0Y2hBYmFuZG9uZWQEASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAUEzEEgc3R1Y2sgYmF0Y2ggd2FzIGFiYW5kb25lZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldI0HDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQURXZlbnQEBFQAAUA4RXZlbnRTY2hlZHVsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAABUU2NoZWR1bGVkRXZlbnRSZW1vdmVkBAEgZXZlbnRfaWQIARxFdmVudElkAAEAOEV2ZW50Q2FuY2VsbGVkBAEgZXZlbnRfaWQIARxFdmVudElkAAIATFJlZ2lzdHJhdGlvblN0YXJ0ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAwA8QWxpYXNSZWdpc3RlcmVkDAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdJEHATRCaWdFbmRpYW5VMjU2AAFIcGFydGljaXBhbnRfb3JpZ2lulQcBWFJlZ2lzdHJhdGlvbkVudHJ5T2Y8VD4ABABEQWNjb3VudFJlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90kQcBNEJpZ0VuZGlhblUyNTYAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAUAOERyYXdpbmdXaW5uZXJzCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIABgA8Q2xhaW1pbmdTdGFydGVkCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIABwA0RXZlbnRDYW5jZWxlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAIADBQcml6ZUNsYWltZWQUASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90kQcBNEJpZ0VuZGlhblUyNTYAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkBQEBMEFzc2V0SWRPZjxUPgABGGFtb3VudPABREFzc2V0QmFsYW5jZU9mPFQ+AAkAVENsZWFyaW5nUmVnaXN0cmF0aW9ucwgBIGV2ZW50X2lkCAEcRXZlbnRJZAABJHVuY2xhaW1lZDgBDHUzMgAKADxDbGVhcmluZ1dpbm5lcnMEASBldmVudF9pZAgBHEV2ZW50SWQACwA8RmluYWxpemluZ0V2ZW50BAEgZXZlbnRfaWQIARxFdmVudElkAAwAOEV2ZW50Q29tcGxldGVkBAEgZXZlbnRfaWQIARxFdmVudElkAA0AMEFzc2V0RW5hYmxlZAgBIGFzc2V0X2lkBQEBMEFzc2V0SWRPZjxUPgABGGZ1bmRlZPABREFzc2V0QmFsYW5jZU9mPFQ+AA4ANEFzc2V0RGlzYWJsZWQIASBhc3NldF9pZAUBATBBc3NldElkT2Y8VD4AASByZWZ1bmRlZPABREFzc2V0QmFsYW5jZU9mPFQ+AA8ABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQcMNGluZGl2X3N1cHBvcnQUdXRpbHM0QmlnRW5kaWFuVTI1NgADIAAAAAwEHQFBIFUyNTYgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLpUHDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlc0RSZWdpc3RyYXRpb25FbnRyeQQkQWNjb3VudElkAQQBCBRBbGlhcwQBFGFsaWFzCAEUQWxpYXMAAAAcQWNjb3VudAQBKGFjY291bnRfaWQEASRBY2NvdW50SWQAAQAAmQcMTGluZGl2X3BhbGxldF9ob25vdXIYcGFsbGV0FEV2ZW50BARUAAEMIFZvdGVDYXN0CAEcc3ViamVjdAgBJFN1YmplY3RJZAR4VGhlIHN1YmplY3QgdGhhdCB3YXMgdm90ZWQgb24uASRkaXJlY3Rpb27BBQEkRGlyZWN0aW9uBGhUaGUgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgAE2EEgc3ViamVjdCB3YXMgdm90ZWQgb24gd2l0aCBhIHByZXZpb3VzbHkgdW51c2VkIHBvaW50LihWb3RlUmV1c2VkEAEsb2xkX3N1YmplY3QIASRTdWJqZWN0SWQE2FRoZSBzdWJqZWN0IHRoYXQgcHJldmlvdXNseSBoZWxkIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0b2xkX2RpcmVjdGlvbsEFASREaXJlY3Rpb24EkFRoZSBwcmV2aW91cyBkaXJlY3Rpb24gb2YgdGhlIHBvaW50LgEsbmV3X3N1YmplY3QIASRTdWJqZWN0SWQEwFRoZSBzdWJqZWN0IHRoYXQgbm93IGhvbGRzIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0bmV3X2RpcmVjdGlvbsEFASREaXJlY3Rpb24EeFRoZSBuZXcgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgEEzEEgcG9pbnQgd2FzIHJlZGlyZWN0ZWQgZnJvbSBvbmUgc3ViamVjdCB0byBhbm90aGVyLjRIb25vdXJDaGFuZ2VkDAEcc3ViamVjdAgBJFN1YmplY3RJZAScVGhlIHN1YmplY3Qgd2hvc2UgaG9ub3VyIHNjb3JlIGNoYW5nZWQuASRvbGRfdmFsdWWdBwEYSG9ub3VyBIxUaGUgaG9ub3VyIHZhbHVlIGJlZm9yZSB0aGUgdXBkYXRlLgEkbmV3X3ZhbHVlnQcBGEhvbm91cgSIVGhlIGhvbm91ciB2YWx1ZSBhZnRlciB0aGUgdXBkYXRlLgIEqFRoZSBob25vdXIgc2NvcmUgb2YgYSBzdWJqZWN0IGhhcyBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJ0HAAAFCwChBwwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHRBBwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZKUHAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHRBBwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQcEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACpBwgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAK0HAAACPACxBwAAArUHALUHAAAECDg4ALkHCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZb0HAURDb3c8J3N0YXRpYywgc3RyPgAAvQcEDENvdwQEVAHBBwAEAMEHAAAAwQcAAAUCAMUHCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbvQBEGJvb2wAAMkHDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9jawECARhXZWlnaHQAASRtYXhfYmxvY2sBAgEYV2VpZ2h0AAEkcGVyX2NsYXNzzQcBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAzQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAHRBwAMARhub3JtYWzRBwEEVAABLG9wZXJhdGlvbmFs0QcBBFQAASRtYW5kYXRvcnnRBwEEVAAA0QcMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpYwECARhXZWlnaHQAATRtYXhfZXh0cmluc2lj0QIBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFs0QIBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWTRAgE4T3B0aW9uPFdlaWdodD4AANUHDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXjZBwFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXpl1AEsT3B0aW9uPHUzMj4AANkHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAA3QcIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAOEHCChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWW9BwFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWW9BwFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXPlBwEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AADlBwQMQ293BARUAekHAAQA6QcAAADpBwAAAu0HAO0HAAAECOkBOADxBwwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABJDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLkROb3RoaW5nQXV0aG9yaXplZAAHBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAIBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXT1Bwwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAA+QcQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAf0HAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3MNCAE4VmVjPEV4dHJpbnNpYz4AAP0HEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAWEEFEV4dHJhAQEIAAQAGAAAAAEICHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwEFCAAEAAUIAQRTAAAFCAAABCwJCE0GUQZVBlkGXQZhBmkGbQZxBnUGAAkIAAAEMMkF0QXVBeEF7QX5BQUGEQYdBjEGPQZJBgANCAAAAv0HABEIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleNQBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodAECARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleNQBLE9wdGlvbjx1MzI+AAIAABUIAAAGVQMAGQgAAAIdCAAdCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aCEIATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2g1CAEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsOQgBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAhCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmclCAGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AACUIBCBCVHJlZU1hcAgESwGcBFYBKQgABAAtCAAAACkIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAC0IAAACMQgAMQgAAAQInCkIADUIBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAAOQgEGE9wdGlvbgQEVAE9CAEIEE5vbmUAAAAQU29tZQQAPQgAAAEAAD0IDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAQQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGghCAE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr1AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWw5CAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAEUIBBhPcHRpb24EBFQBSQgBCBBOb25lAAAAEFNvbWUEAEkIAAABAABJCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAABNCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eVEIAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHNVCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc1UIAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AABRCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAFUIAAACWQgAWQgAAAQInF0IAF0IDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZDUIATBPcHRpb248SGFzaD4AAGEIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zZQgBSEFzeW5jQmFja2luZ1BhcmFtcwAAZQgQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAaQgIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAABtCAQgQlRyZWVNYXAIBEsBnARWAWkIAAQAcQgAAABxCAAAAnUIAHUIAAAECJxpCAB5CAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAH0IAAACgQgAgQgIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAIUICHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c4kIASxWZWM8UGFyYUlkPgAAiQgAAAKcAI0IDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpEIDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXJyb3IEBFQAAQQcT25nb2luZwAABOhUaGUgb3BlcmF0aW9uIGNhbm5vdCBjb21wbGV0ZSBzaW5jZSBzb21lIE1CTXMgYXJlIG9uZ29pbmcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpUICERwYWxsZXRfbWlncmF0aW9uczBNYm1Jc09uZ29pbmcAAQwMWWVzAAAACE5vAAEAFFN0dWNrAAIAAJkIBBhPcHRpb24EBFQBnQgBCBBOb25lAAAAEFNvbWUEAJ0IAAABAACdCAhEcGFsbGV0X21pZ3JhdGlvbnMsTWJtUHJvZ3Jlc3MAABABRGN1cnJlbnRfbWlncmF0aW9uOAEMdTMyAAFAdG90YWxfbWlncmF0aW9uczgBDHUzMgABXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzOAEMdTMyAAFsY3VycmVudF9taWdyYXRpb25fbWF4X3N0ZXBz1AEsT3B0aW9uPHUzMj4AAKEICERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmeVCAEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3OZCAFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AAClCAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAakIBFMAAAQAsQgBGFZlYzxUPgAAqQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQHwAAwBCGlk6QEBOExvY2tJZGVudGlmaWVyAAEYYW1vdW508AEcQmFsYW5jZQABHHJlYXNvbnOtCAEcUmVhc29ucwAArQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAACxCAAAAqkIALUIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBuQgEUwAABAC9CAEYVmVjPFQ+AAC5CAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgHpARxCYWxhbmNlAfAACAEIaWTpAQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnTwARxCYWxhbmNlAAC9CAAAArkIAMEIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQgEUwAABADJCAEYVmVjPFQ+AADFCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAdEGHEJhbGFuY2UB8AAIAQhpZNEGAQhJZAABGGFtb3VudPABHEJhbGFuY2UAAMkIAAACxQgAzQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRCARTAAAEANUIARhWZWM8VD4AANEIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBEBxCYWxhbmNlAfAACAEIaWQQAQhJZAABGGFtb3VudPABHEJhbGFuY2UAANUIAAAC0QgA2QgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0ICGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAA4QgQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAeUIAAQA5QgBBFQAAOUIGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgHwGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudPABBEIAAOkIDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQHwJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAfAAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHnwARxCYWxhbmNlAAEcZGVwb3NpdPABOERlcG9zaXRCYWxhbmNlAAEsbWluX2JhbGFuY2XwARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudPQBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVz7QgBLEFzc2V0U3RhdHVzAADtCAw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAPEIAAAECAUBBAD1CAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UB8DhEZXBvc2l0QmFsYW5jZQHwFEV4dHJhARAkQWNjb3VudElkAQQAEAEcYmFsYW5jZfABHEJhbGFuY2UAARhzdGF0dXP5CAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbv0IAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAAD5CAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAAD9CAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UB8CRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAPABHEJhbGFuY2UAAgA8RGVwb3NpdFJlZnVuZGVkAAMALERlcG9zaXRGcm9tCAAEASRBY2NvdW50SWQAAPABHEJhbGFuY2UABAAAAQkAAAQMBQEEBAAFCQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyBBcHByb3ZhbAgcQmFsYW5jZQHwOERlcG9zaXRCYWxhbmNlAfAACAEYYW1vdW508AEcQmFsYW5jZQABHGRlcG9zaXTwAThEZXBvc2l0QmFsYW5jZQAACQkMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UB8DRCb3VuZGVkU3RyaW5nAQ0JABQBHGRlcG9zaXTwAThEZXBvc2l0QmFsYW5jZQABEG5hbWUNCQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbA0JATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbvQBEGJvb2wAAA0JDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhUJBBhPcHRpb24EBFQB6QgBCBBOb25lAAAAEFNvbWUEAOkIAAABAAAZCQQYT3B0aW9uBARUAfABCBBOb25lAAAAEFNvbWUEAPAAAAEAAB0JBBhPcHRpb24EBFQBCQkBCBBOb25lAAAAEFNvbWUEAAkJAAABAAAhCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuJQkMUHBhbGxldF9hc3NldHNfaG9sZGVyGHBhbGxldBRFcnJvcggEVAAESQABBDBUb29NYW55SG9sZHMAAAQxAU51bWJlciBvZiBob2xkcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCB0aGUgY291bnQgb2YgYFJ1bnRpbWVIb2xkUmVhc29uYC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlAfAsQmxvY2tOdW1iZXIBOAAIARB1c2Vk8AEcQmFsYW5jZQABIGF0X2Jsb2NrOAEsQmxvY2tOdW1iZXIAAC0JDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFcnJvcgQEVAABCBxOb1VzYWdlAAAEgFRoZSBvcmlnaW4gaGFzIG5vIHVzYWdlIHRyYWNrZWQuHE5vdFplcm8AAQRYVGhlIHVzYWdlIGlzIG5vdCB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4xCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAD4ARhWZWM8VD4AADUJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOQkEUwAABAA9CQEYVmVjPFQ+AAA5CQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQHwAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXTwARxCYWxhbmNlAAA9CQAAAjkJAEEJCDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAOkBARxbdTg7IDhdAABFCQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5JCQAAAk0JAE0JAAAECARlAQBRCQAAAlUJAFUJAAAECDhZCQBZCQwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABABdCQEcUGVyYmlsbAAAXQkMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAAYQkAAAQIZQkYAGUJDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAcAEcW3U4OyA0XQAAaQkMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC5tCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWkBBFMAAAQAcQkBGFZlYzxUPgAAcQkAAAJpAQB1CQhIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AAB5CQAABAh1CTgAfQkMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAZwEUwAABACBCQEsQlRyZWVTZXQ8VD4AAIEJBCBCVHJlZVNldAQEVAGcAAQAiQgAAACFCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYkJBFMAAAQAlQkBGFZlYzxUPgAAiQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAGAEkcmVjaXBpZW50nAEYUGFyYUlkAAEUc3RhdGWNCQE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3T0ARBib29sAAEsZmlyc3RfaW5kZXhVAwEMdTE2AAEobGFzdF9pbmRleFUDAQx1MTYAARRmbGFnc5EJAVBPdXRib3VuZENoYW5uZWxGbGFncwAAjQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAkQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAJUJAAACiQkAmQkAAAQInFUDAJ0JDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAoQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAApQkMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQkMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcnUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXKtCQFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmebEJAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbnUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZfQBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZbkJAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAArQkEGE9wdGlvbgQEVAF1AQEIEE5vbmUAAAAQU29tZQQAdQEAAAEAALEJBBhPcHRpb24EBFQBtQkBCBBOb25lAAAAEFNvbWUEALUJAAABAAC1CQAABAgMDAC5CQgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBADxAQEwdjM6OlJlc3BvbnNlAAMACFY0BABhAgEwdjQ6OlJlc3BvbnNlAAQACFY1BACtAgEwdjU6OlJlc3BvbnNlAAUAAL0JAAAECDh1AQDBCQAABAwoAQI4AMUJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByQkEUwAABADNCQEYVmVjPFQ+AADJCQAABAh1ATgAzQkAAALJCQDRCQwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBADkATxPcHRpb248VmVjPHU4Pj4AAgBoTWlncmF0ZUFuZE5vdGlmeU9sZFRhcmdldHMAAwAA1QkAAAQMOAQ5AwDZCQwocGFsbGV0X3hjbRhwYWxsZXRoUmVtb3RlTG9ja2VkRnVuZ2libGVSZWNvcmQISENvbnN1bWVySWRlbnRpZmllcgEQME1heENvbnN1bWVycwAAEAEYYW1vdW508AEQdTEyOAABFG93bmVydQEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2VydQEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJz3QkB0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AAN0JDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB4QkEUwAABADlCQEYVmVjPFQ+AADhCQAABAgQ8ADlCQAAAuEJAOkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB7QkEUwAABADxCQEYVmVjPFQ+AADtCQAABAjwdQEA8QkAAALtCQD1CQgocGFsbGV0X3hjbVhBdXRob3JpemVkQWxpYXNlc0VudHJ5CBhUaWNrZXQB+QkMTUFYAf0JAAgBIGFsaWFzZXJzAQoBeEJvdW5kZWRWZWM8T3JpZ2luQWxpYXNlciwgTUFYPgABGHRpY2tldPkJARhUaWNrZXQAAPkJEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlIERpc2FibGVkAAAAAP0JDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAAABCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQUKBFMAAAQACQoBGFZlYzxUPgAABQoMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9udQEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5PQMBLE9wdGlvbjx1NjQ+AAAJCgAAAgUKAA0KDChwYWxsZXRfeGNtGHBhbGxldBRFcnJvcgQEVAABcCxVbnJlYWNoYWJsZQAACF0BVGhlIGRlc2lyZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLCBnZW5lcmFsbHkgYmVjYXVzZSB0aGVyZSBpcyBhIG5vIHdheSBvZiByb3V0aW5nGHRvIGl0LixTZW5kRmFpbHVyZQABCEEBVGhlcmUgd2FzIHNvbWUgb3RoZXIgaXNzdWUgKGkuZS4gbm90IHRvIGRvIHdpdGggcm91dGluZykgaW4gc2VuZGluZyB0aGUgbWVzc2FnZS7IUGVyaGFwcyBhIGxhY2sgb2Ygc3BhY2UgZm9yIGJ1ZmZlcmluZyB0aGUgbWVzc2FnZS4gRmlsdGVyZWQAAgScVGhlIG1lc3NhZ2UgZXhlY3V0aW9uIGZhaWxzIHRoZSBmaWx0ZXIuSFVud2VpZ2hhYmxlTWVzc2FnZQADBLRUaGUgbWVzc2FnZSdzIHdlaWdodCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC5gRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAQE3FRoZSBkZXN0aW5hdGlvbiBgTG9jYXRpb25gIHByb3ZpZGVkIGNhbm5vdCBiZSBpbnZlcnRlZC4URW1wdHkABQSAVGhlIGFzc2V0cyB0byBiZSBzZW50IGFyZSBlbXB0eS44Q2Fubm90UmVhbmNob3IABgQ1AUNvdWxkIG5vdCByZS1hbmNob3IgdGhlIGFzc2V0cyB0byBkZWNsYXJlIHRoZSBmZWVzIGZvciB0aGUgZGVzdGluYXRpb24gY2hhaW4uNFRvb01hbnlBc3NldHMABwTEVG9vIG1hbnkgYXNzZXRzIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLjRJbnZhbGlkT3JpZ2luAAgEeE9yaWdpbiBpcyBpbnZhbGlkIGZvciBzZW5kaW5nLihCYWRWZXJzaW9uAAkEIQFUaGUgdmVyc2lvbiBvZiB0aGUgYFZlcnNpb25lZGAgdmFsdWUgdXNlZCBpcyBub3QgYWJsZSB0byBiZSBpbnRlcnByZXRlZC4sQmFkTG9jYXRpb24ACghBAVRoZSBnaXZlbiBsb2NhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCAoZS5nLiBiZWNhdXNlIGl0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlYGRlc2lyZWQgdmVyc2lvbiBvZiBYQ00pLjhOb1N1YnNjcmlwdGlvbgALBLxUaGUgcmVmZXJlbmNlZCBzdWJzY3JpcHRpb24gY291bGQgbm90IGJlIGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAAMBBEBVGhlIGxvY2F0aW9uIGlzIGludmFsaWQgc2luY2UgaXQgYWxyZWFkeSBoYXMgYSBzdWJzY3JpcHRpb24gZnJvbSB1cy5YQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAANBCkBQ291bGQgbm90IGNoZWNrLW91dCB0aGUgYXNzZXRzIGZvciB0ZWxlcG9ydGF0aW9uIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4oTG93QmFsYW5jZQAOBEEBVGhlIG93bmVyIGRvZXMgbm90IG93biAoYWxsKSBvZiB0aGUgYXNzZXQgdGhhdCB0aGV5IHdpc2ggdG8gZG8gdGhlIG9wZXJhdGlvbiBvbi4wVG9vTWFueUxvY2tzAA8EwFRoZSBhc3NldCBvd25lciBoYXMgdG9vIG1hbnkgbG9ja3Mgb24gdGhlIGFzc2V0LkxBY2NvdW50Tm90U292ZXJlaWduABAEMQFUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYW4gaWRlbnRpZmlhYmxlIHNvdmVyZWlnbiBhY2NvdW50IGZvciBhbnkgbG9jYXRpb24uKEZlZXNOb3RNZXQAEQQpAVRoZSBvcGVyYXRpb24gcmVxdWlyZWQgZmVlcyB0byBiZSBwYWlkIHdoaWNoIHRoZSBpbml0aWF0b3IgY291bGQgbm90IG1lZXQuMExvY2tOb3RGb3VuZAASBPRBIHJlbW90ZSBsb2NrIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBjb3VsZCBub3QgYmUgZm91bmQuFEluVXNlABMESQFUaGUgdW5sb2NrIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBjb25zdW1lcnMgb2YgdGhlIGxvY2suaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlABUE8EludmFsaWQgYXNzZXQsIHJlc2VydmUgY2hhaW4gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIGl0LnhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAFgRFAUludmFsaWQgYXNzZXQsIGRvIG5vdCBzdXBwb3J0IHJlbW90ZSBhc3NldCByZXNlcnZlcyB3aXRoIGRpZmZlcmVudCBmZWVzIHJlc2VydmVzLjxUb29NYW55UmVzZXJ2ZXMAFwRJAVRvbyBtYW55IGFzc2V0cyB3aXRoIGRpZmZlcmVudCByZXNlcnZlIGxvY2F0aW9ucyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci5gTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlABgEfExvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZS5gVG9vTWFueUF1dGhvcml6ZWRBbGlhc2VzABkEuFRvbyBtYW55IGxvY2F0aW9ucyBhdXRob3JpemVkIHRvIGFsaWFzIG9yaWdpbi40RXhwaXJlc0luUGFzdAAaBIxFeHBpcnkgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LjRBbGlhc05vdEZvdW5kABsE0FRoZSBhbGlhcyB0byByZW1vdmUgYXV0aG9yaXphdGlvbiBmb3Igd2FzIG5vdCBmb3VuZC6ETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yCAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3IRCgE4RXhlY3V0aW9uRXJyb3IAHAg1AUxvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZSB3aXRoIHRoZSBhY3R1YWwgWENNIGVycm9yIGFuZCB0aGUgaW5kZXggb2YgdGhliGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuEQoMKHBhbGxldF94Y20YZXJyb3JzOEV4ZWN1dGlvbkVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAFQoIUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgFJAwAYARRiZWdpbjgBJFBhZ2VJbmRleAABDGVuZDgBJFBhZ2VJbmRleAABFGNvdW50OAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3VycxkKAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50KAEMdTY0AAEQc2l6ZSgBDHU2NAAAGQoEGE9wdGlvbgQEVAEdCgEIEE5vbmUAAAAQU29tZQQAHQoAAAEAAB0KCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAUkDAAgBEHByZXZJAwE0TWVzc2FnZU9yaWdpbgABEG5leHRJAwE0TWVzc2FnZU9yaWdpbgAAIQoAAAQISQM4ACUKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplATggSGVhcFNpemUAABgBJHJlbWFpbmluZzgBEFNpemUAAThyZW1haW5pbmdfc2l6ZTgBEFNpemUAASxmaXJzdF9pbmRleDgBEFNpemUAARRmaXJzdDgBEFNpemUAARBsYXN0OAEQU2l6ZQABEGhlYXApCgGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AAApCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAC0KDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuMQoMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuNQoAAAQIBAgAOQoIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAfAkQWNjb3VudElkAQQwTWF4QXBwcm92YWxzAAAQARB3aGVuwQMBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l08AEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFscz0KAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAAPQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQA+AEYVmVjPFQ+AABBCgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkUKAAAECEkK8ABJCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAU0KBFMAAAQAUQoBGFZlYzxUPgAATQoIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQHNAyxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZc0DASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAABRCgAAAk0KAFUKAAAECFkK8ABZCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAV0KBFMAAAQAYQoBGFZlYzxUPgAAXQoIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAGEKAAACXQoAZQoMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkKDDxwYWxsZXRfaWRlbnRpdHkUdHlwZXMwUmVnaXN0cmF0aW9uDBxCYWxhbmNlAfA0TWF4SnVkZ2VtZW50cwAwSWRlbnRpdHlJbmZvAdUDAAwBKGp1ZGdlbWVudHNtCgH8Qm91bmRlZFZlYzwoUmVnaXN0cmFySW5kZXgsIEp1ZGdlbWVudDxCYWxhbmNlPiksIE1heEp1ZGdlbWVudHM+AAEcZGVwb3NpdPABHEJhbGFuY2UAARBpbmZv1QMBMElkZW50aXR5SW5mbwAAbQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFxCgRTAAAEAHUKARhWZWM8VD4AAHEKAAAECDhZBAB1CgAAAnEKAHkKAAAECPA9CgB9CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEKBFMAAAQAiQoBGFZlYzxUPgAAgQoEGE9wdGlvbgQEVAGFCgEIEE5vbmUAAAAQU29tZQQAhQoAAAEAAIUKDDxwYWxsZXRfaWRlbnRpdHkUdHlwZXM0UmVnaXN0cmFySW5mbwwcQmFsYW5jZQHwJEFjY291bnRJZAEEHElkRmllbGQBKAAMARxhY2NvdW50BAEkQWNjb3VudElkAAEMZmVl8AEcQmFsYW5jZQABGGZpZWxkcygBHElkRmllbGQAAIkKAAACgQoAjQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACRCgw8cGFsbGV0X2lkZW50aXR5FHR5cGVzTEF1dGhvcml0eVByb3BlcnRpZXMEHEFjY291bnQBBAAIAShhY2NvdW50X2lkBAEcQWNjb3VudAABKGFsbG9jYXRpb244AShBbGxvY2F0aW9uAACVCgw8cGFsbGV0X2lkZW50aXR5FHR5cGVzTFVzZXJuYW1lSW5mb3JtYXRpb24IHEFjY291bnQBBBxCYWxhbmNlAfAACAEUb3duZXIEARxBY2NvdW50AAEgcHJvdmlkZXKZCgFEUHJvdmlkZXI8QmFsYW5jZT4AAJkKDDxwYWxsZXRfaWRlbnRpdHkUdHlwZXMgUHJvdmlkZXIEHEJhbGFuY2UB8AEMKEFsbG9jYXRpb24AAABAQXV0aG9yaXR5RGVwb3NpdAQA8AEcQmFsYW5jZQABABhTeXN0ZW0AAgAAnQoAAAQMBDiZCgChCgw8cGFsbGV0X2lkZW50aXR5GHBhbGxldBRFcnJvcgQEVAABeEhUb29NYW55U3ViQWNjb3VudHMAAARcVG9vIG1hbnkgc3Vicy1hY2NvdW50cy4gTm90Rm91bmQAAQRQQWNjb3VudCBpc24ndCBmb3VuZC4gTm90TmFtZWQAAgRQQWNjb3VudCBpc24ndCBuYW1lZC4oRW1wdHlJbmRleAADBDBFbXB0eSBpbmRleC4oRmVlQ2hhbmdlZAAEBDxGZWUgaXMgY2hhbmdlZC4oTm9JZGVudGl0eQAFBEhObyBpZGVudGl0eSBmb3VuZC48U3RpY2t5SnVkZ2VtZW50AAYERFN0aWNreSBqdWRnZW1lbnQuOEp1ZGdlbWVudEdpdmVuAAcEQEp1ZGdlbWVudCBnaXZlbi5ASW52YWxpZEp1ZGdlbWVudAAIBEhJbnZhbGlkIGp1ZGdlbWVudC4wSW52YWxpZEluZGV4AAkEVFRoZSBpbmRleCBpcyBpbnZhbGlkLjRJbnZhbGlkVGFyZ2V0AAoEWFRoZSB0YXJnZXQgaXMgaW52YWxpZC5EVG9vTWFueVJlZ2lzdHJhcnMACwToTWF4aW11bSBhbW91bnQgb2YgcmVnaXN0cmFycyByZWFjaGVkLiBDYW5ub3QgYWRkIGFueSBtb3JlLjhBbHJlYWR5Q2xhaW1lZAAMBHBBY2NvdW50IElEIGlzIGFscmVhZHkgbmFtZWQuGE5vdFN1YgANBHBTZW5kZXIgaXMgbm90IGEgc3ViLWFjY291bnQuIE5vdE93bmVkAA4EiFN1Yi1hY2NvdW50IGlzbid0IG93bmVkIGJ5IHNlbmRlci50SnVkZ2VtZW50Rm9yRGlmZmVyZW50SWRlbnRpdHkADwTQVGhlIHByb3ZpZGVkIGp1ZGdlbWVudCB3YXMgZm9yIGEgZGlmZmVyZW50IGlkZW50aXR5LlhKdWRnZW1lbnRQYXltZW50RmFpbGVkABAE+EVycm9yIHRoYXQgb2NjdXJzIHdoZW4gdGhlcmUgaXMgYW4gaXNzdWUgcGF5aW5nIGZvciBqdWRnZW1lbnQuNEludmFsaWRTdWZmaXgAEQSAVGhlIHByb3ZpZGVkIHN1ZmZpeCBpcyB0b28gbG9uZy5QTm90VXNlcm5hbWVBdXRob3JpdHkAEgTgVGhlIHNlbmRlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gaXNzdWUgYSB1c2VybmFtZS4wTm9BbGxvY2F0aW9uABMExFRoZSBhdXRob3JpdHkgY2Fubm90IGFsbG9jYXRlIGFueSBtb3JlIHVzZXJuYW1lcy5ASW52YWxpZFNpZ25hdHVyZQAUBKhUaGUgc2lnbmF0dXJlIG9uIGEgdXNlcm5hbWUgd2FzIG5vdCB2YWxpZC5EUmVxdWlyZXNTaWduYXR1cmUAFQQJAVNldHRpbmcgdGhpcyB1c2VybmFtZSByZXF1aXJlcyBhIHNpZ25hdHVyZSwgYnV0IG5vbmUgd2FzIHByb3ZpZGVkLjxJbnZhbGlkVXNlcm5hbWUAFgSwVGhlIHVzZXJuYW1lIGRvZXMgbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgAXBHhUaGUgdXNlcm5hbWUgaXMgYWxyZWFkeSB0YWtlbi4oTm9Vc2VybmFtZQAYBJhUaGUgcmVxdWVzdGVkIHVzZXJuYW1lIGRvZXMgbm90IGV4aXN0LihOb3RFeHBpcmVkABkELQFUaGUgdXNlcm5hbWUgY2Fubm90IGJlIGZvcmNlZnVsbHkgcmVtb3ZlZCBiZWNhdXNlIGl0IGNhbiBzdGlsbCBiZSBhY2NlcHRlZC4gVG9vRWFybHkAGgQZAVRoZSB1c2VybmFtZSBjYW5ub3QgYmUgcmVtb3ZlZCBiZWNhdXNlIGl0J3Mgc3RpbGwgaW4gdGhlIGdyYWNlIHBlcmlvZC4wTm90VW5iaW5kaW5nABsE7FRoZSB1c2VybmFtZSBjYW5ub3QgYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IGlzIG5vdCB1bmJpbmRpbmcuQEFscmVhZHlVbmJpbmRpbmcAHAT8VGhlIHVzZXJuYW1lIGNhbm5vdCBiZSB1bmJvdW5kIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSB1bmJpbmRpbmcuWEluc3VmZmljaWVudFByaXZpbGVnZXMAHQhFAVRoZSBhY3Rpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBiZWNhdXNlIG9mIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIChlLmcuIGF1dGhvcml0edB0cnlpbmcgdG8gdW5iaW5kIGEgdXNlcm5hbWUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqUKDExpbmRpdl9wYWxsZXRfcGVvcGxlFHR5cGVzMFBlcnNvblJlY29yZAgYTWVtYmVyAQgkQWNjb3VudElkAQQACAEMa2V5CAEYTWVtYmVyAAEcYWNjb3VudKUHAURPcHRpb248QWNjb3VudElkPgAAqQoMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEVycm9yBARUAAGUJE5vdFBlcnNvbgAABNBUaGUgc3VwcGxpZWQgaWRlbnRpZmllciBkb2VzIG5vdCByZXByZXNlbnQgYSBwZXJzb24uFE5vS2V5AAEEnFRoZSBnaXZlbiBwZXJzb24gaGFzIG5vIGFzc29jaWF0ZWQga2V5LjhJbnZhbGlkQ29udGV4dAACBCkBVGhlIGNvbnRleHQgaXMgbm90IGEgbWVtYmVyIG9mIHRob3NlIGFsbG93ZWQgdG8gaGF2ZSBhY2NvdW50IGFsaWFzZXMgaGVsZC44SW52YWxpZEFjY291bnQAAwRkVGhlIGFjY291bnQgaXMgbm90IGtub3duLjBBY2NvdW50SW5Vc2UABATIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2UgdW5kZXIgYW5vdGhlciBhbGlhcy4wSW52YWxpZFByb29mAAUEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLkBJbnZhbGlkU2lnbmF0dXJlAAYEZFRoZSBzaWduYXR1cmUgaXMgaW52YWxpZC4kTm9NZW1iZXJzAAcE0FRoZXJlIGFyZSBub3QgeWV0IGFueSBtZW1iZXJzIG9mIG91ciBwZXJzb25ob29kIHNldC4oSW5jb21wbGV0ZQAIBAUBVGhlIHJvb3QgY2Fubm90IGJlIGZpbmFsaXplZCBhcyB0aGVyZSBhcmUgc3RpbGwgdW5wdXNoZWQgbWVtYmVycy4oU3RpbGxGcmVzaAAJBGBUaGUgcm9vdCBpcyBzdGlsbCBmcmVzaC44VG9vTWFueU1lbWJlcnMACgSIVG9vIG1hbnkgbWVtYmVycyBoYXZlIGJlZW4gcHVzaGVkLjxLZXlBbHJlYWR5SW5Vc2UACwSUS2V5IGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgcGVyc29uLixLZXlOb3RGb3VuZAAMBKBUaGUgb2xkIGtleSB3YXMgbm90IGZvdW5kIHdoZW4gZXhwZWN0ZWQuMENvdWxkTm90UHVzaAANBJBDb3VsZCBub3QgcHVzaCBtZW1iZXIgaW50byB0aGUgcmluZy4cU2FtZUtleQAOBJRUaGUgcmVjb3JkIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBrZXkuVFBlcnNvbmFsSWROb3RSZXNlcnZlZAAPBHRQZXJzb25hbCBJZCB3YXMgbm90IHJlc2VydmVkLoBQZXJzb25hbElkUmVzZXJ2YXRpb25DYW5ub3RSZW5ldwAQBJBQZXJzb25hbCBJZCBoYXMgbmV2ZXIgYmVlbiByZXNlcnZlZC6QUGVyc29uYWxJZE5vdFJlc2VydmVkT3JOb3RSZWNvZ25pemVkABEE3FBlcnNvbmFsIElkIHdhcyBub3QgcmVzZXJ2ZWQgb3Igbm90IGFscmVhZHkgcmVjb2duaXplZC4sSW52YWxpZFJpbmcAEgSsUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3MgdGhlIHRvcCByaW5nLkhTdXNwZW5zaW9uc1BlbmRpbmcAEwTkUmluZyBjYW5ub3QgYmUgYnVpbHQgd2hpbGUgdGhlcmUgYXJlIHN1c3BlbnNpb25zIHBlbmRpbmcuXFJpbmdBYm92ZU1lcmdlVGhyZXNob2xkABQE1FJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIG5vdCBiZWxvdyAxLzIgY2FwYWNpdHkuSEludmFsaWRTdXNwZW5zaW9ucwAVBKBTdXNwZW5zaW9uIGluZGljZXMgcHJvdmlkZWQgYXJlIGludmFsaWQuRE5vTXV0YXRpb25TZXNzaW9uABYENQFBbiBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyBtdXRhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzLnBDb3VsZE5vdFN0YXJ0TXV0YXRpb25TZXNzaW9uABcEpEFuIG11dGF0aW5nIHNlc3Npb24gY291bGQgbm90IGJlIHN0YXJ0ZWQubFN1c3BlbnNpb25TZXNzaW9uSW5Qcm9ncmVzcwAYBPRDYW5ub3QgbWVyZ2UgcmluZ3Mgd2hpbGUgYSBzdXNwZW5zaW9uIHNlc3Npb24gaXMgaW4gcHJvZ3Jlc3MuNEFsaWFzTm90U3RhbGUAGQR8VGhlIGFsaWFzIG1hcHBpbmcgaXMgbm90IHN0YWxlLjhUaW1lT3V0T2ZSYW5nZQAaBHhDYWxsIGlzIHRvbyBsYXRlIG9yIHRvbyBlYXJseS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAbBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS4wTm90U3VzcGVuZGVkABwE0FBlcnNvbmhvb2QgY2Fubm90IGJlIHJlc3VtZWQgaWYgaXQgaXMgbm90IHN1c3BlbmRlZC4kU3VzcGVuZGVkAB0EYFBlcnNvbmhvb2QgaXMgc3VzcGVuZGVkLkxJbnZhbGlkS2V5TWlncmF0aW9uAB4EqEludmFsaWQgc3RhdGUgZm9yIGF0dGVtcHRlZCBrZXkgbWlncmF0aW9uLkxLZXlBbHJlYWR5U3VzcGVuZGVkAB8IVQFJbnZhbGlkIHN1c3BlbnNpb24gb2YgYSBrZXkgYmVsb25naW5nIHRvIGEgcGVyc29uIHdob3NlIGluZGV4IGluIHRoZSByaW5nIGhhcyBhbHJlYWR5uGJlZW4gaW5jbHVkZWQgaW4gdGhlIHBlbmRpbmcgc3VzcGVuc2lvbnMgbGlzdC5USW52YWxpZE9uYm9hcmRpbmdTaXplACAE6FRoZSBvbmJvYXJkaW5nIHNpemUgbXVzdCBub3QgZXhjZWVkIHRoZSBtYXhpbXVtIHJpbmcgc2l6ZS5ASW52YWxpZE1lbWJlcktleQAhBKxUaGUgbWVtYmVyIGtleSBpcyBub3QgdmFsaWQgZm9yIHRoZSBjcnlwdG8udFBlb3BsZUNvbGxlY3Rpb25BbHJlYWR5RXhpc3RzACIEvFRoZSBwZW9wbGUgY29sbGVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuNEFsaWFzTWlzbWF0Y2gAIwQZAVRoZSBwcm92aWRlZCBhbGlhcyBkb2VzIG5vdCBtYXRjaCB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYWxpYXMgbWFwcGluZy44Tm9TdGFsZUFsaWFzZXMAJASgTm9uZSBvZiB0aGUgc3VwcGxpZWQgYWxpYXNlcyB3ZXJlIHN0YWxlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRNb2JDcmVkaXQEHEJhbGFuY2UB8AAQARR2b3RlZDgBDHUzMgABHGNsZWFuZWQ4AQx1MzIAARxjb3JyZWN0OAEMdTMyAAEYY3JlZGl08AEcQmFsYW5jZQAAsQoAAAQIOAgAtQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgT3BlbkNhc2UELFJ1bnRpbWVDYWxsASAADAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcZGV0YWlsc7kKAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARR0YWxsec0KASRWb3RlVGFsbHkAALkKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0LENhc2VEZXRhaWxzBCxSdW50aW1lQ2FsbAEgAAwBJHN0YXRlbWVudL0KASRTdGF0ZW1lbnQAARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABIGNhbGxiYWNryQoB/ENhbGxiYWNrPChDYXNlSW5kZXgsIEp1ZGdlbWVudENvbnRleHQsIEp1ZGdlbWVudCksIFJ1bnRpbWVDYWxsPgAAvQoQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkU3RhdGVtZW50AAEMKFByb29mT2ZJbmsMARhkZXNpZ27BCgFUcHJvb2Zfb2ZfaW5rOjpJbmtTcGVjAAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAAUxwcm9iYWJsZV9hY2NlcHRhYmxl9AEQYm9vbAAAAEhJZGVudGl0eUNyZWRlbnRpYWwIASBwbGF0Zm9ybcUKAUBpZGVudGl0eTo6U29jaWFsAAEgZXZpZGVuY2VtBAE4aWRlbnRpdHk6OkRhdGEAAQA0VXNlcm5hbWVWYWxpZAQBIHVzZXJuYW1lbQQBOGlkZW50aXR5OjpEYXRhAAIAAMEKFDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MHByb29mX29mX2luaxxJbmtTcGVjAAEQQERlc2lnbmVkRWxlY3RpdmUIAFUDASxGYW1pbHlJbmRleAAAVQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50CABVAwEsRmFtaWx5SW5kZXgAAAgBJEFjY291bnRJZAABAEhQcm9jZWR1cmFsUGVyc29uYWwIAFUDASxGYW1pbHlJbmRleAAAKAEoUGVyc29uYWxJZAACAChQcm9jZWR1cmFsCABVAwEsRmFtaWx5SW5kZXgAAHABOFByb2NlZHVyYWxTZWVkAAMAAMUKFDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IGlkZW50aXR5GFNvY2lhbAABDBxUd2l0dGVyBAEgdXNlcm5hbWVtBAEQRGF0YQAAABhHaXRodWIEASB1c2VybmFtZW0EARBEYXRhAAEAHERpc2NvcmQEATxkaXNwbGF5X2FuZF90YWdtBAEQRGF0YQACAADJChA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBDYWxsYmFjawgYUGFyYW1zACxSdW50aW1lQ2FsbAAACAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAAM0KDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0JFZvdGVUYWxseQAADAEMYXllOAEMdTMyAAEMbmF5OAEMdTMyAAEgY29udGVtcHQ4AQx1MzIAANEKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0IFJpcGVDYXNlBCxSdW50aW1lQ2FsbAEgAAgBHGRldGFpbHO5CgFgQ2FzZURldGFpbHM8UnVudGltZUNhbGw+AAEcdmVyZGljdIUEASRKdWRnZW1lbnQAANUKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0IERvbmVDYXNlAAAIARRzaW5jZSgBQFNlY3NTaW5jZUdlbmVzaXMAARx2ZXJkaWN0hQQBJEp1ZGdlbWVudAAA2QoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXRIQ3JlZGl0RGlzdHJpYnV0aW9uCBxCYWxhbmNlAfAsQmxvY2tOdW1iZXIBOAAUARRyb3VuZDgBKFJvdW5kSW5kZXgAATxpbml0aWFsX2JhbGFuY2XwARxCYWxhbmNlAAFEcmVtYWluaW5nX2JhbGFuY2XwARxCYWxhbmNlAAEwdG90YWxfcG9pbnRzKAEkVm90ZUNvdW50AAEUc3RhcnQ4ASxCbG9ja051bWJlcgAA3QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHhCgRTAAAEAOUKARhWZWM8VD4AAOEKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0OFBheW91dFNjaGVkdWxlCBxCYWxhbmNlAfAsQmxvY2tOdW1iZXIBOAAMASRyZW1haW5pbmc4AShSb3VuZEluZGV4AAFAYW1vdW50X3Blcl9yb3VuZPABHEJhbGFuY2UAARhwZXJpb2Q4ASxCbG9ja051bWJlcgAA5QoAAALhCgDpCgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAO0KDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEVycm9yBARUAAFQKE5vU3VjaENhc2UAAARgVGhlIGNhc2UgZG9lcyBub3QgZXhpc3QuKE5vU3VjaFZvdGUAAQRgVGhlIHZvdGUgZG9lcyBub3QgZXhpc3QuHE5vdE9wZW4AAgRUVGhlIGNhc2UgaXMgbm90IG9wZW4uHE5vdFJpcGUAAwRUVGhlIGNhc2UgaXMgbm90IHJpcGUuHE5vdERvbmUABARkVGhlIGNhc2UgaXMgbm90IHlldCBkb25lLihDb2RlY0Vycm9yAAUEVQFUaGUgZGVjb2RlIG9mIHRoZSBjYWxsIGZhaWxlZC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/NERpc3BhdGNoRXJyb3IABgRNAVRoZSBjYWxsIGZhaWxlZCB0byBkaXNwYXRjaC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/GFJlY2VudAAHBJBUaGUgY2FzZSBpcyB0b28gcmVjZW50IHRvIGJlIHJlYXBlZC4gTm9DcmVkaXQACASgTm90IGVub3VnaCBjcmVkaXQgdG8gcGF5b3V0IHRoZSByZXdhcmRzLiBOb1Jld2FyZAAJBNRObyBtb2IgY3JlZGl0IGRpc3RyaWJ1dGlvbiBpbiBwbGFjZSB0byByZXdhcmQgdm90ZXJzLiBOb1BvaW50cwAKBKBObyBwb2ludHMgdG8gYmUgY29udmVydGVkIHRvIG1vYiBjcmVkaXQuNFRvb01hbnlDbGFpbXMACwRUVG9vIG1hbnkgdm90ZSBjbGFpbXMuIE5vUGF5b3V0AAwEWE5vIHBheW91dCBpbiBwcm9ncmVzcy5IQXJpdGhtZXRpY092ZXJmbG93AA0EtFRoZSBwb2ludCBhbmQvb3IgY3JlZGl0IGFyaXRobWV0aWMgb3ZlcmZsb3dzLkBUb29NYW55U2NoZWR1bGVzAA4EgFRvbyBtYW55IHBheW91dCByb3VuZCBzY2hlZHVsZXMuKE5vU2NoZWR1bGUADwR8Tm8gcGF5b3V0IHJvdW5kIHNjaGVkdWxlIGZvdW5kLiROb1BlbmFsdHkAEARYTm8gdm90ZSBwZW5hbHR5IGZvdW5kLhRFYXJseQARBJRUaGUgdm90ZSBwZW5hbHR5IGhhcyBub3QgZXhwaXJlZCB5ZXQuMFVuZGVyUGVuYWx0eQASBOhUaGUgdm90ZSBjYW5ub3QgYmUgY2FzdCBkdWUgdG8gYSB2b3RpbmcgcGVuYWx0eSBpbiBlZmZlY3QuWENhc2VFeHBpcmF0aW9uRGlzYWJsZWQAEwQdAVRoZSBvcGVuIGNhc2UgZXhwaXJhdGlvbiBpcyBkaXNhYmxlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGFjdGl2ZSB2b3RlcnMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvEKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRDYW5kaWRhdGUQLEp1ZGdlbWVudElkATgcRGVwb3NpdAH1CixCbG9ja051bWJlcgE4JEFjY291bnRJZAEEAQwcQXBwbGllZAwBEGNyZWT5CgGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABHGVudHJvcHkIARxFbnRyb3B5AAE0ZW50cm9weV9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAIFNlbGVjdGVkIAEUc2luY2U4ASxCbG9ja051bWJlcgABEGNyZWT5CgGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABHGVudHJvcHkIARxFbnRyb3B5AAEYZGVzaWduwQoBHElua1NwZWMAAShhbGxvY2F0aW9u/QoBKEFsbG9jYXRpb24AARxqdWRnaW5n1AFMT3B0aW9uPEp1ZGdlbWVudElkPgABGGZhaWxlZDgBHENvdW50ZXIAAQAYUHJvdmVuEAEYZGVzaWduwQoBHElua1NwZWMAASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAATB3YXNfcmVmZXJyZWT0ARBib29sAAEsd2FzX2ludml0ZWT0ARBib29sAAIAAPUKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAPABKEY6OkJhbGFuY2UAAPkKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCxDcmVkaWJpbGl0eQwcRGVwb3NpdAH1CihQZXJzb25hbElkASgkQWNjb3VudElkAQQBDCBSZWZlcnJlZAQAKAEoUGVyc29uYWxJZAAAABxEZXBvc2l0BAD1CgEcRGVwb3NpdAABABxJbnZpdGVkBAAEASRBY2NvdW50SWQAAgAA/QoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEFsbG9jYXRpb24AAQwcSW5pdGlhbAAAACBJbml0RG9uZQABABBGdWxsAAIAAAELDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhQZXJzb24EPEJvdW5kZWRBY2NvdW50cwEFCwAkARhkZXNpZ24JCwE8T3B0aW9uPElua1NwZWM+AAFAYWN0aXZlX3JlZmVycmFscwULATxCb3VuZGVkQWNjb3VudHMAAWBhbGxvd2VkX3JlZmVycmFsX3RpY2tldHM4ARxDb3VudGVyAAE0YmFkX3JlZmVycmFsczgBHENvdW50ZXIAAVBzdWNjZXNzZnVsX3JlZmVycmFsczgBHENvdW50ZXIAASRyZWZlcnJhbHM4ARxDb3VudGVyAAEsZGVyaXZhdGl2ZXM4ARxDb3VudGVyAAEYYmFubmVk9AEQYm9vbAABYHBlbmRpbmdfcmVmZXJyYWxfcmV3YXJkczgBHENvdW50ZXIAAAULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAPgBGFZlYzxUPgAACQsEGE9wdGlvbgQEVAHBCgEIEE5vbmUAAAAQU29tZQQAwQoAAAEAAA0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEQsEUwAABAAVCwEYVmVjPFQ+AAARCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQ4UmVmZXJyYWxUaWNrZXQEGFRpY2tldAEEAAQBGHRpY2tldAQBGFRpY2tldAAAFQsAAAIRCwAZCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQYRmFtaWx5AAAIARBraW5kmQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAAdCwAABAhVA1UDACELDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDBEZXNpZ25TdGF0dXMAAQggUmVzZXJ2ZWQAAAAkQ29tbWl0dGVkAAEAACULAAAECAQEACkLDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBRFcnJvcgQEVAABoChJblByb2dyZXNzAAAEzEFjY291bnQgaXMgYWxyZWFkeSBhcHBseWluZyB0byBtYWtlIGEgcHJvb2Ytb2YtaW5rLihOb1JlZmVycmFsAAEEeEFjY291bnQgaGFzIG5vdCBiZWVuIHJlZmVycmVkLihCYWRDb250ZXh0AAIE6FRoZSBjYWxsYmFjayBjb250ZXh0IGlzIGludmFsaWQ7IHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5MVW5leHBlY3RlZEp1ZGdlbWVudAADBCEBVGhlIGluY29taW5nIGp1ZGdlbWVudCBJRCBpcyBub3Qgd2hhdCB3ZSB3ZXJlIGV4cGVjdGluZyBmb3IgdGhlIGFjY291bnQuGE5vQXJncwAEBLhObyBhcmd1bWVudHMgd2VyZSBzdXBwbGllZCB3aXRoIHRoZSBqdWRnZW1lbnQuKE5vdEFwcGxpZWQABQTMVGhlIGFjY291bnQgaGFzIG5vdCBhcHBsaWVkIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuLE5vdFNlbGVjdGVkAAYEsFRoZSBjYW5kaWRhdGUgaGFzIG5vdCBjb21taXR0ZWQgdG8gYSBkZXNpZ24uJE5vdFByb3ZlbgAHBKxUaGUgY2FuZGlkYXRlIGRpZCBub3QgcHJvdmUgdGhlbXNlbHZlcyB5ZXQuOEFscmVhZHlTdGFydGVkAAgEyFRoZSBjYW5kaWRhdGUgaGFzIGFscmVhZHkgc3RhcnRlZCB0aGVpciBqdWRnZW1lbnQuKE91dE9mUmFuZ2UACQSAVGhlIHBlcnNvbmFsIElEIGlzIG5vdCBpbiByYW5nZS4wQWxyZWFkeVRha2VuAAoEnFRoZSBwZXJzb25hbCBJRCBoYXMgYWxyZWFkeSBiZWVuIHRha2VuLjxOb01vcmVSZWZlcnJhbHMACwS4VGhlIHBlcnNvbiBoYXMgbm8gbW9yZSByZWZlcnJhbHMgbGVmdCB0byBnaXZlLiBUb29FYXJseQAMBGBUaGUgcmVyb2xsIGlzIHRvbyBlYXJseS40RGVzaWduSW52YWxpZAANBKBUaGUgcmVmZXJyZXIncyBkZXNpZ24gaXMgbm90IHByb2NlZHVyYWwuLERlc2lnblRha2VuAA4EnFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBhbHJlYWR5IHRha2VuLiRCYWRQYXJlbnQADwQVAVRoZSByZWZlcnJlciBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHBlcnNvbi4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiRCYWRGYW1pbHkAEASAVGhlIGRlc2lnbiBmYW1pbHkgZG9lc24ndCBleGlzdC4sV3JvbmdGYW1pbHkAEQS0VGhlIGRlc2lnbiBmYW1pbHkgaXMgaW52YWxpZCBmb3IgdGhpcyBjaG9pY2UuLEluZGV4VG9vQmlnABIEQQFUaGUgaW5kZXggb2YgdGhlIGRlc2lnbiBvciB2YXJpYW50IGlzIGJleW9uZCB0aGUgYWxsb3dlZCBtYXhpbXVtIGZvciB0aGUgZmFtaWx5LhBCdXN5ABME+FRoZSBzeXN0ZW0gaXMgYnVzeSB3aXRoIHRvbyBtYW55IGNvbW1pdG1lbnRzOyB0cnkgYWdhaW4gbGF0ZXIuGEJhbm5lZAAUBKhUaGUgcGVyc29uIGhhcyBiZWVuIGJhbm5lZCBmcm9tIHJlZmVycmluZy4oSW1wcm9iYWJsZQAVBCUBVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGRlbW9uc3RyYXRlZCBwcm9iYWJseSB0aHJvdWdoIHRoZSBpbml0aWFsIGV2aWRlbmNlLihJZFJlc2VydmVkABYEwFRoZSBwZXJzb25hbCBpZGVudGl0eSBoYXMgYWxyZWFkeSBiZWVuIHJlc2VydmVkLhhJZFVzZWQAFwToVGhlIHBlcnNvbmFsIGlkZW50aXR5IGlzIGFscmVhZHkgdGFrZW4gYnkgYSBwcm92ZW4gcGVyc29uLjRJbnZhbGlkVGlja2V0ABgEfFRoZSB0aWNrZXQgcHJvdmlkZWQgaXMgaW52YWxpZC4gTm9UaWNrZXQAGQTwVGhlIGNhbGxlciBoYXMgbm90IHByb3ZpZGVkIGEgcmVmZXJyYWwgb3IgaW52aXRhdGlvbiB0aWNrZXQuNE5vdEF1dGhvcml6ZWQAGgSkVGhlIGFjY291bnQgaXMgbm90IGF1dGhvcml6ZWQgdG8gZG8gdGhpcy4kTm90UGVyc29uABsEkFRoZSBwZXJzb25hbCBpZGVudGl0eSBkb2Vzbid0IGV4aXN0LkRSZWZlcnJlZENhbmRpZGF0ZQAcBF0BVGhlIGNhbmRpZGF0ZSBpcyByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBub3QgYmUgcmVmZXJyZWQuUE5vdFJlZmVycmVkQ2FuZGlkYXRlAB0EXQFUaGUgY2FuZGlkYXRlIGlzIG5vdCByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBiZSByZWZlcnJlZC5ITm9SZXdhcmRUb1JlZ2lzdGVyAB4EoFRoZXJlIGlzIG5vIHJlZmVycmFsIHJld2FyZCB0byByZWdpc3Rlci5AUmV3YXJkVG9SZWdpc3RlcgAfBAUBVGhlcmUgaXMgYSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZCB0aGF0IG11c3QgYmUgcmVnaXN0ZXJlZCBmaXJzdC4kTm9JbnZpdGVyACAERE5vIGludml0ZXIgZm91bmQuQEludmFsaWRTaWduYXR1cmUAIQRISW52YWxpZCBzaWduYXR1cmUuJE5vSW52aXRlcwAiBFBObyBpbnZpdGUgYXZhaWxhYmxlLjhBbHJlYWR5SW52aXRlZAAjBFhJbnZpdGUgaXMgYWxyZWFkeSBzZXQuKE5vUmVmZXJyZXIAJAR0VGhlIHJlZmVycmVyIGlzIG5vdCBhIHBlcnNvbi4wTm90UG9pUGVyc29uACUE6FRoZSBpbmRpdmlkdWFsIGlzIG5vdCBhIHBlcnNvbiByZWNvZ25pemVkIGJ5IHByb29mIG9mIGluay5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAJgSIVGhlIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLmhJbnZhbGlkUmVpbWJ1cnNlbWVudFZhbHVlcwAnBJRUaGUgcmVpbWJ1cnNlbWVudCB2YWx1ZXMgYXJlIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Li0LAAAECGUHCAAxCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXM4QXJjaGl2ZWRQbGF5ZXIELEJsb2NrTnVtYmVyATgBCCBLaWNrYWJsZQgBKGZpcnN0X2dhbWU4AQx1MzIAAThhcmNoaXZlZF9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAKFVua2lja2FibGUEAShmaXJzdF9nYW1lOAEMdTMyAAEAADULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhQbGF5ZXIELFBsYXlEZXBvc2l0ATkLACQBKGZpcnN0X2dhbWU4AQx1MzIAAShyZWdpc3RlcmVk9AEQYm9vbAABLHNlbnRfcmVwb3J09AEQYm9vbAABaGVhcmx5X2F0dGVuZGFuY2VfZW5hY3RtZW50PQsBgE9wdGlvbjxFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQ+AAEoeWVzX3BlcnNvbgwBCHU4AAE0bm9fbm90X3BlcnNvbgwBCHU4AAFgZXhwZWN0ZWRfbWF4X3ZvdGVfd2VpZ2h0VQMBDHUxNgABLHZvdGVfd2VpZ2h0DAEIdTgAASxjcmVkaWJpbGl0eUkLAXhQbGF5ZXJDcmVkaWJpbGl0eTxQbGF5RGVwb3NpdD4AADkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAPABKEY6OkJhbGFuY2UAAD0LBBhPcHRpb24EBFQBQQsBCBBOb25lAAAAEFNvbWUEAEELAAABAABBCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNgRWFybHlBdHRlbmRhbmNlRW5hY3RtZW50AAAIAShhdHRlbmRhbmNl9AEQYm9vbAABLGRpc3Bvc2l0aW9uRQsBRFBsYXllckRpc3Bvc2l0aW9uAABFCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyRGlzcG9zaXRpb24AAQwQS2VlcAAAADxBcmNoaXZlS2lja2FibGUAAQBEQXJjaGl2ZVVua2lja2FibGUAAgAASQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllckNyZWRpYmlsaXR5BCxQbGF5RGVwb3NpdAE5CwEMHEludml0ZWQAAAAoUmVjb2duaXplZAABABxEZXBvc2l0BAA5CwEsUGxheURlcG9zaXQAAgAATQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzIEdhbWVJbmZvBCRBY2NvdW50SWQBBAAoARRpbmRleDgBDHUzMgABRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAFAc2h1ZmZsZV9kZWFkbGluZTgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAEUc3RhdGVRCwFQR2FtZVN0YXRlPEFjY291bnRJZD4AAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABGHJvdW5kcwwBCHU4AAFIcGVuZGluZ19hdHRlbmRhbmNlOAEMdTMyAAFEYWlyZHJvcF9zY2hlZHVsZWT0ARBib29sAABRCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMkR2FtZVN0YXRlBCRBY2NvdW50SWQBBAEUMFJlZ2lzdHJhdGlvbgQBRG5leHRfcGxheWVyX2luZGV4OAEMdTMyAAAAHFNodWZmbGUEARBzdGVwVQsBWFNodWZmbGVTdGVwPEFjY291bnRJZD4AAQAkUmVwb3J0aW5nBAEwcGxheWVyX2NvdW50OAEMdTMyAAIANFBsYXllclByb2Nlc3MEARBzdGVwXQsBcFBsYXllclByb2Nlc3NTdGVwPEFjY291bnRJZD4AAwAoQ2FuY2VsbGluZwQBOGxhc3RfaXRlcmF0aW9uWQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4ABAAAVQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLFNodWZmbGVTdGVwBCRBY2NvdW50SWQBBAEQLFN0ZXAxSW5zZXJ0BAE4bGFzdF9pdGVyYXRpb25ZCwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAAADRTdGVwMlJldHJpZXZlCAFEbmV4dF9wbGF5ZXJfaW5kZXg4AQx1MzIAAUxyZWNvZ25pemVkX2ZpbmlzaGVk9AEQYm9vbAABAExTdGVwM0NvbXB1dGVXZWlnaHRzCAE4bGFzdF9pdGVyYXRpb25ZCwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgABMHBsYXllcl9jb3VudDgBDHUzMgACAERTdGVwNEF3YWl0U2Vzc2lvbgQBMHBsYXllcl9jb3VudDgBDHUzMgADAABZCwQYT3B0aW9uBARUAWUHAQgQTm9uZQAAABBTb21lBABlBwAAAQAAXQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllclByb2Nlc3NTdGVwBCRBY2NvdW50SWQBBAEITFN0ZXAxUHJvY2Vzc1BsYXllcnMIAThsYXN0X2l0ZXJhdGlvblkLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAAARFN0ZXAyQ2xlYXJJbmRpY2VzAAEAAGELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAI0EARhWZWM8VD4AAGULAAAECAw4AGkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAI0EARhWZWM8VD4AAG0LAAAECAwIAHELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QQEUwAABADRBAEYVmVjPFQ+AAB1CwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEVycm9yBARUAAF8LEdhbWVPbmdvaW5nAAAENEdhbWUgb25nb2luZy44Tm9SZWdpc3RyYXRpb24AAQR4Tm8gcmVnaXN0cmF0aW9uIHBoYXNlIG9uZ29pbmcuRE91dGRhdGVkR2FtZVNldHVwAAIEWFRoZSBzZXR1cCBpcyBvdXRkYXRlZC5ASW52YWxpZEdhbWVTZXR1cAADBDhJbnZhbGlkIHNldHVwLjRJbnZhbGlkUmVwb3J0AAQEPEludmFsaWQgcmVwb3J0LhhOb0dhbWUABQRATm8gZ2FtZSBvbmdvaW5nLixOb1JlcG9ydGluZwAGBGBObyByZXBvcnQgcGhhc2Ugb25nb2luZy40Tm90UmVnaXN0ZXJlZAAHBDxOb3QgcmVnaXN0ZXJlZC5EQWxyZWFkeVJlZ2lzdGVyZWQACARoUGxheWVyIGFscmVhZHkgcmVnaXN0ZXJlZC5EUmVwb3J0QWxyZWFkeVNlbnQACQRQUmVwb3J0IGFscmVhZHkgc2VudC4URWFybHkACgRsT3BlcmF0aW9uIGlzIG5vdCB2YWxpZCB5ZXQuRE5vdEtpY2thYmxlUGxheWVyAAsEmFRoZSBvcGVyYXRpb24gZXhwZWN0IGEgcGxheWVyIGFjY291bnQuQE5vQXJjaGl2ZWRQbGF5ZXIADARkTm8gYXJjaGl2ZWQgcGxheWVyIGZvdW5kLiBOb1RpY2tldAANBEBObyB0aWNrZXQgZm91bmQuJE5vSW52aXRlcwAOBFBObyBpbnZpdGUgYXZhaWxhYmxlLjhBbHJlYWR5SW52aXRlZAAPBFhJbnZpdGUgaXMgYWxyZWFkeSBzZXQuQE5vdEFjY291bnRQbGF5ZXIAEAT4Tm90IGFuIGFjY291bnQgYmFzZWQgcGxheWVyLCBleHBlY3RlZCBhbiBhY2NvdW50IGJhc2VkIHBsYXllci5oVXNlSW52aXRlQnV0QWxyZWFkeVBsYXlpbmcAEQTIVGhlIHBsYXllciBjYW4ndCB1c2UgYW4gaW52aXRlIGlmIGFscmVhZHkgcGxheWluZy5QVG9vTWFueUdhbWVTY2hlZHVsZXMAEgRBAVRoZSBudW1iZXIgb2YgZXhpc3Rpbmcgc2NoZWR1bGVzIGFuZCBuZXcgc2NoZWR1bGVzIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgbGltaXQuTE5vU3VjaEdhbWVTY2hlZHVsZWQAEwQpAVRoZSBnYW1lIHRoYXQgd2FzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgd2FzIG5vdCBmb3VuZCBpbiBzY2hlZHVsZWQgZ2FtZXMugEludmFsaWRTdGF0ZW1lbnRBY2NvdW50U2lnbmF0dXJlABQErFRoZSBzdGF0ZW1lbnQgYWNjb3VudCBzaWduYXR1cmUgaXMgaW52YWxpZC5wU3RhdGVtZW50QWNjb3VudEFscmVhZHlJblVzZQAVBOxUaGUgc3RhdGVtZW50IGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2VkIGJ5IGFub3RoZXIgcGxheWVyLmRJbnRlcm5hbEVycm9ySW52YWxpZFN0YXRlABYEdEludGVybmFsIGVycm9yIGludmFsaWQgc3RhdGUuQEludmFsaWRHYW1lU3RhdGUAFwTwVGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHRoZSBjdXJyZW50IGdhbWUgc3RhdGUuIE5vUGxheWVyABgEQE5vIHBsYXllciBmb3VuZC6QQ2Fubm90T2ZmYm9hcmRXaGlsZVJlZ2lzdGVyZWRGb3JHYW1lABkE3FRoZSBwbGF5ZXIgY2Fubm90IG9mZmJvYXJkIHdoaWxlIHJlZ2lzdGVyZWQgZm9yIGEgZ2FtZS4wSW52YWxpZFN0YXRlABoENEludmFsaWQgc3RhdGVISW52YWxpZFBsYXlEZXBvc2l0ABsE5GBzZXRfcGxheV9kZXBvc2l0YDogdGhlIHN1cHBsaWVkIGFtb3VudCBtdXN0IGJlIG5vbi16ZXJvLohJbnZhbGlkQWlyZHJvcFZyZlZhcmlhbnRGb3JBY2NvdW50ABwAmEludmFsaWRBaXJkcm9wVnJmVmFyaWFudEZvclJlY29nbml0aW9uAB0AVE5vdEVsaWdpYmxlRm9yQWlyZHJvcAAeCFUBYGNsYWltX2FpcmRyb3BgOiB0aGUgY2xhaW1hbnQgaXMgbm90IHJlY29nbml6ZWQgaW4gcGFsbGV0LXNjb3JlLCBvciB0aGVpciBtb3N0IHJlY2VudPRhdHRlbmRlZCBnYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBgZ2FtZV9pbmRleGAgb2YgdGhlIGFpcmRyb3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UB8AAkARRzY29yZTgBDHUzMgABGHN0cmVha30LARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3RvcnmBCwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXTwARxCYWxhbmNlAAEoY2FzaGVkX291dPQBEGJvb2wAAUhyZWFjaGVkX3BlcnNvbmhvb2T0ARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29k9AEQYm9vbAABLHJlY29nbml0aW9uhQsBLFJlY29nbml0aW9uAAFIbGFzdF9hdHRlbmRlZF9nYW1l1AEsT3B0aW9uPHUzMj4AAH0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMYU3RyZWFrAAEIIEF0dGVuZGVkBAA4AQx1MzIAAAAYQWJzZW50BAA4AQx1MzIAAQAAgQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlc0RBdHRlbmRhbmNlSGlzdG9yeQAABAAMAQh1OAAAhQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxSZWNvZ25pdGlvbgABEFBFeHRlcm5hbGx5UmVjb2duaXplZAAAADROb3RSZWNvZ25pemVkAAEAJFN1c3BlbmRlZAQAKAEoUGVyc29uYWxJZAACAChSZWNvZ25pemVkBAAoAShQZXJzb25hbElkAAMAAIkLAAAECDhlBwCNCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzLFJvdW5kUGF5b3V0BBxCYWxhbmNlAfAAEAFEcmVtYWluaW5nX2JhbGFuY2XwARxCYWxhbmNlAAEscG9pbnRfcHJpY2XwARxCYWxhbmNlAAEkcmVtYWluZGVy8AEcQmFsYW5jZQABMHRvdGFsX3BvaW50czgBDHUzMgAAkQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyRSb3VuZEluZm8ILEJsb2NrTnVtYmVyATgcQmFsYW5jZQHwAAgBJGZpbmlzaF9hdDgBLEJsb2NrTnVtYmVyAAEYY3JlZGl08AEcQmFsYW5jZQAAlQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCwRTAAAEAJ0LARhWZWM8VD4AAJkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXM4UGF5b3V0U2NoZWR1bGUIHEJhbGFuY2UB8CxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBDHUzMgABQGFtb3VudF9wZXJfcm91bmTwARxCYWxhbmNlAAEgZHVyYXRpb244ASxCbG9ja051bWJlcgAAnQsAAAKZCwChCwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBRFcnJvcgQEVAABbCROb3RQZXJzb24AAASMVGhlIGNhbGxpbmcgb3JpZ2luIGlzIG5vdCBhIHBlcnNvbi5cSGFzTm90UmVhY2hlZFBlcnNvbmhvb2QAAQSMVGhlIHBlcnNvbiBkaWRuJ3QgcmVhY2ggcGVyc29uaG9vZC4gTm9SZXdhcmQAAgRQTm8gcmV3YXJkIGF2YWlsYWJsZS4cTm9TY29yZQADBIxUaGUgcGVyc29uIGhhcyBubyBhc3NvY2lhdGVkIHNjb3JlLihOb1NjaGVkdWxlAAQEdE5vIHBheW91dCBzY2hlZHVsZSBhdmFpbGFibGUuQFRvb01hbnlTY2hlZHVsZXMABQS0VG9vIG1hbnkgcGF5b3V0IHNjaGVkdWxlcyBhbHJlYWR5IHJlZ2lzdGVyZWQuKFJlY29nbml6ZWQABgQFAVRoZSBwYXJ0aWNpcGFudCBpcyByZWNvZ25pemVkIG9yIGhhcyBiZWVuIHJlY29nbml6ZWQgYXMgYSBwZXJzb24uPENhc2hPdXRDb29sZG93bgAHBMxUaGUgcGFydGljaXBhbnQgaGFzIGFscmVhZHkgY2FzaGVkIG91dCBpbiB0aGlzIGVyYS5gUm91bmRPbkdvaW5nT3JOb1NjaGVkdWxlAAgElFRoZSByb3VuZCBpcyBvbiBnb2luZyBvciBubyBzY2hlZHVsZS4cTm9Sb3VuZAAJBIRUaGUgcGF5b3V0IHJvdW5kIGhhcyBub3Qgc3RhcnRlZC5sQmFkT3JpZ2luTm90UGVyc29uTm90U2lnbmVkAAoE0FRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHBlcnNvbiBub3IgYSBzaWduZWQgYWNjb3VudC7AQmFkT3JpZ2luTm90UGVyc29uTm90U2lnbmVkTm90QWNjb3VudFBhcnRpY2lwYW50AAsEPQFUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQgbm9yIGFuIGFjY291bnQgcGFydGljaXBhbnQunEJhZE9yaWdpbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAAMBAkBVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgc2lnbmVkIGFjY291bnQgbm9yIGFuIGFjY291bnQgcGFydGljaXBhbnQuUEFscmVhZHlQYXJ0aWNpcGF0aW5nAA0EpFRoZSBwYXJ0aWNpcGFudCBpcyBhbHJlYWR5IHBhcnRpY2lwYXRpbmcuREtleU11c3RCZVByb3ZpZGVkAA4EZFRoZSBrZXkgbXVzdCBiZSBwcm92aWRlZC5QS2V5TXVzdE5vdEJlUHJvdmlkZWQADwR0VGhlIGtleSBtdXN0IG5vdCBiZSBwcm92aWRlZC5QSGFzUmVhY2hlZFBlcnNvbmhvb2QAEASMSGFzIHJlYWNoZWQgcGVyc29uaG9vZCBpbiB0aGUgcGFzdC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAEQSIVGhlIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjhXaW5kb3dUb29MYXJnZQASBD0BQW4gYWJzZW5jZSBncmFjZSB0aWVyIGhhcyBhIHdpbmRvdyBleGNlZWRpbmcgdGhlIG1heGltdW0gdHJhY2thYmxlIGhpc3RvcnkgKDgpLlRBbGxvd2VkTWlzc2VzVG9vTGFyZ2UAEwQhAVRoZSBhbGxvd2VkIG1pc3NlcyBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgd2luZG93IChvciBib3RoIHplcm8pLmBBYnNlbmNlU2NoZWR1bGVOb3RTb3J0ZWQAFAQxAUFic2VuY2UtZ3JhY2UgdGllcnMgbXVzdCBiZSBzb3J0ZWQgYnkgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC5cUGVyc29uaG9vZFNjaGVkdWxlRW1wdHkAFQQFAVRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRpZXIucFBlcnNvbmhvb2RTY29yZVRocmVzaG9sZFplcm8AFgTcQSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGhhcyBgc2NvcmVfdGhyZXNob2xkID09IDBgLoBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRUb29MYXJnZQAXBPxBIHBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXIgZXhjZWVkcyBgTUFYX1BFUlNPTkhPT0RfVEhSRVNIT0xEYC5sUGVyc29uaG9vZFNjaGVkdWxlTm90U29ydGVkABgI2FBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZ3BgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAueFBlcnNvbmhvb2RTY2hlZHVsZU5vdE1vbm90b25pYwAZCBEBUGVyc29uaG9vZC10aHJlc2hvbGQgYHNjb3JlX3RocmVzaG9sZGAgdmFsdWVzIG11c3QgYmUgbm9uLWRlY3JlYXNpbmf0YWNyb3NzIHRpZXJzIChhIGxhcmdlciBwb3B1bGF0aW9uIG11c3Qgbm90IGhhdmUgYSBsb3dlciBiYXIpLmhQZXJzb25ob29kU2NoZWR1bGVOb3RUb3RhbAAaCPRUaGUgbGFzdCBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIG11c3QgY292ZXIgYWxsIHBvcHVsYXRpb25zqChgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZCA9PSB1MzI6Ok1BWGApLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6lCwxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQYUmVjb3JkBAxLZXkBCAAIAQxrZXkIAQxLZXkAASRzdXNwZW5kZWT0ARBib29sAACpCwxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXJyb3IEBFQAARAkTm90UGVyc29uAAAE3FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSByZWNvZ25pemVkIHBlcnNvbi4wTm90U3VzcGVuZGVkAAEE2FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzdXNwZW5kZWQgcGVyc29uLixOb3RSZXNlcnZlZAACBORUaGUgcGVyc29uYWwgSUQgaXMgbm90IHJlc2VydmVkIGFuZCBhd2FpdGluZyByZWNvZ25pdGlvbi40VG9vTWFueVBlb3BsZQADBMBUaGUgb3BlcmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtYW55IHBlb3BsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQsMjGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uGHBhbGxldCxPblBvbGxTdGF0ZQABJCBJbmFjdGl2ZQAAADRDcmVhdGluZ0Fzc2V0AAEAQFhjbUZ1bmRzVHJhbnNmZXIAAgA4VmVyaWZ5aW5nRnVuZHMAAwAsRnVuZGluZ1BvdHMABACYU2V0dGluZ1Blb3BsZUxpdGVBdHRlc3RhdGlvbkFsbG93YW5jZXMABQBgU2NoZWR1bGluZ01vYlJ1bGVQYXlvdXRzAAYAWFNjaGVkdWxpbmdTY29yZVBheW91dHMABwAQRG9uZQAIAACxCwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzOExpdGVQZXJzb25JbmZvCBhNZW1iZXIBCBhNZXRob2QBtQsACAEwcmluZ192cmZfa2V5CAEYTWVtYmVyAAEYbWV0aG9ktQsBGE1ldGhvZAAAtQsMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlc0RSZWNvZ25pdGlvbk1ldGhvZAQcQWNjb3VudAEEAQQwVW5pcXVlRGV2aWNlBAAEARxBY2NvdW50AAAAALkLDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0FEVycm9yBARUAAEsWE5vQXR0ZXN0YXRpb25BbGxvd2FuY2UAAARkTm8gYXR0ZXN0YXRpb24gYWxsb3dhbmNlLmxJbnZhbGlkQXR0ZXN0YXRpb25TaWduYXR1cmUAAQTwVGhlIHNpZ25hdHVyZSBjcmVhdGVkIGJ5IHRoZSBjYW5kaWRhdGUncyBhY2NvdW50IGlzIGludmFsaWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAIEBQFUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIHJpbmcgdnJmIGtleSBpcyBpbnZhbGlkLkRBbHJlYWR5UmVnaXN0ZXJlZAADBJBUaGUgY2FuZGlkYXRlIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC48S2V5QWxyZWFkeUluVXNlAAQE8FRoZSByaW5nIFZSRiBrZXkgaXMgYWxyZWFkeSBlbnJvbGxlZCBieSBhbm90aGVyIGxpdGUgcGVyc29uLjBBY2NvdW50SW5Vc2UABQR4VGhlIGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2UuWEFsaWFzQWNjb3VudEFscmVhZHlTZXQABgTkVGhlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmcgaXMgYWxyZWFkeSBzZXQgYW5kIGN1cnJlbnQuSEFsaWFzQWNjb3VudE5vdFNldAAHBKRUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBub3Qgc2V0LkxDYWxsQmxvY2tPdXRPZlJhbmdlAAgEIQFUaGUgcmVxdWVzdGVkIGFsaWFzIHNldHVwIGJsb2NrIHdpbmRvdyBpcyBpbnZhbGlkIGZvciB0aGUgY3VycmVudCBibG9jay5MSW52YWxpZEFsaWFzQ29udGV4dAAJBHRUaGUgYWxpYXMgY29udGV4dCBpcyBpbnZhbGlkLnhMaXRlUGVvcGxlQ29sbGVjdGlvbk5vdENyZWF0ZWQACgT8VGhlIGxpdGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0LDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzMENvbnN1bWVySW5mbwAAEAE4aWRlbnRpZmllcl9rZXlpBAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAATRmdWxsX3VzZXJuYW1lMQUBQE9wdGlvbjxVc2VybmFtZT4AATRsaXRlX3VzZXJuYW1lbQQBIFVzZXJuYW1lAAEsY3JlZGliaWxpdHnBCwEsQ3JlZGliaWxpdHkAAMELDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzLENyZWRpYmlsaXR5AAEIEExpdGUAAAAYUGVyc29uDAEUYWxpYXMIARRBbGlhcwABLGxhc3RfdXBkYXRlKAEMdTY0AAEcZGVtb3RlZPQBEGJvb2wAAQAAxQsAAAQIyQsIAMkLDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcuzQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNcU3RtdFN0b3JlQWxsb3dhbmNlRW50cnkEBFQAAAwBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQxzZXE4AQx1MzIAARRzaW5jZSgBDHU2NAAA0QsAAAQIBNULANULAAAEDMkLOAgA2QsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNkRnJpZW5kUmVxdWVzdFJlZ2lzdHJhdGlvbgQcQWNjb3VudAEEAAgBKGFjY291bnRfaWQEARxBY2NvdW50AAEkcmVmZXJlbmNlPQUBWEZyaWVuZFJlcXVlc3RSZWZlcmVuY2UAAN0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB4QsEUwAABADlCwEYVmVjPFQ+AADhCwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1RSZXNlcnZhdGlvblF1ZXVlRW50cnkEHEFjY291bnQBBAAIARxhY2NvdW50BAEcQWNjb3VudAABJGpvaW5lZF9hdCgBDHU2NAAA5QsAAALhCwDpCwhIc3Bfc3RhdGVtZW50X3N0b3JlSFN0YXRlbWVudEFsbG93YW5jZQAACAEkbWF4X2NvdW50OAEMdTMyAAEgbWF4X3NpemU4AQx1MzIAAO0LDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBRFcnJvcgQEVAABYDxJbnZhbGlkVXNlcm5hbWUAAAScVXNlcm5hbWUgZG9lcyBub3QgZml0IHRoZSByZXF1aXJlbWVudHMuNFVzZXJuYW1lVGFrZW4AAQRoVXNlcm5hbWUgaXMgYWxyZWFkeSB0YWtlbi5EQWxyZWFkeVJlZ2lzdGVyZWQAAgR8Q29uc3VtZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAADBJxQcm92aWRlZCBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC40Tm90UmVnaXN0ZXJlZAAEBJxQZXJzb24gaXMgbm90IHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci40Tm90RnVsbFBlcnNvbgAFBHhDb25zdW1lciBpcyBub3QgYSBmdWxsIHBlcnNvbi40VG91Y2hOb3RSZWFkeQAGBMxBdHRlbXB0ZWQgdG8gdXBkYXRlIHBlcnNvbiBhdXRob3JpemF0aW9uIHRvbyBlYXJseS40Tm9SZXNlcnZhdGlvbgAHBGhSZXNlcnZhdGlvbiBpcyBub3QgYWN0aXZlLlBOb3RSZXNlcnZhdGlvbkhvbGRlcgAIBBUBVGhlIGxpbmtlZCBsaXRlIGlkZW50aXR5IGlzIG5vdCB0aGUgYWN0aXZlIGhvbGRlciBvZiB0aGUgcmVzZXJ2YXRpb24uYFVzZXJuYW1lUmVzZXJ2YXRpb25UYWtlbgAJBORUaGUgdXNlcm5hbWUgaW4gdGhlIHJlc2VydmF0aW9uIHJlcXVlc3QgaXMgYWxyZWFkeSB0YWtlbi5AUmVzZXJ2YXRpb25GcmVzaAAKBIBUaGUgcmVzZXJ2YXRpb24gaGFzIG5vdCBleHBpcmVkLkBOb0xpbmtlZElkZW50aXR5AAsEnFRoZXJlIGlzIG5vIGxpdGUgY29uc3VtZXIgdG8gYmUgbGlua2VkLjRBbHJlYWR5TGlua2VkAAwE+FRoZSBsaXRlIGNvbnN1bWVyIGlzIGFscmVhZHkgbGlua2VkIHRvIGEgZnVsbCBwZXJzb24gY29uc3VtZXIuUFBlcnNvbkF1dGhOb3RFeHBpcmVkAA0EvFRoZSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGhhcyBub3QgZXhwaXJlZCB5ZXQuOEFscmVhZHlEZW1vdGVkAA4EkFRoZSBwZXJzb24gaGFzIGFscmVhZHkgYmVlbiBkZW1vdGVkLiRRdWV1ZUZ1bGwADwSAUXVldWUgZm9yIHRoaXMgdXNlcm5hbWUgaXMgZnVsbC4oTm90SW5RdWV1ZQAQBLhBY2NvdW50IGlzIG5vdCBpbiB0aGUgcXVldWUgZm9yIHRoaXMgdXNlcm5hbWUuVEFscmVhZHlIYXNSZXNlcnZhdGlvbgARBNxBY2NvdW50IGFscmVhZHkgaGFzIGEgcmVzZXJ2YXRpb24gZm9yIGFub3RoZXIgdXNlcm5hbWUucEludmFsaWRGcmllbmRSZXF1ZXN0U2VxdWVuY2UAEgTQRnJpZW5kIHJlcXVlc3Qgc2VxdWVuY2UgaXMgaW52YWxpZCBmb3IgdGhlIGNvbnN1bWVyLmhJbnZhbGlkRnJpZW5kUmVxdWVzdFBlcmlvZAATBMBGcmllbmQgcmVxdWVzdCBwZXJpb2QgaXMgbm90IHRoZSBjdXJyZW50IHBlcmlvZC6MRnJpZW5kUmVxdWVzdFJlZ2lzdHJhdGlvbk5vdEV4cGlyZWQAFAS8RnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGlzIG5vdCBleHBpcmVkIHlldC6YRnJpZW5kUmVxdWVzdFJlZ2lzdHJhdGlvbkFscmVhZHlFeGlzdHMAFQQFAUZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGFsaWFzL2NvbnRleHQucFN0bXRTdG9yZVJlcGxhY2VtZW50VG9vRWFybHkAFgQZAVRoZSByZXBsYWNlbWVudCBjb29sZG93biBoYXMgbm90IGVsYXBzZWQgc2luY2UgdGhlIGVudHJ5IHdhcyBsYXN0IHNldC6MTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0RXhjZWVkZWQAFwTsVGhlIHByb3ZpZGVkIGBsaW1pdGAgZXhjZWVkcyBgTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0YC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu8QsAAAQIRQU4APULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB+QsEUwAABAABDAEYVmVjPFQ+AAD5CwxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldDhVbmNoZWNrZWRDaHVuawQEVAAABAD9CwEgVDo6Q2h1bmsAAP0LDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMAAEMAAAC+QsABQwMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4JDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgEFAQAQARRvd25lcg0MAYhDb2xsZWN0aW9uT3duZXI8QWNjb3VudCwgTG9jYXRpb24+AAEQbW9kZREMASBSaW5nTW9kZQABJHJpbmdfc2l6ZUUFATBSaW5nRXhwb25lbnQAAVBzZWxmX2luY2x1c2lvbl9kZWxheT0DASxPcHRpb248dTY0PgAADQwMUGluZGl2X3BhbGxldF9tZW1iZXJzFHR5cGVzPENvbGxlY3Rpb25Pd25lcggcQWNjb3VudAEEIExvY2F0aW9uAQUBAQggRXh0ZXJuYWwEAAUBASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAAARDBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAABUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAHUEARhWZWM8VD4AABkMAAAECAg4AB0MDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdCEMATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGUlDAFESW50ZXJtZWRpYXRlT2Y8VD4AACEMDCh2ZXJpZmlhYmxlEHJpbmdETWVtYmVyc0NvbW1pdG1lbnQAAwADAAAMACUMDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwAKQwAAAQMCDjJCwAtDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdCEMATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAAMQwAAAQMCDg4ADUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAHUEARhWZWM8VD4AADkMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2U9AwEsT3B0aW9uPHU2ND4AAD0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAI0EARhWZWM8VD4AAEEMAAAECAgIAEUMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAABJDBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2RlTQwBQFJpbmdNdXRhdGlvbk1vZGUAAE0MEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAAUQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAdQQBGFZlYzxUPgAAVQwMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABcCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAIBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkhUb29NYW55Q29sbGVjdGlvbnMAFASQVG9vIG1hbnkgY29sbGVjdGlvbnMgZm9yIHRoaXMgb3duZXIuaEludmFsaWRSaW5nU2l6ZUZvckZsZXhpYmxlABUEEQFGbGV4aWJsZSBjb2xsZWN0aW9ucyBtdXN0IHVzZSB0aGUgTWF4RmxleGlibGVSaW5nRXhwb25lbnQgcmluZyBzaXplLkxJbnZhbGlkUmluZ0V4cG9uZW50ABYEjFRoZSByaW5nIGV4cG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuTFByZW1hdHVyZU9uYm9hcmRpbmcAFwS0SW5zdWZmaWNpZW50IG1lbWJlcnMgaW4gdGhlIHF1ZXVlIHRvIG9uYm9hcmQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgAYBPRUaGUgY29sbGVjdGlvbiBpcyBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQuSE5vdENvbGxlY3Rpb25Pd25lcgAZBLhUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhlIGNvbGxlY3Rpb24uNE5vdE9uYm9hcmRpbmcAGgSoVGhlIG1lbWJlciBpcyBub3QgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUuOE5vdGhpbmdUb0J1aWxkABsEfFRoZXJlIGlzIG5vIHJpbmcgcm9vdCB0byBidWlsZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChMb2NrZWRDb2luAAAIARhyZWFzb25dDAEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AABdDAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAAYQwAAAQMnQM4CABlDAAABAidAzgAaQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABhFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFADxDb2luVmFsdWVUb29CaWcABgBEQ29pblZhbHVlVG9vU21hbGwABwBYQ29pblZhbHVlSXNMZXNzVGhhbkZlZQAIAExDb2luVmFsdWVPdXRPZkJvdW5kAAkAYExvc3N5Q29pblZhbHVlQ29udmVyc2lvbgAKCCEBVGhlIGNvaW4gdmFsdWUgY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNl9GBVbmRlcmx5aW5nQXNzZXRVbml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAREZyZXNoQ29pblJlcXVpcmVkABgEyFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgZnJlc2ggY29pbiAoYGFnZSA9PSAwYCkuaENhbm5vdENvbnZlcnROYXRpdmVUb0Fzc2V0ABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoEvFdoZW4gdXNpbmcgUHJlcGFpZCBmZWUgbW9kZSwgbWF4X2ZlZSBtdXN0IGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy54Q2Fubm90Q3JlYXRlUmVjeWNsZXJDb2xsZWN0aW9uAB0EKQFUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgY291bGQgbm90IGJlIGNyZWF0ZWQgb24tZGVtYW5kLjRBc3NldElkTm90U2V0AB4EtFRoZSB1bmRlcmx5aW5nIGFzc2V0IGlkIGhhcyBub3QgYmVlbiBzZXQgeWV0LkRBc3NldElkQWxyZWFkeVNldAAfBA0BVGhlIHVuZGVybHlpbmcgYXNzZXQgaWQgaGFzIGFscmVhZHkgYmVlbiBzZXQgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLjBVbmtub3duQXNzZXQAIAQlAVRoZSBwcm9wb3NlZCB1bmRlcmx5aW5nIGFzc2V0IGlkIGRvZXMgbm90IGV4aXN0IGluIFtgQ29uZmlnOjpGdW5naWJsZXNgXS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQubQwAAAQI1NQAcQwEGE9wdGlvbgQEVAE5DAEIEE5vbmUAAAAQU29tZQQAOQwAAAEAAHUMBBhPcHRpb24EBFQBmQMBCBBOb25lAAAAEFNvbWUEAJkDAAABAAB5DAQYT3B0aW9uBARUAZ0DAQgQTm9uZQAAABBTb21lBACdAwAAAQAAfQwMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzOFN1YnNjcmliZXJJbmZvBARUAAAMASxjb2xsZWN0aW9uc50FARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABSGxhc3RfaW5pdF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEwcGFsbGV0X2luZGV4DAEIdTgAAIEMDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlcyxQYWdpbmdTdGF0ZQQsQmxvY2tOdW1iZXIBOAAMASh3cml0ZV9wYWdlVQMBDHUxNgABJHNlbmRfcGFnZVUDAQx1MTYAAURsYXN0X3VwZGF0ZV9ibG9jazgBLEJsb2NrTnVtYmVyAACFDAAABAxVAwg4AIkMDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlc0BQZW5kaW5nSW5pdFN0YXRlBARUAAAYASxjb2xsZWN0aW9uc50FARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXjUAURPcHRpb248UmluZ0luZGV4PgABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABMHBhbGxldF9pbmRleAwBCHU4AACNDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNYQmF0Y2hEaXN0cmlidXRpb25TdGF0ZQQsQmxvY2tOdW1iZXIBOAAQASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAASRzZWFsZWRfYXQ4ASxCbG9ja051bWJlcgABVHJlbWFpbmluZ19zdWJzY3JpYmVyczgBDHUzMgAAkQwAAAQInAgAlQwMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFcnJvcgQEVAABNEhTdWJzY3JpYmVyTm90Rm91bmQAAARUU3Vic2NyaWJlciBub3QgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAEEaFN1YnNjcmliZXIgYWxyZWFkeSBleGlzdHMuSFRvb01hbnlTdWJzY3JpYmVycwACBHBNYXhpbXVtIHN1YnNjcmliZXJzIHJlYWNoZWQuWEludmFsaWRDb2xsZWN0aW9uc0xpc3QAAwQ9AUNvbGxlY3Rpb25zIGxpc3QgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyIHdpdGggbm8gZHVwbGljYXRlcy44VG9vTWFueVVwZGF0ZXMABATQVG9vIG1hbnkgcmluZyByb290IHVwZGF0ZXMgdG8gZml0IGluIGEgc2luZ2xlIGJhdGNoLjRYY21TZW5kRmFpbGVkAAUEQFhDTSBzZW5kIGZhaWxlZC5kTm90U3Vic2NyaWJlZFRvQ29sbGVjdGlvbgAGBORTdWJzY3JpYmVyIGlzIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbi5ASW52YWxpZFJpbmdJbmRleAAHBIBSaW5nIHJvb3QgaW5kZXggaXMgb3V0IG9mIHJhbmdlLlhFeGNlZWRzQ2hhbm5lbENhcGFjaXR5AAgEAQFSZXF1ZXN0ZWQgdXBkYXRlcyBleGNlZWQgdGhlIHN1YnNjcmliZXIncyBIUk1QIGNoYW5uZWwgY2FwYWNpdHkuNE5vQmF0Y2hBY3RpdmUACQRcTm8gYWN0aXZlIGJhdGNoIGV4aXN0cy40Tm9QZW5kaW5nSW5pdAAKBLhObyBwZW5kaW5nIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIHN1YnNjcmliZXIuUFJlcGxheUNvb2xkb3duQWN0aXZlAAsEDQFSZXBsYXkgY29vbGRvd24gaGFzIG5vdCBlbGFwc2VkIGZvciB0aGlzIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uQEVtcHR5UmluZ0luZGljZXMADATkUmVwbGF5IHJlcXVlc3RlZCB3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgcmluZyByb290IGluZGljZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpkMDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcyxBY3RpdmVFdmVudAgcQXNzZXRJZAEFATBBc3NldEJhbGFuY2UB8AAMAQhpZAgBHEV2ZW50SWQAARBpbmZvtQUBgEV2ZW50SW5mbzxBc3NldElkLCBBc3NldEJhbGFuY2U+AAEYc3RhdHVznQwBGFN0YXR1cwAAnQwMUGluZGl2X3BhbGxldF9haXJkcm9wFHR5cGVzGFN0YXR1cwABHCRTY2hlZHVsZWQAAAAsUmVnaXN0ZXJpbmcEAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAQAsRHJhd1dpbm5lcnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABNHdpbm5lcnNfYWRkZWQ4AQx1MzIAATxmcm9tX3dpbm5lcl9rZXmRBwE0QmlnRW5kaWFuVTI1NgACACBDbGFpbWluZwwBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEcY2xhaW1lZDgBDHUzMgADAFRDbGVhcmluZ1JlZ2lzdHJhdGlvbnMQAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIAAVRjbGVhbmVkX3JlZ2lzdHJhdGlvbnM4AQx1MzIABAA8Q2xlYXJpbmdXaW5uZXJzEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAE8Y2xlYW5lZF93aW5uZXJzOAEMdTMyAAUAKEZpbmFsaXppbmcIAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIABgAAoQwAAAQIpQwIAKUMDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblU2NAADCAAAAAwEGQFBIHU2NCBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcuqQwAAAQICJEHAK0MAAAECAiVBwCxDAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0FEVycm9yBARUAAFQUFByaXplQmVsb3dNaW5CYWxhbmNlAAAATE5vV2lubmVyc0NvbmZpZ3VyZWQAAQA4VG9vTWFueVdpbm5lcnMAAgBESW52YWxpZEV2ZW50VGltZXMAAwBARHVwbGljYXRlRXZlbnRJZAAEAEBOb1NjaGVkdWxlZEV2ZW50AAUAMFVua25vd25FdmVudAAGACxXcm9uZ1N0YXR1cwAHBOBPcGVyYXRpb24gcmVxdWlyZXMgYSBzcGVjaWZpYyBzdGF0dXMgdGhlIGV2ZW50IGlzbid0IGluLmROb3RBY2NlcHRpbmdSZWdpc3RyYXRpb25zAAgALE5vdENsYWltaW5nAAkAUENsYWltaW5nV2luZG93Q2xvc2VkAAoEtENsYWltIGF0dGVtcHRlZCBhZnRlciB0aGUgZXZlbnQncyBgZW5kX3RpbWVgLkBFbnRyb3B5U2xvdFRha2VuAAsAPEludmFsaWRWcmZQcm9vZgAMAFRVbnN1cHBvcnRlZEFjY291bnRLZXkADQQJAVN1cHBsaWVkIGFjY291bnQgaWQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbnkgc3IyNTUxOSBwdWJsaWMga2V5LlhJbnZhbGlkTWVtYmVyc2hpcFByb29mAA4AME5vU3VjaFdpbm5lcgAPAExQYXJ0aWNpcGFudE92ZXJmbG93ABAAXFByaXplQWxsb2NhdGlvbk92ZXJmbG93ABEAPEFzc2V0Tm90RW5hYmxlZAASBOBUaGUgcHJpemUgYXNzZXQgaGFzIG5vdCBiZWVuIGVuYWJsZWQgdmlhIGBlbmFibGVfYXNzZXRgLkxBc3NldEFscmVhZHlFbmFibGVkABME/GBlbmFibGVfYXNzZXRgIHdhcyBjYWxsZWQgZm9yIGFuIGFzc2V0IHRoYXQgaXMgYWxyZWFkeSBlbmFibGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC61DAxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyRQb2ludEluZm8AABABHHN1YmplY3QIASRTdWJqZWN0SWQAATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEkZGlyZWN0aW9uwQUBJERpcmVjdGlvbgABMGxhc3RfdXNlZF9hdCgBHFNlY29uZHMAALkMDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBRFcnJvcgQEVAABDChBcml0aG1ldGljAAAECQFBcml0aG1ldGljIGVycm9yIGxpa2Ugb3Zlci91bmRlcmZsb3csIGRpdmlzaW9uIGJ5IHplcm8gb3Igc2ltaWxhci5MU3ViamVjdEFscmVhZHlWb3RlZAABBPxUaGVyZSBpcyBhbHJlYWR5IGEgdm90ZSBieSB0aGUgc2FtZSB2b3RlciBmb3IgdGhlIHNhbWUgc3ViamVjdC4wSW52YWxpZFByb29mAAIEsFRoZSBwcm92aWRlZCByaW5nIHByb29mIGZhaWxlZCB2ZXJpZmljYXRpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0MDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuwQwISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AADFDBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAf0HAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3PJDAFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAMkMAAACzQwAzQwIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AANEMCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAANUMCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AANkMBBhPcHRpb24EBFQB1QwBCBBOb25lAAAAEFNvbWUEANUMAAABAADdDAQYUmVzdWx0CARUAUEHBEUB4QwBCAhPawQAQQcAAAAADEVycgQA4QwAAAEAAOEMDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBADlDAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAOkMAUhVbmtub3duVHJhbnNhY3Rpb24AAQAA5QwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAA6QwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAA7QwIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGHxDAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAA8QwEIEJUcmVlTWFwCARLAekBBFYBGAAEAPUMAAAA9QwAAAL5DAD5DAAABAjpARgA/QwIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2thefQBEGJvb2wAASxmYXRhbF9lcnJvcvQBEGJvb2wAARhlcnJvcnPtDAEwSW5oZXJlbnREYXRhAAABDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAAUNBBhSZXN1bHQIBFQBCQ0ERQHhDAEICE9rBAAJDQAAAAAMRXJyBADhDAAAAQAACQ0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGX0ARBib29sAAANDQwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AABENBBhPcHRpb24EBFQBFQ0BCBBOb25lAAAAEFNvbWUEABUNAAABAAAVDQAAAhkNABkNAAAECBhlCQAdDQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml47QEBIFt1ODsgMTZdAAEYc3VmZml47QEBIFt1ODsgMTZdAAAhDQQYUmVzdWx0CARUARgERQElDQEICE9rBAAYAAAAAAxFcnIEACUNAAABAAAlDQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBAAdDQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAAKQ0MaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UB8BhXZWlnaHQBAQIADAEYd2VpZ2h0AQIBGFdlaWdodAABFGNsYXNzoQYBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZfABHEJhbGFuY2UAAC0NDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAfAACAE0aW5jbHVzaW9uX2ZlZTENAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcPABHEJhbGFuY2UAADENBBhPcHRpb24EBFQBNQ0BCBBOb25lAAAAEFNvbWUEADUNAAABAAA1DQxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAfAADAEgYmFzZV9mZWXwARxCYWxhbmNlAAEcbGVuX2ZlZfABHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVl8AEcQmFsYW5jZQAAOQ0EGFJlc3VsdAgEVAE9DQRFAUENAQgIT2sEAD0NAAAAAAxFcnIEAEENAAABAAA9DQAAAjkDAEENDEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAARQ0EGFJlc3VsdAgEVAEBAgRFAUENAQgIT2sEAAECAAAAAAxFcnIEAEENAAABAABJDQQYUmVzdWx0CARUAfAERQFBDQEICE9rBADwAAAAAAxFcnIEAEENAAABAABNDQQYUmVzdWx0CARUAQUDBEUBQQ0BCAhPawQABQMAAAAADEVycgQAQQ0AAAEAAFENBBhSZXN1bHQIBFQBVQ0ERQF5DQEICE9rBABVDQAAAAAMRXJyBAB5DQAAAQAAVQ0MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBlQYAEAFAZXhlY3V0aW9uX3Jlc3VsdFkNAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzZQ0BKFZlYzxFdmVudD4AASRsb2NhbF94Y21pDQFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXNtDQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAFkNBBhSZXN1bHQIBFQBXQ0ERQFhDQEICE9rBABdDQAAAAAMRXJyBABhDQAAAQAAXQ0MNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodNECAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVlpQYBEFBheXMAAGENCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BXQ0ACAEkcG9zdF9pbmZvXQ0BEEluZm8AARRlcnJvcqkGATREaXNwYXRjaEVycm9yAABlDQAAApUGAGkNBBhPcHRpb24EBFQBwQEBCBBOb25lAAAAEFNvbWUEAMEBAAABAABtDQAAAnENAHENAAAECHUBdQ0AdQ0AAALBAQB5DQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAB9DQQYUmVzdWx0CARUAYENBEUBeQ0BCAhPawQAgQ0AAAAADEVycgQAeQ0AAAEAAIENDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQBlQYADAFAZXhlY3V0aW9uX3Jlc3VsdCUHARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHNlDQEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zbQ0BvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AACFDQQYUmVzdWx0CARUAQQERQGJDQEICE9rBAAEAAAAAAxFcnIEAIkNAAABAACJDQxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAI0NCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEANkBATh2Mzo6TXVsdGlBc3NldAADAAhWNAQAUQIBJHY0OjpBc3NldAAEAAhWNQQAnQIBJHY1OjpBc3NldAAFAACRDQQYUmVzdWx0CARUAfQERQGVDQEICE9rBAD0AAAAAAxFcnIEAJUNAAABAACVDQxAeGNtX3J1bnRpbWVfYXBpczR0cnVzdGVkX3F1ZXJ5FEVycm9yAAEIeFZlcnNpb25lZEFzc2V0Q29udmVyc2lvbkZhaWxlZAAAAIRWZXJzaW9uZWRMb2NhdGlvbkNvbnZlcnNpb25GYWlsZWQAAQAAmQ0EGFJlc3VsdAgEVAEJCgRFAZ0NAQgIT2sEAAkKAAAAAAxFcnIEAJ0NAAABAACdDQxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXMURXJyb3IAAQR8TG9jYXRpb25WZXJzaW9uQ29udmVyc2lvbkZhaWxlZAAAAAChDQQYUmVzdWx0CARUAfQERQGdDQEICE9rBAD0AAAAAAxFcnIEAJ0NAAABAAClDQhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzNAFIVmVjPFVwd2FyZE1lc3NhZ2U+AAFMaG9yaXpvbnRhbF9tZXNzYWdlc30IAWBWZWM8T3V0Ym91bmRIcm1wTWVzc2FnZT4AAUxuZXdfdmFsaWRhdGlvbl9jb2RlqQ0BjE9wdGlvbjxyZWxheV9jaGFpbjo6VmFsaWRhdGlvbkNvZGU+AAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAASRoZWFkX2RhdGFMASBIZWFkRGF0YQAAqQ0EGE9wdGlvbgQEVAGtDQEIEE5vbmUAAAAQU29tZQQArQ0AAAEAAK0NDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzOFZhbGlkYXRpb25Db2RlAAAEABgBHFZlYzx1OD4AALENBBhSZXN1bHQIBFQBEARFAcEHAQgIT2sEABAAAAAADEVycgQAwQcAAAEAALUNBBhPcHRpb24EBFQBwQcBCBBOb25lAAAAEFNvbWUEAMEHAAABAAC5DQAAAsEHAL0NCFBwZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAYAYU3lzdGVtBADxBwFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAI0IAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAkQgBhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgAEACBCYWxhbmNlcwQA2QgBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgAYQXNzZXRzBAARCQF0cGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZT4ADAAkQXNzZXRSYXRlBAAhCQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+AA0AMEFzc2V0c0hvbGRlcgQAJQkBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lPgAPAERPcmlnaW5SZXN0cmljdGlvbgQALQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+ABEARENvbGxhdG9yU2VsZWN0aW9uBABFCQGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAaQkBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAKUJAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQADQoBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQALQoBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BAAxCgF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBABBCgF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABRQcm94eQQAZQoBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AKgAgSWRlbnRpdHkEAKEKAXxwYWxsZXRfaWRlbnRpdHk6OkVycm9yPFJ1bnRpbWU+ADIAGFBlb3BsZQQAqQoBjGluZGl2X3BhbGxldF9wZW9wbGU6OkVycm9yPFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAO0KAZRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkVycm9yPFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEACkLAaRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpFcnJvcjxSdW50aW1lPgA1ABBHYW1lBAB1CwGEaW5kaXZfcGFsbGV0X2dhbWU6OkVycm9yPFJ1bnRpbWU+ADcAFFNjb3JlBAChCwGIaW5kaXZfcGFsbGV0X3Njb3JlOjpFcnJvcjxSdW50aW1lPgA4ACBEdW1teURpbQQAqQsBmGluZGl2X3BhbGxldF9kdW1teV9kaW06OkVycm9yPFJ1bnRpbWU+ADsAKFBlb3BsZUxpdGUEALkLAaBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6OkVycm9yPFJ1bnRpbWU+AD4AJFJlc291cmNlcwQA7QsBmGluZGl2X3BhbGxldF9yZXNvdXJjZXM6OkVycm9yPFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAAUMAaxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXI6OkVycm9yPFJ1bnRpbWU+AEAAHE1lbWJlcnMEAFUMAZBpbmRpdl9wYWxsZXRfbWVtYmVyczo6RXJyb3I8UnVudGltZT4AQwAcQ29pbmFnZQQAaQwBkGluZGl2X3BhbGxldF9jb2luYWdlOjpFcnJvcjxSdW50aW1lPgBEADxNZW1iZXJzTm90aWZpZXIEAJUMAbRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllcjo6RXJyb3I8UnVudGltZT4ARQAcQWlyZHJvcAQAsQwBkGluZGl2X3BhbGxldF9haXJkcm9wOjpFcnJvcjxSdW50aW1lPgBGABhIb25vdXIEALkMAYxpbmRpdl9wYWxsZXRfaG9ub3VyOjpFcnJvcjxSdW50aW1lPgBHABBTdWRvBAC9DAFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+AP8AALAYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBH0GQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEA9AQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAIkGGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAjQYEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjyxBwQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAALkHBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQD0BAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQD0BAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAqQcEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAMUHBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAAQIIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAGZBgAYMEJsb2NrV2VpZ2h0c8kHdQEHAPIFKgEABwCIUmp0AgCAAgJlzR0AAQfA0ix2UQIAwAEBBwDmvU9XAgDgAQEAAAJlzR0AAQfAdMGQbgIAYAIBBwCIUmp0AgCAAgEHAKKUGh0CAKAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3Ro1Qc0AAA8AAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h03QdAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbuEHMQUwcGVvcGxlLXBhc2VvMHBlb3BsZS1wYXNlbwEAAAAilB4AAAAAAGDdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADqk+Pxbz1pYgMAAACi3balhHe/YwEAAADQuse+SmsJIAEAAACSh/sOAhvIVAEAAACEO2+M7ICYxwEAAAD7xXe510fv1gEAAAABAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml4VQMIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAHxBwAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ/UHBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2Nr+QcIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YYEGCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAARCAQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAAVCAQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQAZCAQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AABBCAQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAPQEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBAEUIBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEAOQgEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAATQgEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAAYQgEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQBpCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEAbQgEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAAB5CAQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAAeQgEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEAfQgEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQBRAUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAAAQIEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAAABAgQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAIUIBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAHBBgAEKFNlbGZQYXJhSWScEOwDAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AAY0IAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEA9AQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAMQEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQF3BAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAbwAAcUGAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABkQgAABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwCVCASoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzAJkIEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAKEIBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4ABAAANFdlaWdodFJlY2xhaW0AAAAAAAAABQiBASBQYWxsZXQgdG8gdXNlIGFsb25nc2lkZSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgU3RvcmFnZVdlaWdodFJlY2xhaW1gXSwgdGhlIHBhbGxldCBwcm92aWRlc4wgd2VpZ2h0IGluZm9ybWF0aW9uIGFuZCBiZW5jaG1hcmtzLgAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQDwQAAAAAAAAAAAAAAAAAAAAAAEmCBUaGUgdG90YWwgdW5pdHMgaXNzdWVkIGluIHRoZSBzeXN0ZW0uAEBJbmFjdGl2ZUlzc3VhbmNlAQDwQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBIEGAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIEpQgEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIEtQgEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgTBCAQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBM0IBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAegAAckGABBIRXhpc3RlbnRpYWxEZXBvc2l08EAAypo7AAAAAAAAAAAAAAAAIEEBIFRoZSBtaW5pbXVtIGFtb3VudCByZXF1aXJlZCB0byBrZWVwIGFuIGFjY291bnQgb3Blbi4gTVVTVCBCRSBHUkVBVEVSIFRIQU4gWkVSTyEAWQEgSWYgeW91ICpyZWFsbHkqIG5lZWQgaXQgdG8gYmUgemVybywgeW91IGNhbiBlbmFibGUgdGhlIGZlYXR1cmUgYGluc2VjdXJlX3plcm9fZWRgIGZvcmEBIHRoaXMgcGFsbGV0LiBIb3dldmVyLCB5b3UgZG8gc28gYXQgeW91ciBvd24gcmlzazogdGhpcyB3aWxsIG9wZW4gdXAgYSBtYWpvciBEb1MgdmVjdG9yLlkBIEluIGNhc2UgeW91IGhhdmUgbXVsdGlwbGUgc291cmNlcyBvZiBwcm92aWRlciByZWZlcmVuY2VzLCB5b3UgbWF5IGFsc28gZ2V0IHVuZXhwZWN0ZWSMIGJlaGF2aW91ciBpZiB5b3Ugc2V0IHRoaXMgdG8gemVyby4A8CBCb3R0b20gbGluZTogRG8geW91cnNlbGYgYSBmYXZvdXIgYW5kIG1ha2UgaXQgYXQgbGVhc3Qgb25lIQAgTWF4TG9ja3M4EDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACxNYXhSZXNlcnZlczgQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAKE1heEZyZWV6ZXM4EAAAAAAEYQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluZGl2aWR1YWwgZnJlZXplIGxvY2tzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQgYXQgYW55IHRpbWUuAAHZCAAQRFJ1bnRpbWVIb2xkUmVhc29u0QYEdCBUaGUgb3ZlcmFyY2hpbmcgaG9sZCByZWFzb24uHEJhbGFuY2XwBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXLpAQxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAUQFAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQDdCAQAAAA8VHhQYXltZW50Q3JlZGl0AADhCAQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAfkGAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAgUB6QgEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgLxCPUIBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICAQkFCQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCBQEJCVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCBQFBAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAAFAQQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAEBAQAB/QYAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXTwQADkC1QCAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l08EAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZfBAgFaddwAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZfBAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l08EAAypo7AAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAREJABQcQmFsYW5jZfAEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkBQEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXIFARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhRQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZAUBFQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkBQEZCQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQFAR0JBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkBQFJAQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ADAAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAgUBUQEEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAAU0BAAEBBwAAASEJAAQkQXNzZXRLaW5kBQEERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4ADQAAOEFzc2V0VHhQYXltZW50AAABBQcAAAAAAA4AADBBc3NldHNIb2xkZXIBMEFzc2V0c0hvbGRlcggUSG9sZHMBAQgCAvEIwQgEAAQNASBBIG1hcCB0aGF0IHN0b3JlcyBob2xkcyBhcHBsaWVkIG9uIGFuIGFjY291bnQgZm9yIGEgZ2l2ZW4gQXNzZXRJZC4AOEJhbGFuY2VzT25Ib2xkAAEIAgLxCPAEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAQkHAAABJQkABERSdW50aW1lSG9sZFJlYXNvbtEGBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uAA8AAEhTa2lwRmVlbGVzc1BheW1lbnQAAAENBwAAAAAAEAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAlkBKQkEAASMIFRoZSBjdXJyZW50IHVzYWdlIGZvciBlYWNoIGVudGl0eS4AAVUBAAERBwAAAS0JAARAUmVzdHJpY3RlZEVudGl0eVkBJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9trCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0ZWRFbnRpdHlgXS4AHQEgVGhpcyBpcyB0aGUgY2Fub25pY2FsIG9yaWdpbiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHVzYWdlIHRyYWNraW5nLowgRWFjaCBlbnRpdHkgaXMgdHJhY2tlZCBzZXBhcmF0ZWx5LgBJASBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIG9yaWdpbiBhcyBhIG11bHRpcGxlIG9yaWdpbiBjYW4gcmVwcmVzZW50IGEgc2luZ2xlIGVudGl0eS5hASBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIERBTyBvcmlnaW4gd2l0aCBhIHBlcmNlbnRhZ2Ugb2Ygdm90ZXJzLCB3ZSB3YW50IHRvIHRyYWNrIHRoZSBEQU+sIGVudGl0eSByZWdhcmRsZXNzIG9mIHRoZSB2b3RlciBwZXJjZW50YWdlLgARAAAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAEBAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAAAAAFAAARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEAMQkEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuADRDYW5kaWRhdGVMaXN0AQA1CQQAFGkBIFRoZSAoY29tbXVuaXR5LCBsaW1pdGVkKSBjb2xsYXRpb24gY2FuZGlkYXRlcy4gYENhbmRpZGF0ZXNgIGFuZCBgSW52dWxuZXJhYmxlc2Agc2hvdWxkIGJlUCBtdXR1YWxseSBleGNsdXNpdmUuAHUBIFRoaXMgbGlzdCBpcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlcG9zaXQgYW5kIHdoZW4gdGhlIGRlcG9zaXRzIGFyZSBlcXVhbCwgdGhlIGxlYXN0oCByZWNlbnRseSB1cGRhdGVkIGlzIGNvbnNpZGVyZWQgZ3JlYXRlci4ARExhc3RBdXRob3JlZEJsb2NrAQEEBQQ4EAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLgBERGVzaXJlZENhbmRpZGF0ZXMBADgQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuADRDYW5kaWRhY3lCb25kAQDwQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABXQEAARUHABgUUG90SWRBCSBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQCAcAAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABRQkABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQD4BAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAPQEAAg5ASBUcnVlIGlmIHRoZSB1bmRlcmx5aW5nIGVjb25vbWljIGlkZW50aXRpZXMgb3Igd2VpZ2h0aW5nIGJlaGluZCB0aGUgdmFsaWRhdG9yc6QgaGFzIGNoYW5nZWQgaW4gdGhlIHF1ZXVlZCB2YWxpZGF0b3Igc2V0LgAoUXVldWVkS2V5cwEASQkEAAg9ASBUaGUgcXVldWVkIGtleXMgZm9yIHRoZSBuZXh0IHNlc3Npb24uIFdoZW4gdGhlIG5leHQgc2Vzc2lvbiBiZWdpbnMsIHRoZXNlIGtleXPgIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkYXRvcidzIHNlc3Npb24ga2V5cy4ASERpc2FibGVkVmFsaWRhdG9ycwEAUQkEABSAIEluZGljZXMgb2YgZGlzYWJsZWQgdmFsaWRhdG9ycy4APQEgVGhlIHZlYyBpcyBhbHdheXMga2VwdCBzb3J0ZWQgc28gdGhhdCB3ZSBjYW4gZmluZCB3aGV0aGVyIGEgZ2l2ZW4gdmFsaWRhdG9yIGlzPQEgZGlzYWJsZWQgdXNpbmcgYmluYXJ5IHNlYXJjaC4gSXQgZ2V0cyBjbGVhcmVkIHdoZW4gYG9uX3Nlc3Npb25fZW5kaW5nYCByZXR1cm5zZCBhIG5ldyBzZXQgb2YgaWRlbnRpdGllcy4AIE5leHRLZXlzAAEEBQRlAQQABJwgVGhlIG5leHQgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvci4AIEtleU93bmVyAAEEBWEJBAQABAkBIFRoZSBvd25lciBvZiBhIGtleS4gVGhlIGtleSBpcyB0aGUgYEtleVR5cGVJZGAgKyB0aGUgZW5jb2RlZCBrZXkuAERFeHRlcm5hbGx5U2V0S2V5cwABBAUEEAQAEDEBIEFjY291bnRzIHdob3NlIGtleXMgd2VyZSBzZXQgdmlhIGBTZXNzaW9uSW50ZXJmYWNlYCAoZXh0ZXJuYWwgcGF0aCkgd2l0aG91dDkBIGluY3JlbWVudGluZyB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIG9yIHBsYWNpbmcgYSBrZXkgZGVwb3NpdC4gYGRvX3B1cmdlX2tleXNgOQEgb25seSBkZWNyZW1lbnRzIGNvbnN1bWVycyBmb3IgYWNjb3VudHMgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgbG9jYWxAIHNlc3Npb24gcGFsbGV0LgABYQEAARkHAAQoS2V5RGVwb3NpdPBAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAWkJAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlzZQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQBtCQQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQB1CSAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWRpAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQBtCQQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAeQkEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAfQkEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQCFCQQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBZkJnQkEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApydCQQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAoQkwIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEA9AQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZxRAUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAFtAQABHQcADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAGlCQAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoqQkEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQK9CTgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQK9CSgEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCvQnBCQQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQDFCQQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAADRCQQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAtUJ2QkEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBOkJBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAPQEAAS0IEdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuADxTaG91bGRSZWNvcmRYY20BAPQEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAACJAgQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAnUB9QkEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABcQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAEhBwAQRFVuaXZlcnNhbExvY2F0aW9uCQEYAgkCALEPBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAQ0KBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABQQMAATEHAAAAAAAgAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAVJAxUKdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAABJAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBSEKJQoEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgABRQMAATUHABAgSGVhcFNpemU4EAAAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h00QIsAQcAFtC+KAIA4AAYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHTRAiwBBwDodkgXAgCAABRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABLQoABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACIAABxVdGlsaXR5AAFNAwABPQcABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AATEKAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpblkDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQI1CjkKBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAbkDAAFFBwAMLERlcG9zaXRCYXNl8EAA27t3AAAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvcvBAANQwAAAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuADhNYXhTaWduYXRvcmllczgQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4AAUEKAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AKQAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUERQpEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEVQpEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAcUDAAFJBwAYQFByb3h5RGVwb3NpdEJhc2XwQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcvBAoFoyAAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNl8EAA0n53AAAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3LwQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAWUKAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlzQMQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZc0D9AT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2vNAxxhZ2FpbnN0zQP0BPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJlYQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAIElkZW50aXR5ASBJZGVudGl0eSQoSWRlbnRpdHlPZgABBAUEaQoEABBpASBJbmZvcm1hdGlvbiB0aGF0IGlzIHBlcnRpbmVudCB0byBpZGVudGlmeSB0aGUgZW50aXR5IGJlaGluZCBhbiBhY2NvdW50LiBGaXJzdCBpdGVtIGlzIHRoZeAgcmVnaXN0cmF0aW9uLCBzZWNvbmQgaXMgdGhlIGFjY291bnQncyBwcmltYXJ5IHVzZXJuYW1lLgDAIFRXT1gtTk9URTogT0sg4oCVIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChVc2VybmFtZU9mAAEEBQRtBAQABLwgSWRlbnRpZmllcyB0aGUgcHJpbWFyeSB1c2VybmFtZSBvZiBhbiBhY2NvdW50LgAcU3VwZXJPZgABBAIEVQQEAAhhASBUaGUgc3VwZXItaWRlbnRpdHkgb2YgYW4gYWx0ZXJuYXRpdmUgInN1YiIgaWRlbnRpdHkgdG9nZXRoZXIgd2l0aCBpdHMgbmFtZSwgd2l0aGluIHRoYXRRASBjb250ZXh0LiBJZiB0aGUgYWNjb3VudCBpcyBub3Qgc29tZSBvdGhlciBhY2NvdW50J3Mgc3ViLWlkZW50aXR5LCB0aGVuIGp1c3QgYE5vbmVgLgAYU3Vic09mAQEEBQR5CkQAAAAAAAAAAAAAAAAAAAAAABS4IEFsdGVybmF0aXZlICJzdWIiIGlkZW50aXRpZXMgb2YgdGhpcyBhY2NvdW50LgAdASBUaGUgZmlyc3QgaXRlbSBpcyB0aGUgZGVwb3NpdCwgdGhlIHNlY29uZCBpcyBhIHZlY3RvciBvZiB0aGUgYWNjb3VudHMuAMAgVFdPWC1OT1RFOiBPSyDigJUgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AKFJlZ2lzdHJhcnMBAH0KBAAQTQEgVGhlIHNldCBvZiByZWdpc3RyYXJzLiBOb3QgZXhwZWN0ZWQgdG8gZ2V0IHZlcnkgYmlnIGFzIGNhbiBvbmx5IGJlIGFkZGVkIHRocm91Z2ggYaggc3BlY2lhbCBvcmlnaW4gKGxpa2VseSBhIGNvdW5jaWwgbW90aW9uKS4AKQEgVGhlIGluZGV4IGludG8gdGhpcyBjYW4gYmUgY2FzdCB0byBgUmVnaXN0cmFySW5kZXhgIHRvIGdldCBhIHZhbGlkIHZhbHVlLgAsQXV0aG9yaXR5T2YAAQQFjQqRCgQABPQgQSBtYXAgb2YgdGhlIGFjY291bnRzIHdobyBhcmUgYXV0aG9yaXplZCB0byBncmFudCB1c2VybmFtZXMuADhVc2VybmFtZUluZm9PZgABBAJtBJUKBAAYdQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBgdXNlcm5hbWVgIHRvIHRoZSBgQWNjb3VudElkYCB0aGF0IGhhcyByZWdpc3RlcmVkIGl0IGFuZCB0aGUgcHJvdmlkZXIgb2ZtASB0aGUgdXNlcm5hbWUuIFRoZSBgb3duZXJgIHZhbHVlIHNob3VsZCBiZSBhIGtleSBpbiB0aGUgYFVzZXJuYW1lT2ZgIG1hcCwgYnV0IGl0IG1heSBub3QgaWbwIHRoZSB1c2VyIGhhcyBjbGVhcmVkIHRoZWlyIHVzZXJuYW1lIG9yIGl0IGhhcyBiZWVuIHJlbW92ZWQuAGkBIE11bHRpcGxlIHVzZXJuYW1lcyBtYXkgbWFwIHRvIHRoZSBzYW1lIGBBY2NvdW50SWRgLCBidXQgYFVzZXJuYW1lT2ZgIHdpbGwgb25seSBtYXAgdG8gb25lSCBwcmltYXJ5IHVzZXJuYW1lLgBAUGVuZGluZ1VzZXJuYW1lcwABBAJtBJ0KBAAYbQEgVXNlcm5hbWVzIHRoYXQgYW4gYXV0aG9yaXR5IGhhcyBncmFudGVkLCBidXQgdGhhdCB0aGUgYWNjb3VudCBjb250cm9sbGVyIGhhcyBub3QgY29uZmlybWVkcQEgdGhhdCB0aGV5IHdhbnQgaXQuIFVzZWQgcHJpbWFyaWx5IGluIGNhc2VzIHdoZXJlIHRoZSBgQWNjb3VudElkYCBjYW5ub3QgcHJvdmlkZSBhIHNpZ25hdHVyZV0BIGJlY2F1c2UgdGhleSBhcmUgYSBwdXJlIHByb3h5LCBtdWx0aXNpZywgZXRjLiBJbiBvcmRlciB0byBjb25maXJtIGl0LCB0aGV5IHNob3VsZCBjYWxssCBbYWNjZXB0X3VzZXJuYW1lXShgQ2FsbDo6YWNjZXB0X3VzZXJuYW1lYCkuAB0BIEZpcnN0IHR1cGxlIGl0ZW0gaXMgdGhlIGFjY291bnQgYW5kIHNlY29uZCBpcyB0aGUgYWNjZXB0YW5jZSBkZWFkbGluZS4ASFVuYmluZGluZ1VzZXJuYW1lcwABBAJtBDgEABBdASBVc2VybmFtZXMgZm9yIHdoaWNoIHRoZSBhdXRob3JpdHkgdGhhdCBncmFudGVkIHRoZW0gaGFzIHN0YXJ0ZWQgdGhlIHJlbW92YWwgcHJvY2VzcyBieXEBIHVuYmluZGluZyB0aGVtLiBFYWNoIHVuYmluZGluZyB1c2VybmFtZSBtYXBzIHRvIGl0cyBncmFjZSBwZXJpb2QgZXhwaXJ5LCB3aGljaCBpcyB0aGUgZmlyc3TcIGJsb2NrIGluIHdoaWNoIHRoZSB1c2VybmFtZSBjb3VsZCBiZSBkZWxldGVkIHRocm91Z2ggYcQgW3JlbW92ZV91c2VybmFtZV0oYENhbGw6OnJlbW92ZV91c2VybmFtZWApIGNhbGwuAAHRAwABUQcAKDBCYXNpY0RlcG9zaXTwQKCET3cAAAAAAAAAAAAAAAAE2CBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgYSByZWdpc3RlcmVkIGlkZW50aXR5LgAsQnl0ZURlcG9zaXTwQKCGAQAAAAAAAAAAAAAAAAAEHQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIGVuY29kZWQgYnl0ZSBmb3IgYSByZWdpc3RlcmVkIGlkZW50aXR5LgA8VXNlcm5hbWVEZXBvc2l08EAA1DAAAAAAAAAAAAAAAAAACFUBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IHBlciByZWdpc3RlcmVkIHVzZXJuYW1lLiBUaGlzIHZhbHVlIHNob3VsZCBjaGFuZ2Ugb25seSBpbvQgcnVudGltZSB1cGdyYWRlcyB3aXRoIHByb3BlciBtaWdyYXRpb24gb2YgZXhpc3RpbmcgZGVwb3NpdHMuAERTdWJBY2NvdW50RGVwb3NpdPBAIHOGdwAAAAAAAAAAAAAAAAxlASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgYSByZWdpc3RlcmVkIHN1YmFjY291bnQuIFRoaXMgc2hvdWxkIGFjY291bnQgZm9yIHRoZSBmYWN0ZQEgdGhhdCBvbmUgc3RvcmFnZSBpdGVtJ3MgdmFsdWUgd2lsbCBpbmNyZWFzZSBieSB0aGUgc2l6ZSBvZiBhbiBhY2NvdW50IElELCBhbmQgdGhlcmUgd2lsbDUBIGJlIGFub3RoZXIgdHJpZSBpdGVtIHdob3NlIHZhbHVlIGlzIHRoZSBzaXplIG9mIGFuIGFjY291bnQgSUQgcGx1cyAzMiBieXRlcy4AOE1heFN1YkFjY291bnRzOBBkAAAABA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdWItYWNjb3VudHMgYWxsb3dlZCBwZXIgaWRlbnRpZmllZCBhY2NvdW50LgA0TWF4UmVnaXN0cmFyczgQFAAAAAhNASBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RyYXJzIGFsbG93ZWQgaW4gdGhlIHN5c3RlbS4gTmVlZGVkIHRvIGJvdW5kIHRoZSBjb21wbGV4aXR5fCBvZiwgZS5nLiwgdXBkYXRpbmcganVkZ2VtZW50cy4AZFBlbmRpbmdVc2VybmFtZUV4cGlyYXRpb244EODEAAAEFQEgVGhlIG51bWJlciBvZiBibG9ja3Mgd2l0aGluIHdoaWNoIGEgdXNlcm5hbWUgZ3JhbnQgbXVzdCBiZSBhY2NlcHRlZC4ATFVzZXJuYW1lR3JhY2VQZXJpb2Q4EGBUAAAIWQEgVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBtdXN0IHBhc3MgdG8gZW5hYmxlIHRoZSBwZXJtYW5lbnQgZGVsZXRpb24gb2YgYSB1c2VybmFtZSBieWggaXRzIHJlc3BlY3RpdmUgYXV0aG9yaXR5LgA8TWF4U3VmZml4TGVuZ3RoOBAHAAAABIAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgc3VmZml4LgBETWF4VXNlcm5hbWVMZW5ndGg4ECAAAAAEYQEgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUsIGluY2x1ZGluZyBpdHMgc3VmZml4IGFuZCBhbnkgc3lzdGVtLWFkZGVkIGRlbGltaXRlcnMuAAGhCgAERE9mZmNoYWluU2lnbmF0dXJlYQQM4CBTaWduYXR1cmUgdHlwZSBmb3IgcHJlLWF1dGhvcml6aW5nIHVzZXJuYW1lcyBvZmYtY2hhaW4uABEBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6U2lnbmluZ1B1YmxpY0tleWAgY3JlYXRlZCBhIHNpZ25hdHVyZS4AMgAAGFBlb3BsZQEYUGVvcGxlJBBLZXlzAAEEAggoBAAUSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAHUBIExvb2stdXAgZnJvbSB0aGUgY3J5cHRvIChwdWJsaWMpIGtleSB0byB0aGUgaW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApLiBBXQEgcGVyc29uIGNhbiBoYXZlIHR3byBkaWZmZXJlbnQgZW50cmllcyBpbiB0aGlzIG1hcCBpZiB0aGV5IHF1ZXVlZCBhIGtleSBtaWdyYXRpb24gd2hpY2hkIGhhc24ndCBiZWVuIGVuYWN0ZWQgeWV0LgA4Q291bnRlckZvcktleXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYUGVvcGxlAAEEAiilCgQADEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgBlASBJbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIga2V5IGFuZCBzdGF0dXMuADhBbGlhc1RvQWNjb3VudAABBAJxAwQEAATMIENvbnZlcnNpb24gb2YgYSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIEbQMEAATMIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGNvbnRleHR1YWwgYWxpYXMuAExBY2NvdW50VG9QZXJzb25hbElkAAEEAgQoBAAQvCBBc3NvY2lhdGlvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgcGVyc29uYWwgSUQuACEBIE1hbmFnZWQgd2l0aCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGFuZCBgdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudGAu+CBSZXZlcnNlIGxvb2t1cCBpcyBpbnNpZGUgYFBlb3BsZWAgc3RvcmFnZSwgaW5zaWRlIHRoZSByZWNvcmQuADhOZXh0UGVyc29uYWxJZAEAKCAAAAAAAAAAAAS4IFRoZSBuZXh0IGZyZWUgYW5kIG5ldmVyIHJlc2VydmVkIHBlcnNvbmFsIElELgBcUGVvcGxlQ29sbGVjdGlvbkNyZWF0ZWQBAPQEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFxBAABVQcAEDBSaW5nRXhwb25lbnRFBQQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EBkAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABqQoAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIrQpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGArEKOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCArEKhQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAji1CgQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI40QoEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjjVCgQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAA2QoEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEA3QoEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAYEEAAFZBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZvBQEwAQMAoQ8EMgV2yOsLBPQgVGhlIGxvY2F0aW9uIG9mIHRoZSB1c2VkIGN1cnJlbmN5LiBJdCBpcyBpbmZvcm1hdGlvbmFsIG9ubHkuAFBNYXhWb3RlQ2xhaW1EdXJhdGlvbigggFEBAAAAAAAEBQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBhIGNhc2UgdGltZXMgb3V0IGFuZCBjYW4gYmUgcmVhcGVkLgA8TWluQ2FzZUR1cmF0aW9uOBBYAgAABEEBIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhIGNhc2UgbXVzdCBzdGF5IG9wZW4gZm9yIHZvdGluZyBiZWZvcmUgaXQgY2FuIGJlIGNsb3NlZC4ARE1heFZvdGluZ0R1cmF0aW9uOBCwBAAABC0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIGZvciB3aGljaCBhIGNhc2UgY291bGQgc3RheSBvcGVuIGZvciB2b3RpbmcuAERNaW5UdXJub3V0Tm9taW5hbDgQAQAAAARFASBUaGUgbWluaW11bSBudW1iZXIgb2Ygdm90ZXMgYSBjYXNlIG11c3QgcmVjZWl2ZSBiZWZvcmUgYSB2ZXJkaWN0IGNhbiBiZSByZWFjaGVkLgBQTWluVHVybm91dFBlcmNlbnRhZ2XpCgQKCGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIHZvdGVyIGNvdW50IGEgY2FzZSBtdXN0IHJlY2VpdmWEIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFRWb3RpbmdQZW5hbHR5RHVyYXRpb244ECAcAAAE0CBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IGEgcGVuYWx0eSBpcyBhcHBsaWVkIGZvci4ARE1heFZvdGVzQ2xhaW1hYmxlOBAKAAAABPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGVzIGNsYWltYWJsZSBpbiBhIHNpbmdsZSBleHRyaW5zaWMuAFBPZmZjaGFpbldvcmtJbnRlcnZhbDgQGQAAAASwIFRoZSBpbnRlcnZhbCBhdCB3aGljaCBvZmZjaGFpbiB3b3JrZXIgcnVucy4ATENsZWFuVm90ZXNCYXRjaFNpemU4EOgDAAAEJQEgTWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3aWxsIGJlIGNsZWFuZWQgZHVyaW5nIG9mZmNoYWluIHdvcmtlciBydW4uAGhWb3Rlc09wZW5Gb3JDbGFpbXNEdXJhdGlvbjgQWAIAAAgVASBUaGUgdGltZSBpbiBzZWNvbmRzIGR1cmluZyB3aGljaCB2b3RlcyBjYW4gYmUgY2xhaW1lZCBvbiBkb25lIGNhc2VzLsAgTWVhc3VyZWQgZnJvbSB0aGUgdGltZSB0aGUgY2FzZSBiZWNvbWVzICdEb25lJy4AVE1pbmltdW1Wb3RlclRocmVzaG9sZDgQAwAAAAhlASBUaGUgbWluaW11bSBudW1iZXIgb2YgYWN0aXZlIHZvdGVycyByZXF1aXJlZCB0byBhbGxvdyB2b3RpbmcuIFdoZW4gdGhpcyB0aHJlc2hvbGQgaXMgbm90hCBtZXQsIG9wZW4gY2FzZXMgY2Fubm90IHRpbWUgb3V0LgA8bW9iX3J1bGVfcG90X2lkBIBtb2RsTW9iUndyZHMAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4AQG1vYl9ydWxlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL21vYi1ydWxlICAgCFEBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gbW9iGCBydWxlLgAB7QoAAAA0AAAoUHJvb2ZPZkluawEoUHJvb2ZPZkluaywoQ2FuZGlkYXRlcwABBAIE8QoEAARJASBUaGUgY3VycmVudCBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIGFyZSBnb2luZyB0aHJvdWdoIHRoZSBwcm9vZi1vZi1pbmsgcHJvY2Vzcy4AGFBlb3BsZQABBAUoAQsEAAhxASBUaGUgcGVyc29uYWwgaWRlbnRpdGllcyB3aGljaCB3ZSB0cmFjazsgYWxsIHdoaWNoIGhhdmUgYmVlbiByZWNvZ25pemVkIHRocm91Z2ggcHJvb2Ytb2YtaW5rNCBhcmUgaW4gaGVyZS4APFJlZmVycmFsVGlja2V0cwABBAUoDQsEAAQJASBUaGUgdGlja2V0cyBzdG9yZWQgb24tY2hhaW4gcmVhZHkgdG8gYmUgdXNlZCB0byByZWZlciBjYW5kaWRhdGVzLgA4RGVzaWduRmFtaWxpZXMAAQQCVQMZCwQABKggVGhlIGN1cnJlbnQgZGVzaWduIGZhbWlsaWVzIHdlIHJlY29nbmlzZS4AQENvbW1pdHRlZERlc2lnbnMAAQgCAh0LIQsEAATUIFRoZSBjb21taXR0ZWQgZGVzaWducyB3aGljaCBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZS4APEFsbG9jYXRpb25Db3VudAEAOBAAAAAABLAgVGhlIG51bWJlciBvZiBqdWRnZW1lbnRzIGN1cnJlbnRseSBvbmdvaW5nLgA0Q29uZmlndXJhdGlvbgEAnQSgQJ0EAAQAAADoAwAAAAAABAAAAAAgAAAAAAAgAAAAAAAIAAAAQJ0EAARMIFRoZSBjb25maWd1cmF0aW9uLgBAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABPggTnVtYmVyIG9mIGludml0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCAiULEAQADB0BIFBlbmRpbmcgaW52aXRhdGlvbnMgZm9yIGVhY2ggaW52aXRlciAoYW4gYWNjb3VudCB0aGF0IGludml0ZXMgb3RoZXJzKS4AWQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cywgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLgBsUmVmZXJyZXJSZWltYnVyc2VtZW50VmFsdWVzAAChBAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlcnMsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaCB2YWx1ZW0BIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdEEBIHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AbFJlZmVycmVkUmVpbWJ1cnNlbWVudFZhbHVlcwAAoQQEABRhASBUaGUgdmFsdWVzIG9mIHRoZSByZWltYnVyc2VtZW50IGF3YXJkZWQgdG8gcmVmZXJyZWQgcGVvcGxlLCBhbG9uZyB3aXRoIGhvdyBtYW55IG9mIGVhY2hxASB2YWx1ZSBzaG91bGQgYmUgYXdhcmRlZC4gVGhlc2UgdmFsdWVzIGFyZSBzdG9yZWQgaW4gcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eSwgc28gdGhlVQEgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmUgdG8gYmUgdXNlZCBieSB0aGUgcmVpbWJ1cnNlbWVudCBzeXN0ZW0uAEUBIFN0b3JhZ2UgaXRlbSBuYW1lIGtlZXBzIHRoZSBsZWdhY3kgcHJlZml4IGZvciBzdG9yYWdlIHJlYWRhYmlsaXR5IGNvbXBhdGliaWxpdHkuAAGRBAABXQcADEhNYXhBY3RpdmVSZWZlcnJhbHM4EAoAAAAI9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIHJlZmVycmFscyBhIHVzZXIgY2FuIGhhdmUgb3Blbi5YIEl0IGNhbm5vdCBleGNlZWQgMjAwLgAUUG90SWRBCSBQb0lQb3RfXyDsIEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSByZXdhcmQgcG90IGlzIGdlbmVyYXRlZC4AKQEgVGhlIGFjY291bnQgbXVzdCBiZSBmdW5kZWQgc28gcmV3YXJkcyBjYW4gYmUgcGFpZCBkdXJpbmcgcmVnaXN0cmF0aW9uIGFuZGAgcmVmZXJyYWwgcmV3YXJkIGNsYWltcy4AEQEgVGhlIGBQYWxsZXRJZGAgbXVzdCBiZSBhIGNvbnN0YW50IGFzIGl0IGlzIGV4cG9zZWQgaW4gdGhlIG1ldGFkYXRhLmUBIENoYW5naW5nIHRoaXMgdmFsdWUgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZSBjYW4gYmUgZG9uZSBhdCBhbnkgdGltZSwgdGhlIG5ldyBhY2NvdW50IHdpbGyQIHRoZW4gbmVlZCB0byBiZSBmdW5kZWQgYWNjb3JkaW5nbHkuAExwcm9vZl9vZl9pbmtfcG90X2lkBIBtb2RsUG9JUG90X18AAAAAAAAAAAAAAAAAAAAAAAAAAATUIFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb3QgdXNlZCBmb3IgcmV3YXJkIHRyYW5zZmVycy4AASkLAAg8VGlja2V0U2lnbmF0dXJlYQQMiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy4AAQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpUaWNrZXRQdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuGFRpY2tldAQEmCBUaWNrZXQgdHlwZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADUAABBHYW1lARBHYW1lVFBTdG9yZWRQaGFzZUR1cmF0aW9ucwAA5QQEAAz0IFBoYXNlLWR1cmF0aW9uIG92ZXJyaWRlIHNldCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIHZpYeAgYHNldF9nYW1lX3BoYXNlc2AuIGBOb25lYCBtZWFucyB0aGUgY2hhaW4gZmFsbHMgYmFjayB0b3AgYFQ6OkRlZmF1bHRQaGFzZUR1cmF0aW9uc2AuAERQbGF5RGVwb3NpdEFtb3VudAEA8EAAyBeoBAAAAAAAAAAAAAAAED0BIFRoZSBjb25maWd1cmVkIG5hdGl2ZSBiYWxhbmNlIGhlbGQgYXMgZGVwb3NpdCB3aGVuIGFuIGFjY291bnQgcGxheWVyIHNpZ25zIHVwLgAxASBUaGlzIHZhbHVlIGlzIG9ubHkgdXNlZCBmb3IgbmV3IGRlcG9zaXQgY3JlYXRpb25zOyBleGlzdGluZyBhY3RpdmUgZGVwb3NpdHOoIHJldGFpbiB0aGUgYW1vdW50IHRoZXkgd2VyZSBjcmVhdGVkIHdpdGguABBOZnRzAAEIAgItCzgEACQpASBBbGwgbWludGVkIE5GVHMsIGtleWVkIGJ5IG93bmVyIGFuZCBORlQgaGFzaC4gVGhlIHZhbHVlIGlzIGEgVW5peC1zZWNvbmRzNQEgdGltZXN0YW1wIHNldCB3aGVuZXZlciB0aGUgZW50cnkgaXMgd3JpdHRlbjogYnkgdGhlIGByZXBvcnRgIGV4dHJpbnNpYyBmb3IgYTUBIGZyZXNoIGBQZXJzb25gIHZvdGUsIGJ5IGBtaW50X2F0dGVuZGFuY2VfbmZ0c2Agd2hlbiBhbiBhdHRlbmRlZSdzIGF0dGVuZGFuY2UxASBpcyBmaW5hbGlzZWQsIG9yIGJ5IGBwcm9tb3RlX25mdF9jYW5kaWRhdGVzYCB3aGVuIGEgaGVsZCBgTm90UGVyc29uYCBORlQgaXM1ASByZXNvbHZlZC4gQmFja2ZpbGwgd3JpdGVzIG92ZXJ3cml0ZSBhbiBlYXJsaWVyIHRpbWVzdGFtcCBvbiB0aGUgc2FtZSBrZXkg4oCUMQEgdGhlIHZhbHVlIGlzIHRoZXJlZm9yZSB0aGUgKm1vc3QgcmVjZW50KiBtaW50IHRpbWUsIG5vdCB0aGUgZmlyc3QuIFdpdGhpbiBhOQEgc2luZ2xlIGdhbWUgdGhlc2UgdGltZXN0YW1wcyBhcmUgYm91bmRlZCB0b2dldGhlciAodHlwaWNhbGx5IHRoZSBzYW1lIGJsb2NrKSw1ASBzbyBjbGllbnRzIGNhbiB1c2UgdGhlbSBhcyBhIHBlci1nYW1lIHZlcnNpb24gbWFya2VyIChlLmcuIG1hcHBpbmcgb2xkIG1pbnRz1CB0byBvbmUgaW1hZ2UgY29sbGVjdGlvbiBhbmQgbmV3ZXIgbWludHMgdG8gYW5vdGhlcikuADROZnRDYW5kaWRhdGVzAAEIAgItCxAEACQpASBDYW5kaWRhdGUgTkZUcyBzdGFnZWQgZnJvbSBgTm90UGVyc29uYCByZXBvcnRzLCBoZWxkIHVudGlsIHRoZSBhdHRlc3RlZSdzXCBhdHRlbmRhbmNlIGlzIGRlY2lkZWQuADkBIER1cmluZyB0aGUgcmVwb3J0aW5nIHBoYXNlIGEgYE5vdFBlcnNvbmAgdm90ZSBzdGFnZXMgdGhlIE5GVCBoZXJlIHJhdGhlciB0aGFuPQEgbWludGluZyBkaXJlY3RseSBpbnRvIFtgTmZ0c2BdOiB0aGUgYXR0ZXN0ZWUgb25seSBlYXJucyB0aGUgTkZUIGlmIHRoZXkgZW5kIHVwIQEgY2xhc3NlZCBhcyBoYXZpbmcgYXR0ZW5kZWQuIFRoZSBmaXJzdCBrZXkgaXMgdGhlIHByb3NwZWN0aXZlIG93bmVyICh0aGUhASBhdHRlc3RlZSksIHRoZSBzZWNvbmQgaXMgdGhlIE5GVCBoYXNoIChzYW1lIGRlcml2YXRpb24gYXMgaW4gW2BOZnRzYF0pLiEBIFJlc29sdmVkIGVudHJpZXMgYXJlIGVpdGhlciBwcm9tb3RlZCBpbnRvIFtgTmZ0c2BdIG9yIGRpc2NhcmRlZCDigJQgc2Vl1CBgcHJvbW90ZV9uZnRfY2FuZGlkYXRlc2AgLyBgZGlzY2FyZF9uZnRfY2FuZGlkYXRlc2AuADxBcmNoaXZlZFBsYXllcnMAAQQCZQcxCwQABCkBIEFsbCB0aGUgcGxheWVyIHdpdGggemVybyBzY29yZSBidXQgc3RpbGwgb25ib2FyZGVkIGluIGluZGl2X3BhbGxldF9zY29yZS4AHFBsYXllcnMAAQQCZQc1CwQAEHAgQWxsIHRoZSBwbGF5ZXIgaW4gdGhlIGdhbWUuACEBIEFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIHRoaXMgc3RvcmFnZSBhbmQgc3RhdGVtZW50IGFjY291bnRzIGlupCBbYFN0bXRBY2NvdW50VG9BbGlhc2BdIG11c3Qgbm90IG92ZXJsYXAuACRHYW1lSW5kZXgBADgQAAAAAARgIFRoZSBjdXJyZW50IGdhbWUgaW5kZXguABBHYW1lAABNCwQABMwgVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBnYW1lIG9yIG9uZ29pbmcgZ2FtZS4ALEdhbWVIaXN0b3J5AAEEBTg4BAAIYQEgVGhlIG1hcHBpbmcgZnJvbSBwYXN0IGdhbWVzLCBpZGVudGlmaWVkIGJ5IHRoZWlyIGdhbWUgaW5kZXgsIHRvIHRoZSBzdGFydCB0aW1lc3RhbXAsIGlueCBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgBcUGxheWVyQXR0ZW5kYW5jZUhpc3RvcnkBAQQCZQdhCwQACDEBIEVudHJpZXMgb2YgcHJldmlvdXNseSBhdHRlbmRlZCBnYW1lcyBvZiBlYWNoIHBsYXllci4gUmV0YWluZWQgb24gYG9mZmJvYXJkYAkBIGFuZCBga2lja291dGAuIEJvdW5kZWQgYnkgYE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGhgIHBlciBwbGF5ZXIuAFBHYW1lUGFydGljaXBhbnRDb3VudAEBBAU4OBAAAAAAEPAgQ291bnQgb2YgY29uZmlybWVkIGF0dGVuZGVlcyBwZXIgZ2FtZSBpbmRleC4gSW5jcmVtZW50ZWQgYnkZASBbYFBhbGxldDo6bm90ZV9hdHRlbmRhbmNlYF0gZm9yIGV2ZXJ5IGF0dGVuZGFuY2UgZW50cnksIHJlZ2FyZGxlc3Mgb2b8IHdoZXRoZXIgdGhlIHBsYXllciBpcyByZWNvcmRlZCBhcyBgQWNjb3VudE9yUGVyc29uOjpQZXJzb25gIG9y9CBgQWNjb3VudE9yUGVyc29uOjpBY2NvdW50YC4gRXhwb3NlZCBmb3Igb2ZmLWNoYWluIGNvbnN1bWVycy4ANEluZGV4VG9QbGF5ZXIAAQQFZQtlBwQABOQgVGhlIG1hcHBpbmcgZnJvbSByb3VuZCBpbmRleCBhbmQgcGxheWVyIGluZGV4IHRvIHBsYXllci4ANFBsYXllclRvSW5kZXgAAQQCZQdpCwQABOAgVGhlIG1hcHBpbmcgZnJvbSBwbGF5ZXIgdG8gdGhlaXIgaW5kaWNlcyBpbiBlYWNoIHJvdW5kLgBEU2h1ZmZsZVJlY29nbml6ZWQAAQgFBm0LZQcEAAQBASBTdG9yYWdlIHVzZWQgdG8gY29tcHV0ZSB0aGUgc2h1ZmZsZSBvcmRlciBvZiByZWNvZ25pemVkIHBlb3BsZS4AUFNodWZmbGVOb3RSZWNvZ25pemVkAAEIBQZtC2UHBAAEVQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2Ygbm90IHJlY29nbml6ZWQgcGVvcGxlLCBpLmUuIGNhbmRpZGF0ZXMuADRHYW1lU2NoZWR1bGVzAQBxCwQAAABAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABOggTnVtYmVyIG9mIGludml0ZXMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICJQsQBAAQiCBQZW5kaW5nIGludml0ZXMgZm9yIGVhY2ggaW52aXRlci4AaQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cyB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUsIGZyb200IHRoZSBpbnZpdGVyLgBIQWxpYXNUb1N0bXRBY2NvdW50AAEEAggEBAAcWQEgTWFwcGluZyBmcm9tIGFsaWFzIHRvIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgU3RtdEFjY291bnRUb0FsaWFzYF0uAOwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBIU3RtdEFjY291bnRUb0FsaWFzAAEEAgQIBAAkWQEgTWFwcGluZyBmcm9tIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBzdGF0ZW1lbnQgc3RvcmUgdG8gdGhlIGFsaWFzLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgQWxpYXNUb1N0bXRBY2NvdW50YF0u7CBUaGlzIGlzIHJlbW92ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIGdldHMgYXJjaGl2ZWQuVQEgVGhpcyBpcyB1cGRhdGVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBzaWducyB1cCB3aXRoIGFub3RoZXIgc3RhdGVtZW50IGFjY291bnQuAGUBIFN0YXRlbWVudCBhY2NvdW50cyBpbiB0aGlzIHN0b3JhZ2UgYW5kIGFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIFtgUGxheWVyc2BdIG11c3Q0IG5vdCBvdmVybGFwLgBgQ29tbXVuaWNhdGlvbklkZW50aWZpZXJzAAEEAgRpBAQADGkBIFRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXJzIHVzZWQgYnkgcGxheWVycyB0byBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIFAyUCBjb25uZWN0aW9uIGlubQEgb3JkZXIgdG8gcGxheSB0aGUgZ2FtZS4gVGhlIGFjY291bnQgdW5kZXIgd2hpY2ggdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBpcyByZWdpc3RlcmVkGQEgc2hvdWxkIGJlIHRoZSBzYW1lIGFjY291bnQgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUuAAGtBAABYQcAMCRNYXhSb3VuZHM4EAMAAAAkoCBUaGUgbWF4aW11bSBudW1iZXIgb2Ygcm91bmRzIGluIGEgZ2FtZS4A6CBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiByb3VuZHMgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AQQEgVE9ETzogaWYgdGhpcyBib3VuZCBpcyByYWlzZWQgbWVhbmluZ2Z1bGx5IChlLmcuIGFib3ZlIH41KSBvciB3aGVuIHRpbWUgYWxsb3dzLFkBIHJldmlzaXQgdGhlIGBwcm9jZXNzX3BsYXllcnNgIGFuZCBgcmVwb3J0YCBiZW5jaG1hcmtzIHRvIGFkZCBhIGBMaW5lYXI8MSwgTWF4Um91bmRzPmAVASBzd2VlcC4gQ3VycmVudGx5IHRoZXkgYmVuY2ggYXQgZml4ZWQgYE1heFJvdW5kc2Agc28gZ2FtZXMgd2l0aCBmZXdlcowgcm91bmRzIG92ZXJwYXkgZm9yIHBlci1yb3VuZCB3b3JrLvQgU2VlIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9pbmRpdmlkdWFsaXR5L2lzc3Vlcy8yNDQ+ADBNYXhHcm91cFNpemU4EAYAAAAMqCBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgAZASBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1pbkdyb3VwU2l6ZTgQAAAAACCoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuAGUBIFdoZW4gc2NoZWR1bGluZyBhIGdhbWUgdGhlIHZhbHVlIGZvciBgbWF4X2dyb3VwX3NpemVgIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBtaW5pbXVtICsgMS4AJQEgSW4gb3JkZXIgdG8gaGF2ZSBubyBzaW5nbGUtcGxheWVyIGdyb3VwcywgdGhpcyB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDIuAFEBIE5vdGU6IHRoZSBhY3R1YWwgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUsIGl0IGlzWCBgbWF4X2dyb3VwX3NpemUgLSAxYC4AVE5vblBsYXlpbmdLaWNrb3V0VGltZTgQQOMJAAwVASBUaGUgdGltZSBhZnRlciB3aGljaCBhIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGNhbiBiZSBraWNrZWQgb3V0LgC8IFRoaXMgaXMgb25seSBmb3IgYWNjb3VudCBwbGF5ZXJzLCBub3QgcGVyc29ucy4ASERlZmF1bHRQbGF5RGVwb3NpdPBAAMgXqAQAAAAAAAAAAAAAAAhRASBUaGUgZGVmYXVsdCBwbGF5IGRlcG9zaXQgKG5hdGl2ZSBiYWxhbmNlKSB1c2VkIHdoZW4gW2BQbGF5RGVwb3NpdEFtb3VudGBdIGhhcyBuZXZlcnAgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuAFREZWZhdWx0UGhhc2VEdXJhdGlvbnPlBGAsAQAAPAAAAB4AAABYAgAAPAAAAID0AwAIEQEgVGhlIGRlZmF1bHQgZHVyYXRpb25zIG9mIGVhY2ggZ2FtZSBwaGFzZSwgaW4gc2Vjb25kcy4gT3ZlcnJpZGRlbiBhdKQgcnVudGltZSB2aWEgW2BQYWxsZXQ6OnNldF9nYW1lX3BoYXNlc2BdLgBATWF4R2FtZVNjaGVkdWxlczgQDAAAAATsIFRoZSBNYXhpbXVtIG51bWJlciBvZiBnYW1lIHNjaGVkdWxlcyB0aGUgcGFsbGV0IGNhbiBzdG9yZS4AZE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGg4EAwAAAAIXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhc3QgZ2FtZXMgZm9yIHdoaWNoIHBsYXllciBhdHRlbmRhbmNlIGlzIHN0b3JlZC4gQW55IGF0dGVuZGFuY2UBASBlbnRyaWVzIG9sZGVyIHRoYW4gdGhpcyB3aWxsIGJlIGltbWluZW50bHkgcHVyZ2VkIGZyb20gc3RvcmFnZS4ANEFpcmRyb3BTb3VyY2UEgG1vZGxwb3AvZ2FkcwAAAAAAAAAAAAAAAAAAAAAAAAAACOQgQWNjb3VudCB0aGF0IGZ1bmRzIHRoZSBwZXItZ2FtZSBhaXJkcm9wIHByaXplIGFsbG9jYXRpb24NASAoYG1heF93aW5uZXJzIMOXIGFzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgcGVyIHNjaGVkdWxlZCBnYW1lKS4AbHByb29mX29mX293bmVyc2hpcF9tc2dfYmFzZQiAcG9wOmdhbWU6c3RtdF9hY2NvdW50X2Zvcl9hbGlhczoQGQEgVGhlIGJhc2UgbWVzc2FnZSBvZiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIGFuIGFjY291bnQgYnkgYW4gYWxpYXMuADUBIFRoZSBmdWxsIG1lc3NhZ2UgaXMgdGhpcyBiYXNlIGNvbmNhdGVuYXRlZCB0byB0aGUgYWxpYXMgYW5kIHRoZW4gaGFzaGVkIHdpdGisIGBibGFrZTJfMjU2YCAoYmxha2UyIHdpdGggMjU2IGJpdCBvdXRwdXQpLgA4bWF4X2VuYWN0bWVudHM4EBAAAAAUOQEgTWF4aW11bSBudW1iZXIgb2YgZnVsbCBlYXJseS1hdHRlbmRhbmNlIGVuYWN0bWVudHMgYSBzaW5nbGUgYHJlcG9ydGAgY2FsbCBjYW4ZASB0cmlnZ2VyOiBldmVyeSB1bmlxdWUgY28tcGxheWVyIGFjcm9zcyBhbGwgcm91bmRzLCBwbHVzIHRoZSByZXBvcnRlci4AGQEgVXNlZCBib3RoIGFzIHRoZSBwcmUtZGlzcGF0Y2ggb3ZlcmNoYXJnZSBib3VuZCBvbiBgcmVwb3J0YCBhbmQgYXMgdGhlxCB1cHBlciBib3VuZCBvZiBpdHMgYExpbmVhcmAgYmVuY2htYXJrIGNvbXBvbmVudC4AVGFpcmRyb3BfZXZlbnRfaWRfYmFzZT0EcHBvcDpnYW1lOmFpcmRyb3A6ICAgICAgICAgICAIWQEgVGhlIGJhc2Ugc3RyaW5nIGZvciB0aGUgYWlyZHJvcCBldmVudCBJRCBkZXJpdmF0aW9uLiBUaGUgYWN0dWFsIGV2ZW50IElEIGlzIHRoaXMgYmFzZbQgY29uY2F0ZW5hdGVkIHdpdGggdGhlIGdhbWUgaW5kZXggQkUgZW5jb2RlZC4AAXULABA8VGlja2V0U2lnbmF0dXJlYQQEiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy5AQWNjb3VudFNpZ25hdHVyZWEEBGAgU2lnbmF0dXJlIGZvciBhY2NvdW50cy44QWlyZHJvcEFzc2V0SWQFAQSQIEFzc2V0IGlkIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uTEFpcmRyb3BBc3NldEJhbGFuY2XwBKQgQXNzZXQgYmFsYW5jZSB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLgA3AAAUU2NvcmUBFFNjb3JlLDBQYXJ0aWNpcGFudHMAAQQCZQd5CwQABHwgVGhlIHBhcnRpY2lwYW50cyBpbmZvcm1hdGlvbnMuAExQZXJzb25ob29kVGhyZXNob2xkAQA4EAAAAAAEyCBUaGUgc2NvcmUgdGhyZXNob2xkIHJlcXVpcmVkIHRvIHJlYWNoIHBlcnNvbmhvb2QuAGxQZXJzb25ob29kVGhyZXNob2xkU2NoZWR1bGUBAAEFxBiIEwAAAQAAABAnAAADAAAAIE4AAAYAAAC4iAAACgAAAFDDAAAPAAAA/////xUAAAAoHQEgUnVudGltZS1jb25maWd1cmFibGUgc2NoZWR1bGUgb2YgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllcnMsIHNvcnRlZCBieR0BIGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuIEVhY2ggdGllciBzcGVjaWZpZXMgdGhlIHNjb3JlIGEdASBwYXJ0aWNpcGFudCBtdXN0IHJlYWNoIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBwZXJzb24gYXQgdGhhdCBwb3B1bGF0aW9uHCBsZXZlbC4ABQEgRGVmYXVsdHMgdG8gW2BEZWZhdWx0UGVyc29uaG9vZFRocmVzaG9sZFRpZXJzYF0gdW50aWwgZ292ZXJuYW5jZQEBIG92ZXJyaWRlcyBpdCB2aWEgW2BQYWxsZXQ6OnNldF9wZXJzb25ob29kX3RocmVzaG9sZF9zY2hlZHVsZWBdLgARASBBIG5ldyBzY2hlZHVsZSB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9u/CB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXMgYFBlcnNvbmhvb2RUaHJlc2hvbGRgLgBQQWJzZW5jZUdyYWNlU2NoZWR1bGUBAPUElBiIEwAABgUQJwAABQQgTgAABAO4iAAAAwJQwwAAAgH/////BgEgKQEgUnVudGltZS1jb25maWd1cmFibGUgc2NoZWR1bGUgb2YgYWJzZW5jZS1ncmFjZSB0aWVycywgc29ydGVkIGJ5IGFzY2VuZGluZw0BIHBvcHVsYXRpb24gc2l6ZSB0aHJlc2hvbGQuIEVhY2ggdGllciBzcGVjaWZpZXMgaG93IG1hbnkgbWlzc2VzIGFyZQ0BIHRvbGVyYXRlZCB3aXRoaW4gcmVjZW50IGdhbWVzIGJlZm9yZSBhIHBhcnRpY2lwYW50J3MgcGVyc29uaG9vZCBpcywgc3VzcGVuZGVkLgAdASBEZWZhdWx0cyB0byBbYERlZmF1bHRBYnNlbmNlR3JhY2VUaWVyc2BdIHVudGlsIGdvdmVybmFuY2Ugb3ZlcnJpZGVzIGl0DQEgdmlhIFtgUGFsbGV0OjpzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZWBdLiBBbiBlbXB0eSBzY2hlZHVsZSAoc2V0+CBleHBsaWNpdGx5IGJ5IGdvdmVybmFuY2UpIGRpc2FibGVzIHRoZSBncmFjZSBwZXJpb2QgZW50aXJlbHkuAERBYnNlbmNlR3JhY2VSYXRpbwEAtQkIAAAYFQEgVGhlIGN1cnJlbnRseSBhY3RpdmUgYWJzZW5jZS1ncmFjZSByYXRpbyBgKGFsbG93ZWRfbWlzc2VzLCB3aW5kb3cpYCwlASBkZXJpdmVkIGZyb20gYEFic2VuY2VHcmFjZVNjaGVkdWxlYCBhbmQgdGhlIGN1cnJlbnQgYWN0aXZlLXBlcnNvbiBjb3VudC4AEQEgVXBkYXRlZCBlYWNoIHRpbWUgYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJ1bnMgKGF0IHRoZSBzdGFydCBvZiBldmVyeR0BIGF0dGVuZGFuY2UgcmVwb3J0IHNlc3Npb24pLiBSZWFkIGJ5IGBzZXRfYXR0ZW5kYW5jZWAgdG8gZGVjaWRlIHdoZXRoZXKMIGEgcGFydGljaXBhbnQgc2hvdWxkIGJlIHN1c3BlbmRlZC4ASEN1cnJlbnRSb3VuZFBvaW50cwEAOBAAAAAABLQgVGhlIGFjY3VtdWxhdGVkIHBvaW50cyBpbiB0aGUgY3VycmVudCByb3VuZC4AREN1cnJlbnRSb3VuZEluZGV4AQA4EAAAAAAcgCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm91bmQuAF0BIFRoaXMgbXVzdCBiZSB0aGUgc3VtIG9mIGFsbCBwb2ludHMgYWNjdW11bGF0ZWQgaW4gYFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50YCBmb3IgdGhlPCBjdXJyZW50IHJvdW5kLgBRASAqKldBUk5JTkcqKjogVGhpcyBzdG9yYWdlIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIGBSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudGAsIHVzZbQgYGZuIGFkZF9wb2ludHNfdG9fcGFydGljaXBhbnRgIHRvIHVwZGF0ZSBpdC4AaFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50AQEIAgKJCzgQAAAAABjQIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQgYnkgYSBwYXJ0aWNpcGFudCBpbiBhIHJvdW5kLgBRASBGb3IgdGhlIGN1cnJlbnQgcm91bmQsIHRoaXMgc3RvcmFnZSBtdXN0IGJlIHVwZGF0ZWQgYWxvbmdzaWRlIGBDdXJyZW50Um91bmRQb2ludHNgLgAxASAqKldBUk5JTkcqKjogVGhpcyBzdG9yYWdlIG11c3QgYmUgY29uc2lzdGVudCB3aXRoIGBDdXJyZW50Um91bmRQb2ludHNgLCB1c2W0IGBmbiBhZGRfcG9pbnRzX3RvX3BhcnRpY2lwYW50YCB0byB1cGRhdGUgaXQuADBSb3VuZFBheW91dHMAAQQCOI0LBAAQqCBUaGUgcm91bmRzIHRoYXQgYXJlIGN1cnJlbnRseSBwYXlpbmcgb3V0LgARASBSb3VuZHMgYXJlIHBheWluZyBvdXQgYWZ0ZXIgdGhleSBoYXZlIGZpbmlzaGVkIGFjY3VtdWxhdGluZyBwb2ludHMuJQEgV2hlbiBhbGwgdGhlaXIgcG9pbnRzIGhhdmUgYmVlbiBwYWlkIG91dCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADRSb3VuZFBsYW5uaW5nAACRCwQADPwgVGhlIHBsYW5uaW5nIG9mIHRoZSBjdXJyZW50IHJvdW5kIHRoYXQgaXMgYWNjdW11bGF0aW5nIHBvaW50cy4APQEgSWYgbm9uZSB0aGUgY3VycmVudCByb3VuZCBpcyBvbmdvaW5nIGFuZCB3aWxsIGJlIHBsYW5uZWQgb24gdGhlIG5leHQgc2NoZWR1bGUuADhSb3VuZFNjaGVkdWxlcwEAlQsEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAB6QQAAWkHABBQQ3VycmVuY3lMb2NhdGlvbkluZm8FATABAwChDwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE9mZmNoYWluV29ya0ludGVydmFsOBACAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgAwc2NvcmVfcG90X2lkBIBtb2Rsc2NvcmVwb3QAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4ANHNjb3JlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Njb3JlICAgICAgCFkBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gc2NvcmUgIHBhbGxldC4AAaELAAAAOAAAIER1bW15RGltASBEdW1teURpbQgsUmVzZXJ2ZWRJZHMAAQQCKBAEAATcIFRoZSBwZXJzb25hbCBJRHMgdGhhdCBhcmUgcmVzZXJ2ZWQgYnkgdW5wcm92ZW4gcGVvcGxlLgAYUGVvcGxlAAEEBSilCwQABLggVGhlIHBlb3BsZSB3ZSB0cmFjayBhbG9uZyB3aXRoIHRoZWlyIHJlY29yZHMuAAENBQABbQcAAAGpCwAAADsAAFRTdG9yYWdlSW5pdGlhbGl6YXRpb24BVFN0b3JhZ2VJbml0aWFsaXphdGlvbggwT25Qb2xsU3RhdHVzAQCtCwQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAFhYY21UcmFuc2ZlckluaXRpYXRlZEF0AAA4BAAIuCBCbG9jayBudW1iZXIgd2hlbiBYQ00gdHJhbnNmZXIgd2FzIGluaXRpYXRlZC6AIFVzZWQgdG8gdHJhY2sgdHJhbnNmZXIgdGltZW91dC4AAAFxBwAAAAAAPAAAKFBlb3BsZUxpdGUBKFBlb3BsZUxpdGUUKExpdGVQZW9wbGUAAQQCBLELBAAAADhBbGlhc1RvQWNjb3VudAABBAJxAwQEAATgIENvbnZlcnNpb24gb2YgYSBsaXRlIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgRtAwQABOAgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzLgBsTGl0ZVBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQD0BAAE8CBXaGV0aGVyIHRoZSBsaXRlIHBlb3BsZSBtZW1iZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkLgBQQXR0ZXN0YXRpb25BbGxvd2FuY2UBAQQCBDgQAAAAAAQpASBOdW1iZXIgb2YgYXR0ZXN0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhIHZlcmlmaWVyIGFjY291bnQgaWQuAAElBQABdQcADEBMaXRlUmluZ0V4cG9uZW50RQUECQTMIFJpbmcgZXhwb25lbnQgdXNlZCBmb3IgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uAEhMaXRlT25ib2FyZGluZ1NpemU4EAMAAAAE/CBPbmJvYXJkaW5nIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgB0YWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2U4EFgCAAAELQEgVGhlIG51bWJlciBvZiBibG9ja3Mgb2YgdG9sZXJhbmNlIHdlIGFsbG93IGZvciBhbiBhbGlhcyBzZXR1cCB0cmFuc2FjdGlvbi4AAbkLAARQQXR0ZXN0YXRpb25TaWduYXR1cmVhBAhhASBTaWduYXR1cmUgZ2VuZXJhdGVkIGJ5IGxpdGUgcGVvcGxlIGFuZCB1c2VkIGJ5IHZlcmlmaWVycyB0byBjbGFpbSBhdHRlc3RhdGlvbnMgb24gdGhlaXIgIGJlaGFsZi4APgAAJFJlc291cmNlcwEkUmVzb3VyY2VzLCRDb25zdW1lcnMAAQQCBL0LBAAEKQEgQWNjb3VudHMgdXNlZCB0byBpZGVudGlmeSBjb25zdW1lcnMgbWFwcGVkIHRvIHRoZWlyIGNvbnN1bWVyIGluZm9ybWF0aW9uLgBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzAAEIBgLFC80LBAAUcQEgQWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgdGhyb3VnaCBhbiBhbm9ueW1vdXMgYWxsb3dhbmNlLCBwZXIgcGVyaW9kLgBhASBUaGUgcGVyaW9kIGtleSBpcyBhIGJpZy1lbmRpYW4gZW5jb2RlZCBkYXkgbnVtYmVyIChzZWNvbmRzIHNpbmNlIFVuaXggZXBvY2ggLyA4NjQwMCkgc29xASB0aGF0IGBJZGVudGl0eWAtaGFzaGVkIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIHRvIGJlIHJlbW92ZWQgYnkgdGhlRCBvZmZjaGFpbiB3b3JrZXIuAGxTdG10U3RvcmVBbGxvd2FuY2VCeUFjY291bnQAAQgCAtELEAQAFEEBIFJldmVyc2UgbG9va3VwIGZyb20gYSBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbGwgaXRzIGFjdGl2ZSBhbm9ueW1vdXMgYWxsb3dhbmNlcy4ARQEgS2V5ZWQgYnkgYChBY2NvdW50SWQsIChCaWdFbmRpYW5VMzIgcGVyaW9kLCB1MzIgc2VxLCBBbGlhcykpYCDihpIgYCgpYC4gTXVsdGlwbGVJASBlbnRyaWVzIHBlciBhY2NvdW50IGFyZSBwb3NzaWJsZSB3aGVuIHRoZSBzYW1lIHN0YXRlbWVudCBhY2NvdW50IGlzIGF1dGhvcml6ZWQgYnnMIGRpZmZlcmVudCBhbGlhc2VzIG9yIGFjcm9zcyBncmFjZS13aW5kb3cgb3ZlcmxhcHMuAIBGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uQnlBbGlhcwABBAII2QsEAAQpASBGcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gYnkgYW5vbnltb3VzIGFsaWFzIGluIGZyaWVuZCByZXF1ZXN0IGNvbnRleHQuAGxGcmllbmRSZXF1ZXN0QWxpYXNCeUFjY291bnQAAQQCBAgEAAQlASBSZXZlcnNlIGxvb2t1cCBmcm9tIGZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCBhY2NvdW50IHRvIGFub255bW91cyBhbGlhcy4AbFNwZW50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlcwABCAYCxQsQBAAgSQEgQWxpYXNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2UgaW4gYSBnaXZlbiBwZXJpb2QuAFkBIEtleWVkIGJ5IGAocGVyaW9kLCBhbGlhcylgLiBFYWNoIGNvdW50ZXIgdmFsdWUgaW4gdGhlIHByb29mIGNvbnRleHQgcHJvZHVjZXMgYSB1bmlxdWVdASBhbGlhcywgc28gYSBwZXJzb24gY2FuIGhhdmUgdXAgdG8gYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgZW50cmllcyBwZXIgcGVyaW9kLjUBIE9sZCBwZXJpb2RzIGNhbiBiZSBjbGVhbmVkIHVwIHZpYSBgY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzYC4AQQEgVGhlIHBlcmlvZCBrZXkgaXMgYEJpZ0VuZGlhblUzMmAgd2l0aCBgSWRlbnRpdHlgIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbuggY2hyb25vbG9naWNhbCBvcmRlciwgbWF0Y2hpbmcgYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuADxVc2VybmFtZU93bmVyT2YAAQQCbQQEBAAYcQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBgdXNlcm5hbWVgIHRvIHRoZSBgQWNjb3VudElkYCB0aGF0IGhhcyByZWdpc3RlcmVkIGl0LiBUaGUgYG93bmVyYCB2YWx1ZWUBIHNob3VsZCBiZSBhIGtleSBpbiB0aGUgYENvbnN1bWVyc2AgbWFwLiBUaGVyZSBjYW4gYmUgYXQgbW9zdCAyIHVzZXJuYW1lcyBwb2ludGluZyB0byB0aGU4IHNhbWUgYG93bmVyYDpxASAtIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnN1bWVyJ3MgbGl0ZSBwZXJzb24gaWRlbnRpdHkgLSB0aGlzIHdpbGwgYWx3YXlzIGJlIHByZXNlbnQ7WQEgLSBvcHRpb25hbGx5IGFub3RoZXIgdXNlcm5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25zdW1lcidzIGZ1bGwgcGVyc29uIGlkZW50aXR5LCBpZjggICBhcHBsaWNhYmxlLgA4QWNjb3VudE9mQWxpYXMAAQQCCAQEAARpASBSZXZlcnNlIGxvb2t1cCBmcm9tIHJlZ2lzdGVyZWQgYWxpYXNlcyB0byB0aGUgYEFjY291bnRJZGAgdXNlZCB0byByZWdpc3RlciBhcyBhIGNvbnN1bWVyLgBsVXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uAQAoIAAAAAAAAAAACFUBIFRoZSBhbW91bnQgb2YgdGltZSBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4gQWZ0ZXIgdGhpc9AgdGltZSBwZXJpb2QgZWxhcHNlcywgdGhlIHJlc2VydmF0aW9uIGNhbiBiZSB2b2lkZWQuAGBVc2VybmFtZVJlc2VydmF0aW9uUXVldWUAAQQCbQTdCwQACHEBIE1hcCBmcm9tIGEgcmVzZXJ2ZWQgYHVzZXJuYW1lYCB0byBhIHF1ZXVlIG9mIGBSZXNlcnZhdGlvblF1ZXVlRW50cnlgIGl0ZW1zLCBlYWNoIGhvbGRpbmcgYW5hASBhY2NvdW50IGFuZCB0aGUgdGltZXN0YW1wIHdoZW4gaXQgam9pbmVkLiBPbGQgcmVzZXJ2YXRpb25zIGNhbiBiZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJlc2VydmF0aW9uT2YAAQQCBG0EBAAIZQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiBhY2NvdW50IHRvIHRoZSB1c2VybmFtZSBpdCBoYXMgcmVzZXJ2ZWQuIEVhY2ggYWNjb3VudCBjYW4gaGF2ZSBhdJwgbW9zdCBvbmUgYWN0aXZlIHJlc2VydmF0aW9uIGF0IGEgdGltZS4AATUFAAF5BwBYRE1heFVzZXJuYW1lTGVuZ3RoOBAgAAAABC0BIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIHVzZXJuYW1lLCBpbmNsdWRpbmcgYW55IHBvdGVudGlhbCB0cmFpbGluZyBkaWdpdHMuAERNaW5Vc2VybmFtZUxlbmd0aDgQBgAAAASIIFRoZSBtaW5pbXVtIGxlbmd0aCBvZiBhIHVzZXJuYW1lLgBIUGVyc29uQXV0aER1cmF0aW9uOBAAowIADFUBIFRoZSBkdXJhdGlvbiBvZiB0aW1lLCBpbiBzZWNvbmRzLCBmb3Igd2hpY2ggYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGlzIHZhbGlkLiBBZnRlclEBIHRoaXMgcGVyaW9kIGVsYXBzZXMsIHBlb3BsZSB3aWxsIG5vIGxvbmdlciBiZSBjb25zaWRlcmVkIGFjdGl2ZSwgYnV0IHRoZWlyIHJlc291cmNlDQEgYWxsb3dhbmNlcyBzaG91bGQgZGVmYXVsdCB0byB0aGUgc2FtZSB2YWx1ZXMgdXNlZCBmb3IgbGl0ZSBwZW9wbGUuAGxNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWw4EIBRAQAIVQEgVGhlIG1pbmltdW0gaW50ZXJ2YWwgb2YgdGltZSwgaW4gc2Vjb25kcywgd2hpY2ggbXVzdCBwYXNzIGJlZm9yZSB1cGRhdGluZyBhIHBlcnNvbidzPCBhdXRob3JpemF0aW9uLgBkTWF4UmVzZXJ2YXRpb25RdWV1ZUxlbmd0aDgQCgAAAAQpASBNYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGF0IGNhbiBxdWV1ZSBmb3IgYSBzaW5nbGUgcmVzZXJ2ZWQgdXNlcm5hbWUuAFBBY2NvdW50c0FwaUFsbG93YW5jZekLIAIAAAAA0AcABNAgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIHRoZSBhY2NvdW50cyBBUEkuAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBzdGF0ZW1lbnQgc3RvcmUgc2xvdHMgYSBwZXJzb24gY2FuIGNsYWltIHdpdGhpbiBvbmUgcGVyaW9kLgBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kOBAKAAAAEE0BIE1heGltdW0gbnVtYmVyIG9mIHN0YXRlbWVudCBzdG9yZSBzbG90cyBhIGxpdGUgcGVyc29uIGNhbiBjbGFpbSB3aXRoaW4gb25lIHBlcmlvZC4ATQEgU2FtZSBzZW1hbnRpY3MgYXMgYFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kYCBidXQgYXBwbGllZCB3aGVuIHRoZSBwcm9vZiB0YXJnZXRzIHRoZfwgbGl0ZS1wZW9wbGUgY29sbGVjdGlvbiB2aWEgYE1lbWJlcnNoaXBDb2xsZWN0aW9uOjpMaXRlUGVvcGxlYC4AVFN0bXRTdG9yZUNsZWFudXBMaW1pdDgQMgAAAARZASBNYXhpbXVtIG51bWJlciBvZiBzdGFsZSBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGVudHJpZXMgdG8gcmVtb3ZlIHBlciBjbGVhbnVwIGNhbGwuAHBTdG10U3RvcmVSZXBsYWNlbWVudENvb2xkb3duOBA8AAAACDUBIE1pbmltdW0gdGltZSwgaW4gc2Vjb25kcywgdGhhdCBtdXN0IHBhc3MgYmVmb3JlIGFuIGFsaWFzIGNhbiByZXBsYWNlIGl0cyBvd27gIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgZW50cnkgd2l0aGluIHRoZSBzYW1lIHBlcmlvZC4AUFN0bXRTdG9yZUdyYWNlV2luZG93OBAAowIAEFUBIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCBzdGF0ZW1lbnQtc3RvcmUgYWxsb3dhbmNlcyBmcm9tIGFuIGVuZGVkIHBlcmlvZLggcmVtYWluIGFjdGl2ZSBiZWZvcmUgY2xlYW51cCBtYXkgcmV2b2tlIHRoZW0uACkBIEFmdGVyIHRoaXMgZWxhcHNlcywgdGhlIGFsbG93YW5jZXMgd2lsbCBldmVudHVhbGx5IGJlIGNsZWFuZWQgYnkgdGhlIE9DVy4AWEZyaWVuZFJlcXVlc3RBbGxvd2FuY2XpCyABAAAAACgAAAQlASBUaGUgU3RhdGVtZW50IFN0b3JlIGFsbG93YW5jZSBmb3IgZnJpZW5kIHJlcXVlc3Qgc3RhdGVtZW50IHJlZ2lzdHJhdGlvbi4AbEZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZAwEEBRJASBNYXhpbXVtIG51bWJlciBvZiBmcmllbmQgcmVxdWVzdHMgYSBwZXJzb24gY2FuIHNlbmQgd2l0aGluIG9uZSByYXRlLWxpbWl0IHBlcmlvZC4AVQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDhgLCBlYWNoIHBlcnNvbiBjYW4gc2VuZCB1cCB0byA4IGZyaWVuZCByZXF1ZXN0cyBkdXJpbmcgdGhlWQEgcGVyaW9kIHNlbGVjdGVkIGJ5IGBGcmllbmRSZXF1ZXN0UGVyaW9kRHVyYXRpb25gLiBXaGVuIHRoZSBwZXJpb2QgYWR2YW5jZXMsIHRoZSBzbG90cxwgcmVzZXQuAHxMaXRlRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kDAQIEF0BIE1heGltdW0gbnVtYmVyIG9mIGZyaWVuZCByZXF1ZXN0cyBhIGxpdGUgcGVyc29uIGNhbiBzZW5kIHdpdGhpbiBvbmUgcmF0ZS1saW1pdCBwZXJpb2QuAF0BIFNhbWUgc2VtYW50aWNzIGFzIGBGcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2RgIGJ1dCBhcHBsaWVkIHdoZW4gdGhlIHByb29mIHRhcmdldHMgdGhl/CBsaXRlLXBlb3BsZSBjb2xsZWN0aW9uIHZpYSBgTWVtYmVyc2hpcENvbGxlY3Rpb246OkxpdGVQZW9wbGVgLgBsRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uOBCAUQEAJA0BIFJvbGxpbmcgdGltZSB3aW5kb3cgZm9yIHJhdGUtbGltaXRpbmcgZnJpZW5kIHJlcXVlc3RzLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzqCBgbm93X3NlY3MgLyBGcmllbmRSZXF1ZXN0UGVyaW9kRHVyYXRpb25gLgBhASBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBgODZfNDAwYCAoMjQgaG91cnMpLCBwZXJpb2QgYDBgIGlzIHRoZSBmaXJzdCAyNCBob3VycyBzaW5jZSB0aGUZASBVbml4IGVwb2NoLCBwZXJpb2QgYDFgIGlzIHRoZSBuZXh0IDI0IGhvdXJzLCBhbmQgc28gb24uIENvbWJpbmVkIHdpdGhlASBgRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYCwgdGhpcyBkZWZpbmVzIGhvdyBtYW55IGZyaWVuZCByZXF1ZXN0cyBjYW4gYmUgc2VudCBpbiBlYWNoICBwZXJpb2QuAGBGcmllbmRSZXF1ZXN0R3JhY2VXaW5kb3c4EBAOAAAURQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBmcmllbmQgcmVxdWVzdCBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAGUBIFRoaXMgYWxsb3dzIHRyYW5zYWN0aW9ucyBjcmVhdGVkIGNsb3NlIHRvIGEgcGVyaW9kIGJvdW5kYXJ5IHRvIHN0aWxsIGJlIGluY2x1ZGVkIGV2ZW4gaWbUIHRoZXkgYXJlIGV4ZWN1dGVkIGp1c3QgYWZ0ZXIgdGhlIG5leHQgcGVyaW9kIGJlZ2lucy4AeEZyaWVuZFJlcXVlc3RSZXRlbnRpb25EdXJhdGlvbigggDoJAAAAAAAUYQEgRHVyYXRpb24gZm9yIHdoaWNoIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbnMgd2lsbCBiZSByZXRhaW5lZC4gU3BlY2lmaWVkIGluIHNlY29uZHMuACEBIEEgcmVnaXN0cmF0aW9uIGlzIGNyZWF0ZWQgZm9yIGEgc3BlY2lmaWMgcGVyaW9kLiBPbmNlIHRoaXMgcGVyaW9kIGVuZHMsIQEgdGhlIHJlZ2lzdHJhdGlvbiByZW1haW5zIHZhbGlkIGZvciB0aGUgY29uZmlndXJlZCBkdXJhdGlvbiwgYWZ0ZXIgd2hpY2jwIGl0IGNhbiBiZSBjbGVhbmVkIHVwLiBTZWUgYGZyaWVuZF9yZXF1ZXN0X2V4cGlyYXRpb25fdGltZWAuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOwgTnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluLXdvcmtlciBtYWludGVuYW5jZSBydW5zLgB0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb244EAB1EgAUBQEgVGhlIGR1cmF0aW9uIG9mIGEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1pbmcgcGVyaW9kLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzJQEgYG5vd19zZWNzIC8gTG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb25gLiBFYWNoIHBlcnNvbiBjYW4gc3VibWl0IHVwIHRv0CBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYCBjbGFpbXMgcGVyIHBlcmlvZC4AeExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZAwEZBAJASBNYXhpbXVtIG51bWJlciBvZiBsb25nLXRlcm0gc3RvcmFnZSBjbGFpbXMgcGVyIHBlcnNvbiBwZXIgcGVyaW9kLgBJASBFYWNoIGNsYWltIHVzZXMgYSBkaWZmZXJlbnQgY291bnRlciB2YWx1ZSAoMC4uY2xhaW1zX3Blcl9wZXJpb2QpIHdoaWNoIHByb2R1Y2VzIGEpASBkaXN0aW5jdCBhbGlhcyBpbiB0aGUgcHJvb2YgY29udGV4dCwgZW5zdXJpbmcgb25lIGNsYWltIHBlciBjb3VudGVyIHNsb3QuAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdzgQEA4AABBRASBFeHRyYSB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggdGhlIHByZXZpb3VzIGxvbmctdGVybSBzdG9yYWdlIHBlcmlvZCBpcyBzdGlsbGwgYWNjZXB0ZWQgYWZ0ZXIgYSByb2xsb3Zlci4AWQEgU2FtZSBzZW1hbnRpY3MgYXMgYEZyaWVuZFJlcXVlc3RHcmFjZVdpbmRvd2AgYnV0IGFwcGxpZWQgdG8gbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1zLgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0OBAUAAAAFEkBIE1heGltdW0gbnVtYmVyIG9mIHNwZW50IGxvbmctdGVybSBzdG9yYWdlIGFsaWFzZXMgdGhhdCBjYW4gYmUgY2xlYXJlZCBpbiBhIHNpbmdsZcAgYGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlc2AgY2FsbC4ATQEgQm91bmRzIHRoZSB3b3JzdC1jYXNlIHdlaWdodCBvZiB0aGUgY2xlYW51cCBleHRyaW5zaWM7IGNhbGxlcnMgbXVzdCBwYXNzIGEgYGxpbWl0YHAgbm8gZ3JlYXRlciB0aGFuIHRoaXMgdmFsdWUuAAHtCwAERE9mZmNoYWluU2lnbmF0dXJlYQQIUQEgU2lnbmF0dXJlIHR5cGUgZm9yIGVuc3VyaW5nIG93bmVyc2hpcCBvZiBwcm92aWRlZCBhY2NvdW50cyBpbiBjYXNlIG9mIHJlZ2lzdHJhdGlvbnM8IHRocm91Z2ggYWxpYXMuDCER4N8Z3pVjtYMB5ffgB0M3LT6mizpKqhipWKis1xpDZGN1cnJlbnRfc3RtdF9zdG9yZV9wZXJpb2QAOARRASBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgcGVyaW9kIChkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2gpLgAhEeDfGd6VY7WDAeX34AdDrMglyENevZ01vA216nYOlmxzdG10X3N0b3JlX3Nsb3RfY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxOAgQIQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCBjbGFpbSBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4APQEgTGF5b3V0OiBgU1NTX1NMT1Q6PHBlcmlvZCAoNCBieXRlcyBCRSk+PHNlcSAoNCBieXRlcyBCRSk+YCBwYWRkZWQgdG8gMzIgYnl0ZXMuACER4N8Z3pVjtYMB5ffgB0M9g9yLG6WKm3kHcWwZqWL3aGZyaWVuZF9yZXF1ZXN0X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcQwICCUBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgZnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGF0IHRoZSBnaXZlblAgYHBlcmlvZGAgYW5kIGBzZXFgLgA/AAA0Q2h1bmtzTWFuYWdlcgE0Q2h1bmtzTWFuYWdlcggYQ2h1bmtzAAEIBQXxC/ULBAAEGQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgY2h1bmtzIChSaW5nRXhwb25lbnQgLT4gUGFnZUluZGV4IC0+IENodW5rcykuADxDaHVua1BhZ2VIYXNoZXMAAQgFBfELCAQABIggVGhlIGhhc2ggZm9yIGVhY2ggcGFnZSBvZiBjaHVua3MuAAFBBQABfQcABCBQYWdlU2l6ZTgQ/wAAAATMIE51bWJlciBvZiBjaHVua3MgcGVyIHBhZ2UuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uAAEFDAAEFENodW5r/QsEcCBUaGUgdHlwZSBvZiBhIHNpbmdsZSBjaHVuay4AQAAAHE1lbWJlcnMBHE1lbWJlcnNELENvbGxlY3Rpb25zAAEEBggJDAQABOAgSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBjb2xsZWN0aW9uLCBrZXllZCBieSBpZGVudGlmaWVyLgBQU3VzcGVuZGVkQ29sbGVjdGlvbnMAAQQGCAkMBAAIIQEgQ29sbGVjdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbiBhbmQgYXJlIGJlaW5nIHByb2Nlc3NlZC5ZASBPbmNlIGEgY29sbGVjdGlvbiBpcyBtb3ZlZCBoZXJlLCBub3JtYWwgb3BlcmF0aW9ucyB3aWxsIGZhaWwgd2l0aCBDb2xsZWN0aW9uTm90Rm91bmQuADRJZGVudGlmaWVyc09mAAEEAg0MFQwEAATMIFRoZSBpZGVudGlmaWVycyBvZiBjb2xsZWN0aW9ucyBvd25lZCBieSBhbiBlbnRpdHkuABBSb290AAEIBgIZDB0MBAAEiCBUaGUgY3VycmVudCBtZW1iZXJzIHdlIHJlY29nbmlzZS4AIE9sZFJvb3RzAAEMBgYGKQwtDAQAJEEBIE9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBmb3IgYSBncmFjZSBwZXJpb2Qgc28gdGhhdCBwcm9vZnMgZ2VuZXJhdGVkIGFnYWluc3RlASBwcmV2aW91cyByZXZpc2lvbnMgcmVtYWluIHZhbGlkLiBFYWNoIHJvb3QgaW4gdGhlIG1hcCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBjb21wb3NpdGUga2V5LQEgYChjb2xsZWN0aW9uLCByaW5nIGluZGV4LCByaW5nIHJldmlzaW9uKWAuIEVudHJpZXMgY2FuIGJlIGNsZWFuZWQgdXAgYWZ0ZXIlASBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uYCBoYXMgcGFzc2VkIHNpbmNlIHRoZSBgYXJjaGl2ZWRfYXRgIHRpbWVzdGFtcC4AOQEgVGhpcyBzdG9yYWdlIGNhbiBjb250YWluIHNvbWUgcm9vdHMgZm9yIGRlbGV0ZWQgY29sbGVjdGlvbnMgb3IgcmVtb3ZlZCByaW5ncy5dASBUaGUgY2FsbCBgdmVyaWZ5X21lbWJlcnNoaXBfYXRfcmV2YCBhbmQgb3RoZXIgb3BlcmF0aW9uIHVzaW5nIG9sZCByb290cyBtdXN0IGNoZWNrIHRoZUEBIGV4aXN0ZW5jZSBvZiB0aGUgY29sbGVjdGlvbiBhbmQgdGhlIHJvb3QgaW4gb3JkZXIgdG8gbm90IHZhbGlkYXRlIGFnYWluc3QgZHVzdC7wIFRoZSBvbGQgcm9vdHMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHRoZSByZXRlbnRpb24gZHVyYXRpb24uAEBDdXJyZW50UmluZ0luZGV4AQEEBgg4EAAAAAAE5CBLZWVwcyB0cmFjayBvZiB0aGUgcmluZyBpbmRleCBjdXJyZW50bHkgYmVpbmcgcG9wdWxhdGVkLgA4T25ib2FyZGluZ1NpemUBAQQGCDgQAAAAAAT4IE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgcXVldWVkIGJlZm9yZSBvbmJvYXJkaW5nIHRvIGEgcmluZy4AIFJpbmdLZXlzAQEMBgIFMQw1DAQAEGEBIEJvdGggdGhlIGtleXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYnVpbHQgcmluZ3MgYW5kIHRoZSBrZXlzIHRoYXQgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZVkBIHJpbmdzLiBQYWdpbmF0ZWQgYnkgKElkZW50aWZpZXIsIFJpbmdJbmRleCwgUGFnZUluZGV4KSB3aGVyZSBlYWNoIHBhZ2UgY29udGFpbnMgdXAgdG91ASBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YCBrZXlzLiBUaGUgcGFnZSBzaXplIGVxdWFscyB0aGUgZmxleGlibGUgcmluZyBleHBvbmVudCdzIGNhcGFjaXR5LPQgZW5zdXJpbmcgRmxleGlibGUgY29sbGVjdGlvbnMgbmV2ZXIgbmVlZCBtb3JlIHRoYW4gb25lIHBhZ2UuADhSaW5nS2V5c1N0YXR1cwEBCAYCGQw5DCQAAAAAAAAAAAAIYQEgU3RvcmVzIHRoZSBtZXRhIGluZm9ybWF0aW9uIGZvciBlYWNoIHJpbmcsIHRoZSBudW1iZXIgb2Yga2V5cyBhbmQgaG93IG1hbnkgYXJlIGFjdHVhbGx5WCBpbmNsdWRlZCBpbiB0aGUgcm9vdC4ASFBlbmRpbmdTdXNwZW5zaW9ucwEBCAYFGQw9DAQADGkBIEEgbWFwIG9mIGFsbCByaW5ncyB3aGljaCBjdXJyZW50bHkgaGF2ZSBwZW5kaW5nIHN1c3BlbnNpb25zIGFuZCBuZWVkIGNsZWFuaW5nLCBhbG9uZyB3aXRoEQEgdGhlaXIgcmVzcGVjdGl2ZSBudW1iZXIgb2Ygc3VzcGVuZGVkIGtleXMgd2hpY2ggbmVlZCB0byBiZSByZW1vdmVkLm0BIE5vdGU6IEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHNpbmdsZS1wYWdlIHJpbmdzLCBzbyBib3VuZGVkIGJ5IGBSaW5nQ2FwYWNpdHlGcm9tRXhwb25lbnRgLgA0QWN0aXZlTWVtYmVycwEBBAYIOBAAAAAABNAgVGhlIG51bWJlciBvZiBtZW1iZXJzIGN1cnJlbnRseSBpbmNsdWRlZCBpbiBhIHJpbmcuABxNZW1iZXJzAAEIBgJBDEUMBAAYXQEgVGhlIGN1cnJlbnQgbWVtYmVycyBpbiBlYWNoIGNvbGxlY3Rpb24gKGVpdGhlciBpbmNsdWRlZCBpbiByaW5ncywgc3VzcGVuZGVkIGFuZCBxdWV1ZWQhASBmb3IgcmVtb3ZhbCBmcm9tIGEgcmluZywgc3VzcGVuZGVkIGFuZCBub3QgaW4gYW55IHJpbmcsIG9yIG9uYm9hcmRpbmcpLgANASBDb2xsZWN0aW9uIGlkZW50aWZpZXIgdG8gbWVtYmVyIHB1YmxpYyBrZXkgdG8gdGhlIG1lbWJlcidzIHN0YXR1cy4AqCBBIGtleSBjYW4gYmVsb25nIHRvIG11bHRpcGxlIGNvbGxlY3Rpb25zLgAoUmluZ3NTdGF0ZQEBBAYISQwEAAT8IFRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbCByaW5ncyBtYW5hZ2VkIGZvciBhIGdpdmVuIGlkZW50aWZpZXIuAChTdGFsZVJpbmdzAAEIBgUZDBAEAATMIFNldCBvZiByaW5ncyB3aGljaCBhcmUgc3RhbGUgYW5kIHJlcXVpcmUgYnVpbGRpbmcuAEBRdWV1ZVBhZ2VJbmRpY2VzAQEEBgi1ByAAAAAAAAAAAAQ5ASBLZWVwcyB0cmFjayBvZiB0aGUgcGFnZSBpbmRpY2VzIG9mIHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBvbmJvYXJkaW5nIHF1ZXVlLgA8T25ib2FyZGluZ1F1ZXVlAQEIBgUZDFEMBAAELQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgbWVtYmVyIHB1YmxpYyBrZXlzIHJlYWR5IHRvIGJlIGluY2x1ZGVkIGluIGEgcmluZy4ARFJpbmdEZWxldGlvblF1ZXVlAAEMBgUFMQwQBAAUmCBRdWV1ZSBvZiByaW5nIHBhZ2VzIHBlbmRpbmcgZGVsZXRpb24uABUBIFRoaXMgaXMgdXNlZCBib3RoIGJ5IGByZW1vdmVfcmluZ2AgKGluZGl2aWR1YWwgcmluZyBkZWxldGlvbikgYW5kIGJ5GQEgY29sbGVjdGlvbiBkZWxldGlvbi4gUmluZyBwYWdlcyBhcmUgcHJvY2Vzc2VkIGZyb20gdGhpcyBxdWV1ZSB2aWEgT0NXrCByZWdhcmRsZXNzIG9mIHdoaWNoIG9wZXJhdGlvbiBxdWV1ZWQgdGhlbS4AAVEFAAGBBwAYOE1heENvbGxlY3Rpb25zOBBkAAAABMQgTWF4aW11bSBudW1iZXIgb2YgY29sbGVjdGlvbnMgYW4gb3duZXIgY2FuIGhhdmUuAFxPbmJvYXJkaW5nUXVldWVQYWdlU2l6ZTgQ/wAAAAhNASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGluY2x1ZGVkIGluIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBiZWZvcmUgYSBuZXcgb25lIGlzJCBjcmVhdGVkLgBcTWF4RmxleGlibGVSaW5nRXhwb25lbnRFBQQJDF0BIFRoZSBtYXhpbXVtIHJpbmcgZXhwb25lbnQgdXNlZCBmb3IgRmxleGlibGUgY29sbGVjdGlvbnMuIFRoaXMgYWxzbyBkZXRlcm1pbmVzIHRoZSBwYWdlVQEgc2l6ZSBmb3IgcGFnaW5hdGVkIHJpbmcga2V5IHN0b3JhZ2UuIEZsZXhpYmxlIGNvbGxlY3Rpb25zIGNhbiBvbmx5IHVzZSByaW5nIHNpemVzIHVwPCB0byB0aGlzIHZhbHVlLgBcUmluZ0J1aWxkaW5nTWVtYmVyTGltaXQ4EGQAAAAIYQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBiZSBpbmNsdWRlZCBpbiBhIHJpbmcgdGhyb3VnaCBhIHNpbmdsZSByb290IGJ1aWxkaW5nGCBjYWxsLgBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uKCBYAgAAAAAAAAhRASBEdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgb2xkIHJpbmcgcm9vdHMgYXJlIHJldGFpbmVkIGJlZm9yZSB0aGV5IGNhbiBiZSBjbGVhbmVkIHVwLkkBIFRoaXMgYWxsb3dzIHByb29mcyBnZW5lcmF0ZWQgd2l0aCBvbGRlciByb290cyB0byByZW1haW4gdmFsaWQgZm9yIGEgZ3JhY2UgcGVyaW9kLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAAFVDAAEIExvY2F0aW9uBQEEOQEgTG9jYXRpb24gdHlwZSBmb3IgaWRlbnRpZnlpbmcgY29sbGVjdGlvbiBvd25lcnMgZnJvbSBvdGhlciBjaGFpbnMvcGFyYWNoYWlucy4AQwAAHENvaW5hZ2UBHENvaW5hZ2VAMENvaW5zQnlPd25lcgABBAUEmQMEABBAIENvaW5zIGJ5IG93bmVyLgBdASBUaGlzIHN0b3JhZ2UgbWFwIGNvbnRhaW5zIGFsbCB0aGUgY29pbnMgY3VycmVudGx5IGNpcmN1bGF0aW5nLiBUaGUgY29pbiBpcyBtaW50ZWQgd2hlbiUBIHVubG9hZGVkIGZyb20gdGhlIHJlY3ljbGVyLCBhbmQgZGVzdHJveWVkIHdoZW4gbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLgAsTG9ja2VkQ29pbnMAAQQFBFkMBAAQBQEgVGVtcG9yYXJ5IGxvY2sgZXhwaXJ5IGZvciBjb2lucyB0aGF0IHByZXZpb3VzbHkgZmFpbGVkIGRpc3BhdGNoLgBlASBBIGNvaW4gb3duZXIgZW50cnkgaXMgbG9ja2VkIHVudGlsIHRoZSBzdG9yZWQgVW5peCB0aW1lc3RhbXAsIHByZXZlbnRpbmcgcmVwZWF0ZWQgZmFpbGVklCBkaXNwYXRjaCBhdHRlbXB0cyBpbiBhIHNob3J0IHBlcmlvZC4AaFRvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zAQDwQAAAAAAAAAAAAAAAAAAAAAAUqCBUaGUgdG90YWwgdmFsdWUgb2YgY29pbnMgdGhhdCB3ZXJlIGJ1cm50LgBpASBUaGlzIHRyYWNrcyB2YWx1ZSB0aGF0IGlzIGludGVudGlvbmFsbHkgZGVzdHJveWVkIGFzIHBhcnQgb2YgcHJvdG9jb2wgZmxvd3MgKGZvciBleGFtcGxlOmUBIHJlY3ljbGVyIGV4cGlyYXRpb24gY2xlYW51cCBhbmQgb3V0cHV0LXRva2VuIHNwYW0gcGVuYWx0eSBwYXRoKS4gVGhpcyBzdG9yYWdlIGl0ZW0ga2VlcHPIIHRyYWNrIG9mIHRoZSB0b3RhbCB2YWx1ZSBvZiBzdWNoIGRlc3Ryb3llZCBjb2lucy4AYENvbnN1bWVkRnJlZVVubG9hZFRva2VucwABCAUFsQoQBAAYxCBDb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kIGFuZCBhbGlhcy4AVQEgVGhpcyBzdG9yYWdlIGtlZXBzIHRyYWNrIG9mIHRoZSBmcmVlIHVubG9hZCB0b2tlbnMgdGhhdCBoYXZlIGJlZW4gY29uc3VtZWQgYnkgcGVvcGxlrCBhbmQgbGl0ZSBwZW9wbGUsIHRvIGF2b2lkIGRvdWJsZSBzcGVuZGluZy4AcCBJdCBpcyBjbGVhcmVkIHBlcmlvZGljYWxseS4AZFJlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWQAAQQFnQMQBABIEQEgVHJhY2tzIHdoZXRoZXIgYSByZWN5Y2xlciBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBjb2luIHZhbHVlLgAxASBSZWN5Y2xlciBjb2xsZWN0aW9ucyBhcmUgbm9ybWFsbHkgY3JlYXRlZCBlYWdlcmx5IGR1cmluZyBvbmUtdGltZSBgb25fcG9sbGDcIGluaXRpYWxpemF0aW9uIGFmdGVyIGBVbmRlcmx5aW5nQXNzZXRJZGAgaGFzIGJlZW4gc2V0Lh0BIFtgUmVjeWNsZXJNYW5hZ2VyOjplbnN1cmVfY29sbGVjdGlvbl9leGlzdHNgXSByZW1haW5zIHRoZSBmYWxsYmFjayBmb3IBASBmaXJzdC11c2Ugb3IgcmVjb3ZlcnkgcGF0aHMgd2hlbiBhIGNvbGxlY3Rpb24gaXMgc3RpbGwgbWlzc2luZy4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHRSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleAABBAWdAzgEAEDEIExhc3QgcmVtb3ZlZCByaW5nIGluZGV4IHBlciByZWN5Y2xlciBjb2luIHZhbHVlLgBFASBSaW5ncyBhcmUgcmVtb3ZlZCBzZXF1ZW50aWFsbHkgc3RhcnRpbmcgZnJvbSBpbmRleCAwLiBUaGUgbmV4dCByaW5nIHRvIGNoZWNrIGZvci0BIGV4cGlyYXRpb24gaXMgYGxhc3RfcmVtb3ZlZCArIDFgIChvciBgMGAgaWYgbm90aGluZyBoYXMgYmVlbiByZW1vdmVkIHlldCkuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUmVjeWNsZXJzQ29pblRvUmVjeWNsZXIAAQQFCJ0DBABAEQEgTWFwcGluZyBmcm9tIGEgcmVjeWNsZXIgbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBiZWxvbmdzIHRvLgBNASBXaGVuIGEgY29pbiBpcyBsb2FkZWQgaW50byBhIHJlY3ljbGVyLCB0aGUgbWVtYmVyIGtleSBpcyByZWNvcmRlZCBoZXJlIHNvIHRoYXQgdGhlDQEgcGFsbGV0IGNhbiBsb29rIHVwIHdoaWNoIGNvaW4gdmFsdWUgdGhlIG1lbWJlciBrZXkgY29ycmVzcG9uZHMgdG8uAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBEUmVjeWNsZXJzVW5sb2FkZWQAAQwFBQVhDBAEAEA1ASBUaGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IChjb2luIHZhbHVlLCByaW5nIGluZGV4LCBhbGlhcykuAFUBIFdoZW4gYSBjb2luIGlzIHVubG9hZGVkIGZyb20gYSByZWN5Y2xlciwgdGhlIGFsaWFzIHByb2R1Y2VkIGJ5IHRoZSByaW5nLVZSRiBwcm9vZiBpcxkBIHN0b3JlZCBoZXJlIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIHdpdGhpbiB0aGUgc2FtZSByZWN5Y2xlciByaW5nLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AQFJlY3ljbGVyc0R1c3RpbmcAAQQFZQwQBABIBQEgTWFya3MgcmVjeWNsZXIgcmluZ3MgdGhhdCBoYXZlIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgAhASBXaGVuIGEgcmVjeWNsZXIgcmluZyBpcyByZW1vdmVkLCB0aGUgY2xlYW51cCBvZiBpdHMgdW5sb2FkZWQgYWxpYXNlcyBpblEBIFtSZWN5Y2xlcnNVbmxvYWRlZF0gaXMgcGVyZm9ybWVkIGdyYWR1YWxseSB0aHJvdWdoIHRoaXMgc3RvcmFnZSBpdGVtLiBBbiBlbnRyeSBoZXJlUQEgaW5kaWNhdGVzIHRoYXQgdW5sb2FkZWQgYWxpYXNlcyBmb3IgdGhlIGdpdmVuIGNvaW4gdmFsdWUgYW5kIHJpbmcgaW5kZXggc3RpbGwgZXhpc3RYIGFuZCBzaG91bGQgYmUgZHVzdGVkLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AWFBhaWRVbmxvYWRUb2tlbk1lbWJlcnMAAQQFCBAEADgJASBNYXBwaW5nIGZyb20gYSBwYWlkIHRva2VuIG1lbWJlciBrZXkgdG8gdGhlIHBlcmlvZCBpdCBiZWxvbmdzIHRvLgBFASBXaGVuIGEgdXNlciBwYXlzIGZvciBhIHJlY3ljbGVyIHVubG9hZCB0b2tlbiwgdGhlIG1lbWJlciBrZXkgaXMgcmVjb3JkZWQgaGVyZSBzbyEBIHRoYXQgdGhlIHBhbGxldCBjYW4gbG9vayB1cCB3aGljaCBwZXJpb2QgdGhlIG1lbWJlciBrZXkgY29ycmVzcG9uZHMgdG8uAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFxQYWlkVW5sb2FkVG9rZW5Db25zdW1lZAABDAYFBdULEAQAOPQgQ29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW5zIGJ5IHBlcmlvZCwgcmluZyBpbmRleCBhbmQgYWxpYXMuAEkBIFdoZW4gYSBwYWlkIHVubG9hZCB0b2tlbiBpcyBjb25zdW1lZCwgdGhlIGFsaWFzIHByb2R1Y2VkIGJ5IHRoZSByaW5nLVZSRiBwcm9vZiBpc/Qgc3RvcmVkIGhlcmUgdG8gcHJldmVudCBkb3VibGUtc3BlbmRpbmcgd2l0aGluIHRoZSBzYW1lIHJpbmcuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAGxQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWQAAQQGyQsQBAA4CQEgVHJhY2tzIHdoZXRoZXIgYSBwYWlkIHRva2VuIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGdpdmVuIHBlcmlvZC4AVQEgVXNlcyBgSWRlbnRpdHlgIGhhc2hlciBzbyB0aGF0IGl0ZXJhdGlvbiB5aWVsZHMgcGVyaW9kcyBpbiBvcmRlciwgZW5hYmxpbmcgZWZmaWNpZW50cCBjbGVhbnVwIG9mIGV4cGlyZWQgcGVyaW9kcy4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AWFBhaWRVbmxvYWRUb2tlbkR1c3RpbmcAAQQGyQsQBABALQEgTWFya3MgcGFpZCB1bmxvYWQgdG9rZW4gcGVyaW9kcyB0aGF0IGhhdmUgY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AWQEgV2hlbiBhIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb24gaXMgcmVtb3ZlZCwgdGhlIGNsZWFudXAgb2YgaXRzIGNvbnN1bWVkIHRva2VucyBpblUBIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gaXMgcGVyZm9ybWVkIGdyYWR1YWxseSB0aHJvdWdoIHRoaXMgc3RvcmFnZSBpdGVtLiBBbiBlbnRyeU0BIGhlcmUgaW5kaWNhdGVzIHRoYXQgY29uc3VtZWQgdG9rZW5zIGZvciB0aGUgZ2l2ZW4gcGVyaW9kIHN0aWxsIGV4aXN0IGFuZCBzaG91bGQgYmUgIGR1c3RlZC4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AeFBhaWRVbmxvYWRUb2tlbk5leHRSaW5nVG9DbGVhbgABBAbJCzgEAGD0IFRyYWNrcyB0aGUgbmV4dCByaW5nIGluZGV4IHRvIGNsZWFuIGZvciBlYWNoIGV4cGlyZWQgcGVyaW9kLgA1ASBVc2VkIGJ5IHRoZSBPQ1cgdG8gZGV0ZXJtaW5lIGNsZWFudXAgcHJvZ3Jlc3MgYW5kIGJ5IHRoZSBjb2xsZWN0aW9uIGRlbGV0aW9uxCBleHRyaW5zaWMgdG8gdmVyaWZ5IGFsbCByaW5ncyBoYXZlIGJlZW4gY2xlYW5lZC4APQEgUmluZ3MgYXJlIGNsZWFuZWQgc2VxdWVudGlhbGx5IChvbmUgcGVyIE9DVyBpbnRlcnZhbCkgcmF0aGVyIHRoYW4gYWxsIGF0IG9uY2UuPQEgVGhpcyBpcyBpbnRlbnRpb25hbDogYSBzaW5nbGUgc3RvcmFnZSBjdXJzb3IgZW5hYmxlcyBPKDEpIGNvbXBsZXRpb24gY2hlY2tzIGluzCBib3RoIFtgUGFpZFRrbk1hbmFnZXI6OmVuc3VyZV9jYW5fY2xlYW5fcmluZ2BdIGFuZEUBIFtgUGFpZFRrbk1hbmFnZXI6OmVuc3VyZV9jYW5fZGVsZXRlX2NvbGxlY3Rpb25gXS4gVGhlIGFsdGVybmF0aXZlIOKAlCBzdWJtaXR0aW5nVQEgYWxsIHJpbmcgY2xlYW5zIGluIHBhcmFsbGVsIOKAlCB3b3VsZCByZXF1aXJlIGZldGNoaW5nIHJpbmcgbWVtYmVycyB0byBjaGVjayB3aGV0aGVyTQEgZWFjaCByaW5nIHdhcyBhbHJlYWR5IGNsZWFuZWQgKHNpbmNlIGByaW5nX3N0YXR1c2Agc3RpbGwgcmVwb3J0cyBgdG90YWwgPiAwYCBhZnRlclUBIGNsZWFudXAgYmVjYXVzZSByaW5ncyBhcmUgbm90IHJlbW92ZWQgdW50aWwgY29sbGVjdGlvbiBkZWxldGlvbikuIENsZWFudXAgb2YgZXhwaXJlZE0BIGNvbGxlY3Rpb25zIGlzIG5vdCB0aW1lLWNyaXRpY2FsLCBzbyB0aGUgc2ltcGxlciBzZXF1ZW50aWFsIGFwcHJvYWNoIGlzIHByZWZlcnJlZC4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLh0BICogW1BhaWRVbmxvYWRUb2tlbk5leHRSaW5nVG9DbGVhbl0gLSBzZXF1ZW50aWFsIHJpbmcgY2xlYW51cCBwcm9ncmVzcy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFxJbml0aWFsaXplUGFsbGV0QWNjb3VudAAAEAQAGNAgV2hldGhlciB0aGUgb25lLXRpbWUgcGFsbGV0IGluaXRpYWxpemF0aW9uIGhhcyBydW4uAFkBIFNldCBieSBbYFBhbGxldDo6ZG9faW5pdGlhbGl6ZWBdIG9uY2UgcmVjeWNsZXIgY29sbGVjdGlvbnMgYXJlIGNyZWF0ZWQgYW5kIHRoZSBwYWxsZXQ9ASBhY2NvdW50IGhhcyBiZWVuIGVuc3VyZWQgdG8gaG9sZCB0aGUgbWluaW11bSBiYWxhbmNlIG9mIFtgVW5kZXJseWluZ0Fzc2V0SWRgXS5RASBJbml0aWFsaXphdGlvbiBpcyBnYXRlZCBvbiBgVW5kZXJseWluZ0Fzc2V0SWRgIGJlaW5nIHNldCwgc28gdGhpcyBzdGF5cyB1bnNldCB1bnRpbOwgZ292ZXJuYW5jZSBoYXMgY2FsbGVkIFtgUGFsbGV0OjpzZXRfdW5kZXJseWluZ19hc3NldF9pZGBdLgBEVW5kZXJseWluZ0Fzc2V0SWQAAAUBBAAYnCBUaGUgdW5kZXJseWluZyBhc3NldCBpZCBmb3IgdGhlIGNvaW5zLgDUIFNldCBvbmNlIGJ5IFtgQ29uZmlnOjpVbmRlcmx5aW5nQXNzZXRJZE1hbmFnZXJgXSB2aWFVASBbYFBhbGxldDo6c2V0X3VuZGVybHlpbmdfYXNzZXRfaWRgXS4gV2hpbGUgdW5zZXQsIGV2ZXJ5IGNvaW4vcmVjeWNsZXIgb3BlcmF0aW9uIHRoYXQNASBuZWVkcyB0aGUgdW5kZXJseWluZyBhc3NldCBmYWlscyB3aXRoIFtgRXJyb3I6OkFzc2V0SWROb3RTZXRgXSAob3IpASBbYEN1c3RvbUludmFsaWRpdHk6OkFzc2V0SWROb3RTZXRgXSBpbiB0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFsaWRhdGlvbikuAAFZBQABhQcAQFBSZWN5Y2xlclJpbmdFeHBvbmVudEUFBAoEsCBUaGUgcmluZyBleHBvbmVudCBmb3IgcmVjeWNsZXIgY29sbGVjdGlvbnMuAGxQYWlkVW5sb2FkVG9rZW5SaW5nRXhwb25lbnRFBQQKBNQgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb25zLgBMVW5kZXJseWluZ0Fzc2V0VW5pdPBAECcAAAAAAAAAAAAAAAAAAAS8IFRoZSB1bml0IG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG9mIHRoZSBjb2lucy4APE1pbmltdW1FeHBvbmVudJ0DBAAEpCBUaGUgbWluaW11bSBleHBvbmVudCBmb3IgdGhlIGNvaW4gdmFsdWUuADxNYXhpbXVtRXhwb25lbnSdAwQOBKQgVGhlIG1heGltdW0gZXhwb25lbnQgZm9yIHRoZSBjb2luIHZhbHVlLgCETWluaW11bUV4cG9uZW50Rm9yT3V0cHV0VW5sb2FkRmVlnQMEACBdASBUaGUgbWluaW11bSBjb2luIGV4cG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGF0Y2ggYSBjYWxsIGB1bmxvYWRfcmVjeWNsZXJfKmAgd2l0aNQgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLgBhASBUaGlzIGVuc3VyZXMgdGhlIGZlZSBjb2luIGlzIGxhcmdlIGVub3VnaCB0byBwZW5hbGl6ZSBmYWlsaW5nIHRyYW5zYWN0aW9ucywgYnV0IGl0IGRvZXO4IG5vdCBuZWVkIHRvIGNvdmVyIHRoZSB3aG9sZSB1bmxvYWQgdG9rZW4gZmVlLgBRASBUaGUgaGVscGVyIGZ1bmN0aW9uIGB3ZWlnaHRfZm9yX3VubG9hZF9yZWN5Y2xlcl9wYXlpbmdfdXNpbmdfb3V0cHV0YCBjYW4gYmUgdXNlZCB0b8wgZXZhbHVhdGUgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciB0aGlzIG9wZXJhdGlvbi4APE1heFNwbGl0T3V0cHV0czgQIAAAAASsIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvdXRwdXRzIGZvciBhIHNwbGl0LgBATWF4Q29uc29saWRhdGlvbjgQQAAAAATcIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGlhcyBwcm9vZnMgaW4gYSBjb25zb2xpZGF0aW9uLgBITWF4QmF0Y2hVbnBhaWRMb2FkOBAKAAAACLggVGhlIG1heGltdW0gbnVtYmVyIG9mIGlubmVyIGNhbGxzIGluIGEgc2luZ2xlDQEgW2BDYWxsOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoYF0gZGlzcGF0Y2guAJRVbmxvYWRUb2tlblRpbWVQZXJpb2RQZW9wbGVMaXRlUGVvcGxlOBCAUQEABOAgVGhlIHRpbWUgcGVyaW9kIGR1cmF0aW9uIGZvciB1bmxvYWQgdG9rZW5zLCBpbiBzZWNvbmRzLgCoVW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yUGVvcGxl8ECAhB4AAAAAAAAAAAAAAAAAFF0BIFRoZSBhbGxvd2FuY2Ugb2YgdW5sb2FkIHRva2VucyB0aGF0IGEgcGVyc29uIGNhbiB1c2UgcGVyIHRpbWUgcGVyaW9kLCBleHByZXNzZWQgaW4gdGhlSCB1bmRlcmx5aW5nIGFzc2V0LgBVASBVc2UgcGFsbGV0IHZpZXcgdG8gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mIHVubG9hZCB0b2tlbnMgZ2l2ZW4gdGhlIGN1cnJlbnRkIHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgC4VW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yTGl0ZVBlb3BsZfBAIKEHAAAAAAAAAAAAAAAAABRhASBUaGUgYWxsb3dhbmNlIG9mIHVubG9hZCB0b2tlbnMgdGhhdCBhIGxpdGUgcGVyc29uIGNhbiB1c2UgcGVyIHRpbWUgcGVyaW9kLCBleHByZXNzZWQgaW5YIHRoZSB1bmRlcmx5aW5nIGFzc2V0LgBZASBVc2UgcGFsbGV0J3MgZ2V0X2ZyZWVfdW5sb2FkX3Rva2VuX2luZm8oKSB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdW5sb2FkyCB0b2tlbnMgZ2l2ZW4gdGhlIGN1cnJlbnQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuAIBNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZDgQ6AMAABAZASBIYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIHBlciB0aW1lIHBlcmlvZC4AjCBUaGUgZWZmZWN0aXZlIGZyZWUgdG9rZW4gbGltaXQgaXM6CQEgYG1pbihhbGxvd2FuY2UgLyBjdXJyZW50X2ZlZSwgTWF4RnJlZVVubG9hZFRva2Vuc1BlclRpbWVQZXJpb2QpYC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAQAAAAE5CBUaGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgBUQ29pbkZhaWx1cmVMb2NrUGVyaW9kKCA8AAAAAAAAABBRASBUaGUgYmFzZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBsb2NrIGEgY29pbiBhZnRlciBhIGZhaWxlZCBkaXNwYXRjaCBpbiBgQXNDb2luYCBmbG93LgA9ASBUaGUgYWN0dWFsIGxvY2sgZHVyYXRpb24gaXMgZXhwb25lbnRpYWw6IGAyXnJldHJpZXMgKiBiYXNlYCB3aGVyZSBgcmV0cmllc2AgaXOQIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZmFpbHVyZXMuADhwYWxsZXRfYWNjb3VudASAbW9kbGNvaW5hZ2UgAAAAAAAAAAAAAAAAAAAAAAAAAAAEeCBUaGUgYWNjb3VudCBpZCBvZiB0aGUgcGFsbGV0LgABaQwAAER6wnEsinalKsO6EKKQIeyZ+S8k7m09V0l+jzxSYVxhYWhnZXRfZnJlZV91bmxvYWRfdG9rZW5faW5mbwBtDCRNASBHZXQgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZyZWUgdW5sb2FkIHRva2VucyBkaXN0cmlidXRlZCB0byBwZW9wbGUgYW5kIGxpdGUgcGVvcGxlrCBnaXZlbiB0aGUgY3VycmVudCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AXQEgSWYgYW4gZWxlbWVudCBpcyBgTm9uZWAsIG5vIHByaWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgYW5kIGNvbnZlcnNpb24gYmV0d2VlbiBuYXRpdmXEIGFuZCB0aGUgdW5kZXJseWluZyBhc3NldCBuZWVkcyB0byBiZSBjb25maWd1cmVkLgC4IFJldHVybnM6IGAobGltaXRfcGVvcGxlLCBsaW1pdF9saXRlX3Blb3BsZSlgLgDoIEVhY2ggZWxlbWVudCBpcyBgTm9uZWAgd2hlbiBpdHMgbGltaXQgY2Fubm90IGJlIGNvbXB1dGVkLgB6wnEsinalKsO6EKKQIeyZc90Zgp9pxJOe+stmiqyDq2BnZXRfcmVjeWNsZXJfcmluZ19zdGF0dXMIFHZhbHVlnQMUaW5kZXg4cQwE6CBHZXQgdGhlIHJpbmcgc3RhdHVzIGZvciBhIHJlY3ljbGVyIGF0IGEgZ2l2ZW4gcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmUjaWO2oVeqVUL69KqJbffJoZ2V0X3JlY3ljbGVyX3JpbmdfcmV2aXNpb24IFHZhbHVlnQMUaW5kZXg41ATwIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jm178aAmmvzawOuV/TGbASJaGdldF9wYWlkX3Rva2VuX3Jpbmdfc3RhdHVzCBhwZXJpb2Q4FGluZGV4OHEMBB0BIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmaD2wxD2qCqffHbvIH/9njVwZ2V0X3BhaWRfdG9rZW5fcmluZ19yZXZpc2lvbggYcGVyaW9kOBRpbmRleDjUBCUBIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZbrxV6ZzX4j5zJePs/NmbZohnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0ABkJEBEBIEdldCB0aGUgY3VycmVudCBmZWUgaW4gdGhlIHVuZGVybHlpbmcgYXNzZXQgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AXQEgSWYgbm9uZSBpcyByZXR1cm5lZCBpdCBtZWFucyB0aGF0IG5vIHByaWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUsIGFuZCBzb21lIGNvbnZlcnNpb24BASBiZXR3ZWVuIG5hdGl2ZSBhbmQgdGhlIHVuZGVybHlpbmcgYXNzZXQgbmVlZHMgdG8gYmUgY29uZmlndXJlZC4AesJxLIp2pSrDuhCikCHsmc69RKDPUdW6mU9sD+As6eqMZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9uYXRpdmUA8AQNASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSBuYXRpdmUgY3VycmVuY3kgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AesJxLIp2pSrDuhCikCHsmZ5ekF5ZqkCfsYBreJmmF4VEZ2V0X2NvaW5fYnlfb3duZXIEFG93bmVyBHUMBIQgR2V0IGNvaW4gZGV0YWlscyBmb3IgYW4gYWNjb3VudC4AesJxLIp2pSrDuhCikCHsmdqcFukkgqX3o5fxn/ykfxpMZ2V0X2NvaW5fbG9ja191bnRpbAQUb3duZXIEPQMMVQEgR2V0IHRoZSBVbml4IHRpbWVzdGFtcCB1bnRpbCB3aGljaCBhIGNvaW4gaXMgY3VycmVudGx5IGxvY2tlZCBhZnRlciBmYWlsZWQgZGlzcGF0Y2guAEkBIFJldHVybnMgYE5vbmVgIHdoZW4gdGhlcmUgaXMgbm8gbG9jayBvciB3aGVuIHRoZSBzdG9yZWQgbG9jayBoYXMgYWxyZWFkeSBleHBpcmVkLgB6wnEsinalKsO6EKKQIeyZZGMoqHl4CvwS4UJZYBFgUGBnZXRfcmVjeWNsZXJfbWVtYmVyX2luZm8EGG1lbWJlcgh5DATcIEdldCB0aGUgY29pbiB2YWx1ZSBmb3IgYSBzcGVjaWZpYyByZWN5Y2xlciBtZW1iZXIga2V5LgB6wnEsinalKsO6EKKQIeyZTyIHCkN80VRC5T6JoCpodFBpc19wYWlkX3Rva2VuX21lbWJlcgQYbWVtYmVyCPQE1CBDaGVjayB3aGV0aGVyIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IGlzIHJlZ2lzdGVyZWQuAHrCcSyKdqUqw7oQopAh7Jks9kdkITNhnX8ePLxduHs4UGdldF9yZWN5Y2xlcl9tZW1iZXJzCBR2YWx1ZZ0DFGluZGV4OHUECJAgR2V0IHRoZSBtZW1iZXJzIG9mIGEgcmVjeWNsZXIgcmluZy4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmfE4/CBo8j4A9lUO7c5iT2FsZ2V0X3BhaWRfdG9rZW5fcmluZ19tZW1iZXJzCBhwZXJpb2Q4FGluZGV4OHUECJggR2V0IHRoZSBtZW1iZXJzIG9mIGEgcGFpZCB0b2tlbiByaW5nLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZBdqoOiIxhWluJeyB5LJ8hmhpc19yZWN5Y2xlcl9hbGlhc191bmxvYWRlZAwUdmFsdWWdAxRpbmRleDgUYWxpYXMI9Az0IENoZWNrIGlmIGEgcmVjeWNsZXIgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1bmxvYWRlZCAoc3BlbnQpLgDwIElmIHRoZSByZWN5Y2xlciBpcyBub3QgbGl2ZSwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JkujYsqm8QIyFrkoAWIV9CPcGlzX3BhaWRfdG9rZW5fYWxpYXNfY29uc3VtZWQMGHBlcmlvZDgUaW5kZXg4FGFsaWFzCPQMwCBDaGVjayBpZiBhIHBhaWQgdW5sb2FkIHRva2VuIGhhcyBiZWVuIGNvbnN1bWVkLgD0IElmIHRoZSBwZXJpb2QgaXMgbm90IGN1cnJlbnQsIHRoZSByZXN1bHQgaXMgbm90IHNpZ25pZmljYW50LgB6wnEsinalKsO6EKKQIeyZvxLQeog2HQ71NeyLXBnl03Bpc19mcmVlX3Rva2VuX2FsaWFzX2NvbnN1bWVkCBhwZXJpb2Q4FGFsaWFzCPQMwCBDaGVjayBpZiBhIGZyZWUgdW5sb2FkIHRva2VuIGhhcyBiZWVuIGNvbnN1bWVkLgD0IElmIHRoZSBwZXJpb2QgaXMgbm90IGN1cnJlbnQsIHRoZSByZXN1bHQgaXMgbm90IHNpZ25pZmljYW50LgB6wnEsinalKsO6EKKQIeyZkbMvLrwfK/nelcpCWd24xbh3ZWlnaHRfZm9yX3VubG9hZF9yZWN5Y2xlcl9wYXlpbmdfdXNpbmdfb3V0cHV0AAECFDEBIEdldCB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgZm9yIGEgdHJhbnNhY3Rpb24gdXNpbmcgb3V0cHV0LWJhc2VkIGZlZSBwYXltZW50LgApASBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG1heGltdW0gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbnMgZGlzcGF0Y2hlZCB3aXRoVQEgYEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0YCwgdXNlZnVsIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb24gdG8gZmluZCBhIGdvb2QgdmFsdWUgZm9ylCBgTWluaW11bUV4cG9uZW50Rm9yT3V0cHV0VW5sb2FkRmVlYC4ARAAAPE1lbWJlcnNOb3RpZmllcgE8TWVtYmVyc05vdGlmaWVyMCxTdWJzY3JpYmVycwABBAacfQwEAARBASBTdWJzY3JpYmVyIHJlZ2lzdHJ5IHdpdGggdGhlaXIgc3Vic2NyaWJlZCBjb2xsZWN0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gc3RhdGUuAFRDb3VudGVyRm9yU3Vic2NyaWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABMU2VhbGVkQmF0Y2hTZXF1ZW5jZQEAKCAAAAAAAAAAAAyIIFNlcXVlbmNlIG51bWJlciBmb3Igc2VhbGVkIGJhdGNoLvQgSW5jcmVtZW50ZWQgd2hlbiBhIGJhdGNoIGlzIHNlYWxlZCAtIHJlYWR5IGZvciBkaXN0cmlidXRpb24u8CBTZXJ2ZXMgYXMgdGhlIGJhdGNoIGlkZW50aWZpZXIgZm9yIHJlcGxheSBhbmQgZGlzdHJpYnV0aW9uLgAkUGFnZVN0YXRlAQCBDCAAAAAAAAAAAATwIFBhZ2luZyBzdGF0ZTogd3JpdGUgcGFnZSwgc2VuZCBwYWdlLCBhbmQgbGFzdCB1cGRhdGUgYmxvY2suADhQZW5kaW5nVXBkYXRlcwABDAYGBoUMEAQADHwgQ2hhbmdlZCByaW5nIHJvb3Qga2V5cywgcGFnZWQuMQEgS2V5OiAocGFnZV9pbmRleCwgaWRlbnRpZmllciwgcmluZ19pbmRleCkuIFBvcHVsYXRlZCBieSBgT25SaW5nUm9vdENoYW5nZWAsOQEgY29uc3VtZWQgYnkgYGVucXVldWVfdXBkYXRlc2Agb25lIHBhZ2UgYXQgYSB0aW1lIGZyb20gYFBhZ2VTdGF0ZTo6c2VuZF9wYWdlYC4AQFBhZ2VVcGRhdGVzQ291bnQBAQQGVQM4EAAAAAAEtCBQZXItcGFnZSBjb3VudCBvZiBlbnRyaWVzIGluIFBlbmRpbmdVcGRhdGVzLgAsUGVuZGluZ0luaXQAAQQGnIkMBAAEvCBTdGF0ZSBmb3IgcGFnaW5hdGVkIHN1YnNjcmliZXIgaW5pdGlhbGl6YXRpb24uAFRDb3VudGVyRm9yUGVuZGluZ0luaXQBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABIU2VhbGVkQmF0Y2hJbmRpY2VzAAEEBgitBQQABNwgSW5kaWNlcyBwZXIgY29sbGVjdGlvbiBmb3IgdGhlIHNlYWxlZCAoY3VycmVudCkgYmF0Y2guADBDdXJyZW50QmF0Y2gAAI0MBAAEiCBDdXJyZW50IGJhdGNoIGRpc3RyaWJ1dGlvbiBzdGF0ZS4AbFN1YnNjcmliZXJzV2l0aEN1cnJlbnRCYXRjaAABBAacEAQABOggVHJhY2tzIHdoaWNoIHN1YnNjcmliZXJzIGhhdmUgcmVjZWl2ZWQgdGhlIGN1cnJlbnQgYmF0Y2guADhMYXN0UmVwbGF5VGltZQABCAYGkQwoBAAI0CBMYXN0IHJlcGxheSB0aW1lIHBlciAoc3Vic2NyaWJlciwgY29sbGVjdGlvbikgcGFpci7QIFVzZWQgdG8gZW5mb3JjZSBhIGNvb2xkb3duIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzLgABmQUAAYkHACg4TWF4U3Vic2NyaWJlcnM4EAoAAAAEnCBNYXhpbXVtIG51bWJlciBvZiBzdWJzY3JpYmVycyBhbGxvd2VkLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAABGwgTWF4aW11bSB1cGRhdGVzIHBlciBiYXRjaC4AbE1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcjgQAwAAAATMIE1heGltdW0gY29sbGVjdGlvbnMgYSBzdWJzY3JpYmVyIGNhbiBzdWJzY3JpYmUgdG8uADhNYXhDb2xsZWN0aW9uczgQZAAAAASQIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMuAExVcGRhdGVUcmlnZ2VyQmxvY2tzOBABAAAABMQgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gdXBkYXRlIGJhdGNoZXMuAFhVcGRhdGVUcmlnZ2VyVGhyZXNob2xkOBABAAAABOwgTWluaW11bSBudW1iZXIgb2YgdXBkYXRlcyB0byB0cmlnZ2VyIGltbWVkaWF0ZSBiYXRjaCBzZW5kLgBkUmVxdWVzdFJlcGxheVJlbW90ZVdlaWdodAECDEGcAAQlASBQZXItaW5kZXggd2VpZ2h0IHN1cmNoYXJnZSBmb3IgcmVtb3RlIGV4ZWN1dGlvbiBvbiB0aGUgc3Vic2NyaWJlciBjaGFpbi4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE3CBNaW5pbXVtIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgcnVucy4ARFN0dWNrQmF0Y2hUaW1lb3V0OBBkAAAABOQgTnVtYmVyIG9mIGJsb2NrcyBhZnRlciB3aGljaCBhIHN0dWNrIGJhdGNoIGlzIGFiYW5kb25lZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAEWQEgQ29vbGRvd24sIGluIHNlY29uZHMsIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBzdWJzY3JpYmVyIGFuZCBjb2xsZWN0aW9uLgABlQwAAABFAAAcQWlyZHJvcAEcQWlyZHJvcBgYRXZlbnRzAAEEBQiZDAQABNggUmVnaXN0ZXJlZCBhaXJkcm9wIGV2ZW50cywga2V5ZWQgYnkgdGhlaXIgaWRlbnRpZmllci4AOEFjdGlvblNjaGVkdWxlAAEIBgahDBAEAAhdASBQZW5kaW5nIGxpZmVjeWNsZSBhY3Rpb25zIGZvciByZWdpc3RlcmVkIGV2ZW50cywgb3JkZXJlZCBieSB0aGUgdGltZXN0YW1wIGF0IHdoaWNoIHRoZWggYWN0aW9uIHNob3VsZCB0YWtlIHBsYWNlLgA0UmVnaXN0cmF0aW9ucwABCAUGqQyVBwQACA0BIFBlci1ldmVudCBwYXJ0aWNpcGFudCByZWdpc3RyYXRpb25zLCBrZXllZCBieSAzMi1ieXRlIGVudHJvcHkgc2xvdJggaW4gYmlnLWVuZGlhbiBvcmRlciB1bmRlciBgSWRlbnRpdHlgLgAcV2lubmVycwABCAUCrQyRBwQACHEBIFdpbm5lcnMgZm9yIGFuIGV2ZW50LCBrZXllZCBieSB0aGUgZXZlbnQgaWRlbnRpZmllciBhbmQgdGhlaXIgcmVnaXN0cmF0aW9uIGVudHJ5LiBUaGlzIG1hcHPoIHRvIHRoZSBwYXJ0aWNpcGFudCdzIHRpY2tldCBmb3Igb2ZmY2hhaW4gbG9va3VwIHB1cnBvc2VzLgAwRXZlbnRFbnRyb3B5AAEEBQiRBwQACF0BIEVudHJvcHkgc2VlZCBjYXB0dXJlZCBhdCBkcmF3IHRpbWUsIHBlciBldmVudC4gVGhpcyBzZXJ2ZXMgYXMgYSBwYXJ0aXRpb24gcG9pbnQgaW4gdGhl8CBwYXJ0aWNpcGF0aW9uIHRpY2tldCBvcmRlcmVkIGxpc3QgaW4gb3JkZXIgdG8gcGljayB3aW5uZXJzLgA8U3VwcG9ydGVkQXNzZXRzAAEEBQUB8AQAEGUBIFBlci1hc3NldCBlbmFibGVtZW50IGdhdGUuIEFuIGFzc2V0IGlzIHVzYWJsZSBmb3Igc2NoZWR1bGluZyBldmVudHMgaWZmIGl0IGlzIHByZXNlbnQgaW5lASB0aGlzIG1hcDsgdGhlIHN0b3JlZCB2YWx1ZSBpcyB0aGUgYW1vdW50IHRoZSBwYWxsZXQgdHJhbnNmZXJyZWQgaW50byBpdHMgcG90IHRvIGtlZXAgdGhlVQEgcG90J3MgYXNzZXQgYWNjb3VudCBhbGl2ZSAodGhlIGFzc2V0J3MgRUQgYXQgdGhlIHRpbWUgb2YgZW5hYmxpbmcpLiBgZW5hYmxlX2Fzc2V0YCAvyCBgZGlzYWJsZV9hc3NldGAgYXJlIHRoZSBvbmx5IHdheXMgdG8gbXV0YXRlIHRoaXMuAAGxBQABjQcAFCBQYWxsZXRJZEEJIHBvcC9hZHJwBMAgUGFsbGV0IGlkIHVzZWQgdG8gZGVyaXZlIHRoZSBwcml6ZSBwb3QgYWNjb3VudC4AKENsZWFyTGltaXQ4EGQAAAAI1CBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RyYXRpb24gZW50cmllcyBwcm9jZXNzZWQgcGVy6CBgY2xlYW5fdXBfe3JlZ2lzdHJhdGlvbnMsd2lubmVyc31fYXV0aG9yaXplZGAgaW52b2NhdGlvbi4AJERyYXdMaW1pdDgQZAAAAAQxASBNYXhpbXVtIG51bWJlciBvZiB3aW5uZXIgc2xvdHMgaW5zZXJ0ZWQgcGVyIGBkcmF3X3dpbm5lcnNfYXV0aG9yaXplZGAgY2FsbC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE2CBIb3cgZnJlcXVlbnRseSB0aGUgb2ZmY2hhaW4gd29ya2VyIGZpcmVzIChpbiBibG9ja3MpLgA4YWlyZHJvcF9wb3RfaWQEgG1vZGxwb3AvYWRycAAAAAAAAAAAAAAAAAAAAAAAAAAABHQgQWNjb3VudCBpZCBvZiB0aGUgcHJpemUgcG90LgABsQwAAABGAAAYSG9ub3VyARhIb25vdXIMGFBvaW50cwABBAIItQwEABCYIFBvaW50cyB0aGF0IGhhdmUgYmVlbiB1c2VkIGJ5IHZvdGVycy4AdQEgUmVjb3JkcyBpbiBbYFBvaW50c2BdIHRyYWNrIHVzZWQgcG9pbnRzIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIGFuZCBlbmZvcmNlIHJhdGUtbGltaXRpbmd4IGJhc2VkIG9uIHRoZSBsYXN0IHVzYWdlIHRpbWUuABRWb3RlcwABBAIIEAQAEHwgVm90ZXMgdGhhdCBoYXZlIGJlZW4gYmVzdG93ZWQuAFUBIFByZXZlbnRzIGRvdWJsZS12b3Rpbmcgb24gdGhlIHNhbWUgc3ViamVjdCBieSB0aGUgc2FtZSB2b3RlciwgYXMgW2BTdWJqZWN0QWxpYXNgXSBpc9AgdW5pcXVlbHkgZGVyaXZlZCBmcm9tIFtgU3ViamVjdElkYF0gZm9yIGVhY2ggdm90ZXIuABRUYWxseQABBAIInQcEAAQxASBBYnNvbHV0ZSBob25vdXIgc2NvcmUgb2YgYSBzdWJqZWN0LiBJbml0aWFsaXplZCB0byAtMSB0byBvZmZzZXQgc2VsZi12b3Rlcy4AAbkFAAGZBwAITFBvaW50RnJlZXplRHVyYXRpb24oIIBRAQAAAAAABAUBIER1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBtdXN0IHBhc3MgYmVmb3JlIGEgcG9pbnQgY2FuIGJlIHJldXNlZC4ANENhbGxNb3J0YWxpdHkoICwBAAAAAAAABD0BIER1cmF0aW9uIGluIHNlY29uZHMgYSBgYmVzdG93YCBjYWxsIHJlbWFpbnMgdmFsaWQgYWZ0ZXIgaXRzIGBjYWxsX3ZhbGlkX2Zyb21gLgABuQwAAABHAAAQU3VkbwEQU3VkbwQMS2V5AAAEBAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgABxQUAAaEHAAABvQwABCxSdW50aW1lQ2FsbCAESCBBIHN1ZG8tYWJsZSBjYWxsLgD/AAAIBAUAIGEEBABcAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcWEF1dGhvcml6ZVZhbHVlVHJhbnNmZXLJBRBQVmVyaWZ5TXVsdGlTaWduYXR1cmXRBRAgQXNQZXJzb27VBRBcQXNQcm9vZk9mSW5rUGFydGljaXBhbnThBRBIU2NvcmVBc1BhcnRpY2lwYW507QUQNEdhbWVBc0ludml0ZWT5BRA4UGVvcGxlTGl0ZUF1dGgFBhAgQXNNZW1iZXIRBhAkQXNDb2luYWdlHQYQLEFzUmVzb3VyY2VzMQYQKEhvbm91ckF1dGg9BhA0QXV0aG9yaXplQ2FsbEkGEDxSZXN0cmljdE9yaWdpbnNNBhBIQ2hlY2tOb25aZXJvU2VuZGVyUQYQQENoZWNrU3BlY1ZlcnNpb25VBjg4Q2hlY2tUeFZlcnNpb25ZBjgwQ2hlY2tHZW5lc2lzXQY8OENoZWNrTW9ydGFsaXR5YQY8KENoZWNrTm9uY2VpBhAsQ2hlY2tXZWlnaHRtBhBQQ2hhcmdlQXNzZXRUeFBheW1lbnRxBhBEQ2hlY2tNZXRhZGF0YUhhc2h1BlUFUFN0b3JhZ2VXZWlnaHRSZWNsYWltEBBgHEF1cmFBcGkINHNsb3RfZHVyYXRpb24AwQwMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAHEJBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkETHJlbGF5X3BhcmVudF9vZmZzZXQAOAT0IEZldGNoIHRoZSBzbG90IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgAQBQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuLgBpASBBIGxhcmdlciBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2YgdGhlIHJlbGF5IGNoYWluLDEBIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSBydW50aW1lLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g8EHNsb3R1CfQoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAOEHBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrxQwQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJc0QwEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEA1QwEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uONkMEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zAI0EDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2lj/QfdDBBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudO0MDQgEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrxQwQZGF0Ye0M/QwEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZQENCHR4/QcoYmxvY2tfaGFzaDwFDSRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVk5A0NHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBgRDQyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWQdDRRpbnB1dBghDQR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHT9BwxsZW44KQ0AAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0/QcMbGVuOC0NAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0AQLwAABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOPAAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjgpDQRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjgtDQS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQBAvAEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg48AQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uODkNFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2XBAUUNFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodAECFGFzc2V0OQNJDRjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9udQEcbWVzc2FnZcEBIGFzc2V0X2lkOQNNDShgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW5ZAxBjYWxsIExyZXN1bHRfeGNtc192ZXJzaW9uOFENBEQgRHJ5IHJ1biBjYWxsIFYyLgAsZHJ5X3J1bl94Y20IPG9yaWdpbl9sb2NhdGlvbnUBDHhjbQkDfQ0EUCBEcnkgcnVuIFhDTSBwcm9ncmFtACSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS4IAFBMb2NhdGlvblRvQWNjb3VudEFwaQRAY29udmVydF9sb2NhdGlvbgQgbG9jYXRpb251AYUNBJAgQ29udmVydHMgYExvY2F0aW9uYCB0byBgQWNjb3VudElkYC4ABA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLgQAPFRydXN0ZWRRdWVyeUFwaQhIaXNfdHJ1c3RlZF9yZXNlcnZlCBRhc3NldI0NIGxvY2F0aW9udQGRDRTwIFJldHVybnMgaWYgdGhlIGxvY2F0aW9uIGlzIGEgdHJ1c3RlZCByZXNlcnZlIGZvciB0aGUgYXNzZXQuADAgIyBBcmd1bWVudHN0ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0YC6MICogYGxvY2F0aW9uYDogYFZlcnNpb25lZExvY2F0aW9uYC4AVGlzX3RydXN0ZWRfdGVsZXBvcnRlcggUYXNzZXSNDSBsb2NhdGlvbnUBkQ0U4CBSZXR1cm5zIGlmIHRoZSBhc3NldCBjYW4gYmUgdGVsZXBvcnRlZCB0byB0aGUgbG9jYXRpb24uADAgIyBBcmd1bWVudHN0ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0YC6MICogYGxvY2F0aW9uYDogYFZlcnNpb25lZExvY2F0aW9uYC4ABOwgQVBJIGZvciBxdWVyeWluZyB0cnVzdGVkIHJlc2VydmVzIGFuZCB0cnVzdGVkIHRlbGVwb3J0ZXJzLgQAVEF1dGhvcml6ZWRBbGlhc2Vyc0FwaQhMYXV0aG9yaXplZF9hbGlhc2VycwQYdGFyZ2V0dQGZDQT0IFJldHVybnMgbG9jYXRpb25zIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgBMaXNfYXV0aG9yaXplZF9hbGlhcwgYb3JpZ2ludQEYdGFyZ2V0dQGhDQQdASBSZXR1cm5zIHdoZXRoZXIgYG9yaWdpbmAgaXMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAASgIEFQSSBmb3IgcXVlcnlpbmcgWENNIGF1dGhvcml6ZWQgYWxpYXNlcwQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcpQ0QnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBAAoTW9iUnVsZUFwaQQgdm90ZWRfb24IFHZvdGVyCCRkb25lX29ubHn0jQQMWQEgUmV0dXJucyBhIGxpc3Qgb2YgY2FzZXMgd2hlcmUgdGhlIHVzZXIgaGFzIGEgdm90ZSBzdG9yZWQgb24gY2hhaW4uIElmIHRoZSBgZG9uZV9vbmx5YFUBIGZsYWcgaXMgc2V0LCBvbmx5IGNhc2VzIHRoYXQgYXJlIGRvbmUgYW5kIHJlYWR5IHRvIGJlIGNsYWltZWQgd2lsbCBiZSByZXR1cm5lZC4gVGhpcwUBIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB2b3RlIGludG8gYWNjb3VudC4ABLQgVGhlIEFQSSB0byBxdWVyeSB0aGUgcmV3YXJkcyBmb3IgbW9iIGNyZWRpdC4EADRQcm9vZk9mSW5rQXBpBERjYW5kaWRhY3lfZGVwb3NpdADwBNQgUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gYmVjb21lIGEgY2FuZGlkYXRlLgAE7CBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBhIHByb29mIG9mIGluayBjYW5kaWRhY3kuBAA0UGFsbGV0R2FtZUFwaQQwcGxheV9kZXBvc2l0APAEuCBSZXR1cm5zIHRoZSBkZXBvc2l0IG5lY2Vzc2FyeSB0byBwbGF5IGEgZ2FtZS4ABKwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgZ2FtZXBsYXkuBAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGLENKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWS1DeQ4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgBVASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RhASBleGlzdC4gUmV0dXJuZWQgYFZlYzx1OD5gIGNvbnRhaW5zIGJ5dGVzIG9mIEpTT04gYmxvYiAocGF0Y2gpIHdoaWNoIGNvbXByaXNlcyBhIGxpc3Qgb2ZNASAocG90ZW50aWFsbHkgbmVzdGVkKSBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIGN1c3RvbWl6aW5nIHRoZSBkZWZhdWx0ZQEgcnVudGltZSBnZW5lc2lzIGNvbmZpZy4gVGhlIHBhdGNoIHNoYWxsIGJlIG1lcmdlZCAocmZjNzM4Nikgd2l0aCB0aGUgSlNPTiByZXByZXNlbnRhdGlvbmEBIG9mIHRoZSBkZWZhdWx0IGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBnZW5lc2lzIGNvbmZpZyB0aGF0IGNhboQgYmUgdXNlZCBpbiBgYnVpbGRfc3RhdGVgIG1ldGhvZC4AMHByZXNldF9uYW1lcwC5DRBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4ABPAgQVBJIHRvIGludGVyYWN0IHdpdGggYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmb3IgdGhlIHJ1bnRpbWUEACCVBr0NAA==";
|
|
2
|
+
|
|
3
|
+
export { binMeta as default };
|