@parity/product-sdk-descriptors 0.9.0 → 0.11.0
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/chains/paseo-asset-hub/.papi/polkadot-api.json +2 -2
- package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +778 -205
- package/chains/paseo-asset-hub/generated/dist/descriptors-D_6q-TZg.js +25 -0
- package/chains/paseo-asset-hub/generated/dist/index.js +5 -5
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-uABbUf26.js +3 -0
- package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +636 -95
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BDERNxN0.js +3 -0
- package/chains/paseo-individuality/.papi/polkadot-api.json +2 -2
- package/chains/paseo-individuality/generated/dist/common-types.d.ts +907 -346
- package/chains/paseo-individuality/generated/dist/descriptors-BV8FuMxu.js +25 -0
- package/chains/paseo-individuality/generated/dist/index.js +5 -5
- package/chains/paseo-individuality/generated/dist/metadataTypes-4OzMJJMF.js +3 -0
- package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +957 -327
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Be34mrmF.js +3 -0
- package/chains/previewnet-asset-hub/.papi/polkadot-api.json +12 -0
- package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +17591 -0
- package/chains/previewnet-asset-hub/generated/dist/common.d.ts +1 -0
- package/chains/previewnet-asset-hub/generated/dist/descriptors-D499B54L.js +25 -0
- package/chains/previewnet-asset-hub/generated/dist/descriptors.d.ts +1 -0
- package/chains/previewnet-asset-hub/generated/dist/index.d.ts +10 -0
- package/chains/previewnet-asset-hub/generated/dist/index.js +116 -0
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CKCAKys8.js +3 -0
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +16973 -0
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CPJf2_Ma.js +3 -0
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata.d.ts +2 -0
- package/chains/previewnet-bulletin/.papi/polkadot-api.json +12 -0
- package/chains/previewnet-bulletin/generated/dist/common-types.d.ts +4578 -0
- package/chains/previewnet-bulletin/generated/dist/common.d.ts +1 -0
- package/chains/previewnet-bulletin/generated/dist/descriptors-llFxDL--.js +25 -0
- package/chains/previewnet-bulletin/generated/dist/descriptors.d.ts +1 -0
- package/chains/previewnet-bulletin/generated/dist/index.d.ts +10 -0
- package/chains/previewnet-bulletin/generated/dist/index.js +88 -0
- package/chains/previewnet-bulletin/generated/dist/metadataTypes-DIFn96VK.js +3 -0
- package/chains/previewnet-bulletin/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin.d.ts +4040 -0
- package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin_metadata-BXuTEONY.js +3 -0
- package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin_metadata.d.ts +2 -0
- package/chains/previewnet-individuality/.papi/polkadot-api.json +12 -0
- package/chains/previewnet-individuality/generated/dist/common-types.d.ts +13226 -0
- package/chains/previewnet-individuality/generated/dist/common.d.ts +1 -0
- package/chains/previewnet-individuality/generated/dist/descriptors-BU9tL-VV.js +25 -0
- package/chains/previewnet-individuality/generated/dist/descriptors.d.ts +1 -0
- package/chains/previewnet-individuality/generated/dist/index.d.ts +10 -0
- package/chains/previewnet-individuality/generated/dist/index.js +87 -0
- package/chains/previewnet-individuality/generated/dist/metadataTypes-D7WDCVlV.js +3 -0
- package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +2 -0
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +12502 -0
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-DEV5-BYY.js +3 -0
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata.d.ts +2 -0
- package/package.json +13 -1
- package/chains/paseo-asset-hub/generated/dist/descriptors-CimFu30S.js +0 -25
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-Bo4aVwWD.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CWOk3DU-.js +0 -3
- package/chains/paseo-individuality/generated/dist/descriptors-SCgI2-0R.js +0 -25
- package/chains/paseo-individuality/generated/dist/metadataTypes-B1qG4QkU.js +0 -3
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DRo0inTN.js +0 -3
package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-DEV5-BYY.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const binMeta = "bWV0YRC1DgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGYGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAoUGFyYW1ldGVycwQAvAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhbWV0ZXJzLCBSdW50aW1lPgBJACBCYWxhbmNlcwQASQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBABdAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4ADQAYQXNzZXRzBABlAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+AA4AJEFzc2V0UmF0ZQQAsQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgAQADxBc3NldENvbnZlcnNpb24EALkBAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0Q29udmVyc2lvbiwgUnVudGltZT4AEgAoUG9vbEFzc2V0cwQAwQEBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EAM0BAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBADRAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAN0BAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAOEBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBACxAwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEALUDAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAvQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEACkEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBAA1BAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAOQQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAGFBlb3BsZQQARQQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlLCBSdW50aW1lPgAzABxNb2JSdWxlBABVBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNb2JSdWxlLCBSdW50aW1lPgA0AChQcm9vZk9mSW5rBABlBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm9vZk9mSW5rLCBSdW50aW1lPgA1ABBHYW1lBACNBAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHYW1lLCBSdW50aW1lPgA3ABRTY29yZQQA3QQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NvcmUsIFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAAEFAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdENyZWRpdHMsIFJ1bnRpbWU+ADkAIER1bW15RGltBAANBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEdW1teURpbSwgUnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAJQUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlTGl0ZSwgUnVudGltZT4APgAkUmVzb3VyY2VzBAA5BQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXNvdXJjZXMsIFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAEUFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENodW5rc01hbmFnZXIsIFJ1bnRpbWU+AEAAHE1lbWJlcnMEAFUFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnMsIFJ1bnRpbWU+AEMAHENvaW5hZ2UEAF0FAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvaW5hZ2UsIFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAtQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVyc05vdGlmaWVyLCBSdW50aW1lPgBFABxBaXJkcm9wBADNBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgBGABhIb25vdXIEANUFAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhvbm91ciwgUnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAOEFAc0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBlb3BsZUFpcmRyb3BzLCBSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQA8QUB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZcABUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyc0RSdW50aW1lUGFyYW1ldGVycwABEEBTdGF0ZW1lbnRTdG9yYWdlBADEAbRkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMAAAA8QnVsbGV0aW5TdG9yYWdlBAAJAQGwZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMAAQA4UGVvcGxlQWlyZHJvcHMEAC0BAaxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzAAIAOExpdGVQZXJzb25ob29kBAA5AQGsZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycwADAADEFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2UoUGFyYW1ldGVycwABMFBBY2NvdW50c0FwaUFsbG93YW5jZQgAyAFQQWNjb3VudHNBcGlBbGxvd2FuY2UAAMwBjE9wdGlvbjxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXI+AAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQgA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQIANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAzAGMT3B0aW9uPFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcj4ACgBQUGVyc29uU3RhdGVtZW50TGltaXQIANwBUFBlcnNvblN0YXRlbWVudExpbWl0AADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAOQBLE9wdGlvbjx1MzI+AAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAADkASxPcHRpb248dTMyPgACAFRTdG10U3RvcmVDbGVhbnVwTGltaXQIAOwBVFN0bXRTdG9yZUNsZWFudXBMaW1pdAAA5AEsT3B0aW9uPHUzMj4AAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bggA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAA5AEsT3B0aW9uPHUzMj4ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cIAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgAFAGhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAgA+AFoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4ABwB4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kCAABAQF4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAD8AShPcHRpb248dTg+AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uCAAFAQFoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24AAOQBLE9wdGlvbjx1MzI+AAkAAMgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAADMBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0Aw0aW5kaXZfc3VwcG9ydChwYXJhbWV0ZXJzbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAACAEgbWF4X3NpemU4AQx1MzIAASRtYXhfY291bnQ4AQx1MzIAANQUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVROb3RpZmljYXRpb25BbGxvd2FuY2UAAAAA2BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAAADcFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VQUGVyc29uU3RhdGVtZW50TGltaXQAAAAA4BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADoFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOwUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAAAA8BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24AAAAA9BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlUFN0bXRTdG9yZUdyYWNlV2luZG93AAAAAPgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAAAAD8BBhPcHRpb24EBFQBDAEIEE5vbmUAAAAQU29tZQQADAAAAQAAAQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAAAABQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAAAAAJARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2UoUGFyYW1ldGVycwABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbggADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAADkASxPcHRpb248dTMyPgAAAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwgAEQEBaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QIABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4AAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0CAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AADkASxPcHRpb248dTMyPgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUIAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQgAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABQAADQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdldExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAABEBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwAAAAAVARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2V4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAAAABkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQAAAAAHQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAAAAAhAQQYT3B0aW9uBARUASUBAQgQTm9uZQAAABBTb21lBAAlAQAAAQAAJQEMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNkTG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbgAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAACkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZZRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlAAAAAC0BFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzKFBhcmFtZXRlcnMAAQQsUHJpemVTb3VyY2UIADEBASxQcml6ZVNvdXJjZQAANQEBfE9wdGlvbjxzcF9ydW50aW1lOjpBY2NvdW50SWQzMj4AAAAAMQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHMsUHJpemVTb3VyY2UAAAAANQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAA5ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZChQYXJhbWV0ZXJzAAEEPFJlZ2lzdHJhdGlvbkZlZQgAPQEBPFJlZ2lzdHJhdGlvbkZlZQAAQQEBPE9wdGlvbjxCYWxhbmNlPgAAAAA9ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxSZWdpc3RyYXRpb25GZWUAAAAAQQEEGE9wdGlvbgQEVAFFAQEIEE5vbmUAAAAQU29tZQQARQEAAAEAAEUBAAAFBwBJAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVNAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVNAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVNAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVEBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvVQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlTQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uWQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YU0BAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZU0BAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZVEBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0BAAAGRQEAUQEAAAUAAFUBAAACBABZAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAXQEMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHlhAQFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuYQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVAUmVzdHJpY3RlZEVudGl0eQABHDRQZXJzb25hbEFsaWFzBAAIARRBbGlhcwAAAEBQZXJzb25hbElkZW50aXR5BAAoAQx1NjQAAQBEUmVmZXJyZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAACAEhBY2NvdW50UGFydGljaXBhbnQEAAQBJEFjY291bnRJZAADAEBJbnZpdGVkQ2FuZGlkYXRlBAAEASRBY2NvdW50SWQABAAoTGl0ZVBlcnNvbgQABAEkQWNjb3VudElkAAUAJExpdGVBbGlhcwQACAEUQWxpYXMABgAAZQEMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFEBARBib29sAAEsbWluX2JhbGFuY2VNAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50TQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50TQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudE0BAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5RAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VNAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRRAQEQYm9vbAABJGlzX2Zyb3plblEBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudE0BAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuUQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRpAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkaQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlUQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZGkBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXOlAQHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkBECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3JtAQEkSnVuY3Rpb25zAABtARAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBABxAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACJAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACNAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACRAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BACVAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BACZAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BACdAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAChAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAHEBAAADAQAAAHUBAHUBECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmt5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya3kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmt5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABNAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkgQEBGEJvZHlJZAABEHBhcnSFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAB9AQEkTmV0d29ya0lkAAkAAHkBBBhPcHRpb24EBFQBfQEBCBBOb25lAAAAEFNvbWUEAH0BAAABAAB9ARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAgQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAIUBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAACJAQAAAwIAAAB1AQCNAQAAAwMAAAB1AQCRAQAAAwQAAAB1AQCVAQAAAwUAAAB1AQCZAQAAAwYAAAB1AQCdAQAAAwcAAAB1AQChAQAAAwgAAAB1AQClAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAakBBFMAAAQArQEBGFZlYzxUPgAAqQEMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlaQEBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlUQEBEGJvb2wAAK0BAAACqQEAsQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRpAQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRltQEBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZGkBAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGW1AQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZGkBAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAEUBARB1MTI4AAC5AQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDFpAQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDJpAQFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxaQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyaQEBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkRQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWRFAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWluRQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbkUBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MWkBAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MmkBAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm5FAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aL0BAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbkUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVRAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGi9AQFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXhFAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlUQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxaQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyaQEBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMuvQEAAAJpAQDBAQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFEBARBib29sAAEsbWluX2JhbGFuY2VNAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudE0BAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50TQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudE0BAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5RAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlTQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50UQEBEGJvb2wAASRpc19mcm96ZW5RAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudE0BAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRNAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVyblEBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVRAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzxQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7FAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABADJAQEYVmVjPFQ+AADJAQAAAhAAzQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXdVAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kRQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPVAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmHZAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAA2QEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA3QEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4QEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2UxAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ55QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHN1AwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c3UDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2V5AwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodHECARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbmkBATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u5AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbuUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27lAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c3UDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c3UDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZFEBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzdQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSpAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c3UDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ55QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADBhVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzdQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGWlAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZKkDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGWlAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3QxAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXOtAwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADpAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAP0BATB2NDo6TG9jYXRpb24ABAAIVjUEAGkBATB2NTo6TG9jYXRpb24ABQAA6QEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LtAQEkSnVuY3Rpb25zAADtARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA8QEBIEp1bmN0aW9uAAEACFgyCADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgACAAhYMwwA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgADAAhYNBAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAQACFg1FADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAFAAhYNhgA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAGAAhYNxwA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAcACFg4IADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAIAADxARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/UBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/UBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAE0BARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSBAQEYQm9keUlkAAEQcGFydIUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAPkBASROZXR3b3JrSWQACQAA9QEEGE9wdGlvbgQEVAH5AQEIEE5vbmUAAAAQU29tZQQA+QEAAAEAAPkBEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAP0BECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IBAgEkSnVuY3Rpb25zAAABAhAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAFAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAVAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAZAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAdAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAhAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAlAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAApAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAtAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAAUCAAADAQAAAAkCAAkCECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaw0CAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABNAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkgQEBGEJvZHlJZAABEHBhcnSFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAARAgEkTmV0d29ya0lkAAkAAA0CBBhPcHRpb24EBFQBEQIBCBBOb25lAAAAEFNvbWUEABECAAABAAARAhAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAABUCAAADAgAAAAkCABkCAAADAwAAAAkCAB0CAAADBAAAAAkCACECAAADBQAAAAkCACUCAAADBgAAAAkCACkCAAADBwAAAAkCAC0CAAADCAAAAAkCADECCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQANQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACtAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAPkCAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAA1AgwMeGNtCHYzDFhjbQQQQ2FsbAAABAA5AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAOQIAAAI9AgA9AgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABBAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlYQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHECARhXZWlnaHQAARxxdWVyaWVyjQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnpAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSRAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3RxAgEYV2VpZ2h0AAEQY2FsbJUCAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAO0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAJkCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOdAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ56QEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c50CAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdOkBATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWdAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRBAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsUQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOdAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXpAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOdAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvmQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRznQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABGHRpY2tldOkBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHECARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAQQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABBAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACNAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIUCAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+ZAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACZAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbu0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLpAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARh0YXJnZXTpAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARRvd25lcukBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYbG9ja2Vy6QEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdRAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA6QEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lujQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABBAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQARQIBPFZlYzxNdWx0aUFzc2V0PgAARQIAAAJJAgBJAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRNAgEcQXNzZXRJZAABDGZ1blECASxGdW5naWJpbGl0eQAATQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAOkBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABRAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAE0BARB1MTI4AAAALE5vbkZ1bmdpYmxlBABVAgE0QXNzZXRJbnN0YW5jZQABAABVAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAE0BARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAFkCARxbdTg7IDhdAAMAHEFycmF5MTYEAF0CASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABZAgAAAwgAAAAMAF0CAAADEAAAAAwAYQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAQQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAB1AgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAIUCAThNYXliZUVycm9yQ29kZQAFAABlAgQYT3B0aW9uBARUAWkCAQgQTm9uZQAAABBTb21lBABpAgAAAQAAaQIAAAQIOG0CAG0CEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAcQIBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAcQIMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAB1AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXkCBFMAAAQAgQIBGFZlYzxUPgAAeQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWV9AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZX0CAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAfQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACBAgAAAnkCAIUCDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAiQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACJAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAiQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACNAgQYT3B0aW9uBARUAekBAQgQTm9uZQAAABBTb21lBADpAQAAAQAAkQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAlQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAmQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27pAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHRxAgEYV2VpZ2h0AACdAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAQQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAKECAThXaWxkTXVsdGlBc3NldAABAAChAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRNAgEcQXNzZXRJZAABDGZ1bqUCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkTQIBHEFzc2V0SWQAAQxmdW6lAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAApQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAACpAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBABxAgEYV2VpZ2h0AAEAAK0CDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAsQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALECAAACtQIAtQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEALkCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAC5AgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEALkCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl0QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHECARhXZWlnaHQAARxxdWVyaWVy5QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c7kCARhBc3NldHMAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c7kCARhBc3NldHMAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNtrQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJECAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHECARhXZWlnaHQAARBjYWxslQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAAQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAOkCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPtAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz7QIBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjba0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl7QIBLEFzc2V0RmlsdGVyAAEQd2FudLkCARhBc3NldHMAARxtYXhpbWFsUQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPtAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl/QEBIExvY2F0aW9uAAEMeGNtrQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c+0CASxBc3NldEZpbHRlcgABEGRlc3T9AQEgTG9jYXRpb24AAQx4Y22tAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb+kCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c+0CASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzwQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACtAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACtAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c7kCARhBc3NldHMAARh0aWNrZXT9AQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0cQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC5AgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAC5AgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA5QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAhQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb+kCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAOkCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQACQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrEQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uAQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y22tAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldMECARRBc3NldAABIHVubG9ja2Vy/QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTBAgEUQXNzZXQAARh0YXJnZXT9AQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMECARRBc3NldAABFG93bmVy/QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldMECARRBc3NldAABGGxvY2tlcv0BASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1EBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAD9AQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu5QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAuQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABAC9AgEoVmVjPEFzc2V0PgAAvQIAAALBAgDBAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkxQIBHEFzc2V0SWQAAQxmdW7JAgEsRnVuZ2liaWxpdHkAAMUCECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAP0BASBMb2NhdGlvbgAAyQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABNAQEQdTEyOAAAACxOb25GdW5naWJsZQQAzQIBNEFzc2V0SW5zdGFuY2UAAQAAzQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABNAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABZAgEcW3U4OyA4XQADABxBcnJheTE2BABdAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA0QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAC5AgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADVAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAIUCAThNYXliZUVycm9yQ29kZQAFAADVAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdkCBFMAAAQA4QIBGFZlYzxUPgAA2QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZd0CAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l3QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADdAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOECAAAC2QIA5QIEGE9wdGlvbgQEVAH9AQEIEE5vbmUAAAAQU29tZQQA/QEAAAEAAOkCDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0cQIBGFdlaWdodAAA7QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAC5AgEYQXNzZXRzAAAAEFdpbGQEAPECASRXaWxkQXNzZXQAAQAA8QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZMUCARxBc3NldElkAAEMZnVu9QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTFAgEcQXNzZXRJZAABDGZ1bvUCATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAD1AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAPkCDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQA/QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAP0CAAACAQMAAQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAAUDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAFAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAAUDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlHQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodHECARhXZWlnaHQAARxxdWVyaWVyPQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cwUDARhBc3NldHMAASxiZW5lZmljaWFyeWkBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwUDARhBc3NldHMAARBkZXN0aQEBIExvY2F0aW9uAAEMeGNt+QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJECAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodEEDAThPcHRpb248V2VpZ2h0PgABEGNhbGyVAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABtAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQARQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c0kDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5aQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNJAwEsQXNzZXRGaWx0ZXIAARBkZXN0aQEBIExvY2F0aW9uAAEMeGNt+QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVJAwEsQXNzZXRGaWx0ZXIAARB3YW50BQMBGEFzc2V0cwABHG1heGltYWxRAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c0kDASxBc3NldEZpbHRlcgABHHJlc2VydmVpAQEgTG9jYXRpb24AAQx4Y235AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzSQMBLEFzc2V0RmlsdGVyAAEQZGVzdGkBASBMb2NhdGlvbgABDHhjbfkCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvRQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzSQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMNAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSpAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPkCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPkCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzBQMBGEFzc2V0cwABGHRpY2tldGkBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHRxAgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAUDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAUDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAA9AwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAIQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACFAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvRQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQARQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAB1AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt9AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25tAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfkCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0DQMBFEFzc2V0AAEgdW5sb2NrZXJpAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldA0DARRBc3NldAABGHRhcmdldGkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0DQMBFEFzc2V0AAEUb3duZXJpAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0DQMBFEFzc2V0AAEYbG9ja2VyaQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3UQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAGkBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSpAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW49AwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQNAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uaQEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNVAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luUQEBEGJvb2wAARhhc3NldHNdAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt+QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbmUDAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y235AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNpAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAAUDECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQACQMBKFZlYzxBc3NldD4AAAkDAAACDQMADQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZBEDARxBc3NldElkAAEMZnVuFQMBLEZ1bmdpYmlsaXR5AAARAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABABpAQEgTG9jYXRpb24AABUDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQATQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEABkDATRBc3NldEluc3RhbmNlAAEAABkDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQATQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAB0DDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQABQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEACEDAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQALQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACFAgE4TWF5YmVFcnJvckNvZGUABQAAIQMEGE9wdGlvbgQEVAElAwEIEE5vbmUAAAAQU29tZQQAJQMAAAEAACUDAAAECDgpAwApAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAcQIBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAALQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExAwRTAAAEADkDARhWZWM8VD4AADEDDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWU1AwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZTUDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA5AwAAAjEDAD0DBBhPcHRpb24EBFQBaQEBCBBOb25lAAAAEFNvbWUEAGkBAAABAABBAwQYT3B0aW9uBARUAXECAQgQTm9uZQAAABBTb21lBABxAgAAAQAARQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbmkBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHRxAgEYV2VpZ2h0AABJAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAAUDARhBc3NldHMAAAAQV2lsZAQATQMBJFdpbGRBc3NldAABAABNAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkEQMBHEFzc2V0SWQAAQxmdW5RAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZBEDARxBc3NldElkAAEMZnVuUQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFEDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAVQMEGE9wdGlvbgQEVAFZAwEIEE5vbmUAAAAQU29tZQQAWQMAAAEAAFkDECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABJAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAEkDASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAEkDASxBc3NldEZpbHRlcgACAABdAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVkDBFMAAAQAYQMBGFZlYzxUPgAAYQMAAAJZAwBlAwQYT3B0aW9uBARUAW0BAQgQTm9uZQAAABBTb21lBABtAQAAAQAAaQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFtAwRTAAAEAHEDARhWZWM8VD4AAG0DDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9uaQEBIExvY2F0aW9uAAAAAHEDAAACbQMAdQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAEECATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEALkCASh2NDo6QXNzZXRzAAQACFY1BAAFAwEodjU6OkFzc2V0cwAFAAB5AwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAH0DAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAjQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BACZAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAfQMMDHhjbQh2MwxYY20EEENhbGwAAAQAgQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAIEDAAAChQMAhQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABBAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABBAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAQQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZWECASBSZXNwb25zZQABKG1heF93ZWlnaHRxAgEYV2VpZ2h0AAEccXVlcmllco0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ56QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNBAgEsTXVsdGlBc3NldHMAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kkQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0cQIBGFdlaWdodAABEGNhbGyJAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADtAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACZAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRznQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOdAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlnQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50QQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbFEBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRznQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRznQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb5kCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c50CAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNJAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdKkCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAfQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAfQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNBAgEsTXVsdGlBc3NldHMAARh0aWNrZXTpAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHRxAgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAEECASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAQQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAjQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACFAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvmQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAmQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27tAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRJAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy6QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYdGFyZ2V06QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldEkCAShNdWx0aUFzc2V0AAEUb3duZXLpAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRJAgEoTXVsdGlBc3NldAABGGxvY2tlcukBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3UQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdKkCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbo0CAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAiQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAjQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACRAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAkQMAAAKVAwCVAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAuQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEALkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAuQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XRAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0cQIBGFdlaWdodAABHHF1ZXJpZXLlAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzuQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzuQIBGEFzc2V0cwABEGRlc3T9AQEgTG9jYXRpb24AAQx4Y22tAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kkQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0cQIBGFdlaWdodAABEGNhbGyJAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAABAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA6QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c+0CASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPtAgEsQXNzZXRGaWx0ZXIAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNtrQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXtAgEsQXNzZXRGaWx0ZXIAARB3YW50uQIBGEFzc2V0cwABHG1heGltYWxRAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c+0CASxBc3NldEZpbHRlcgABHHJlc2VydmX9AQEgTG9jYXRpb24AAQx4Y22tAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz7QIBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjba0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv6QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz7QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPBAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSpAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAI0DASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAI0DASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzuQIBGEFzc2V0cwABGHRpY2tldP0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHRxAgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEALkCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEALkCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADlAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACFAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv6QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA6QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAJAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsRAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24BAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjba0CARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0wQIBFEFzc2V0AAEgdW5sb2NrZXL9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMECARRBc3NldAABGHRhcmdldP0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0wQIBFEFzc2V0AAEUb3duZXL9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0wQIBFEFzc2V0AAEYbG9ja2Vy/QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3UQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAP0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSpAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7lAgFAT3B0aW9uPExvY2F0aW9uPgAvAACZAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAJ0DAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACdAwAAAqEDAKEDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAAFAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQABQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAFAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZR0DASBSZXNwb25zZQABKG1heF93ZWlnaHRxAgEYV2VpZ2h0AAEccXVlcmllcj0DAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMFAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnlpAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMFAwEYQXNzZXRzAAEQZGVzdGkBASBMb2NhdGlvbgABDHhjbfkCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSRAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHRBAwE4T3B0aW9uPFdlaWdodD4AARBjYWxsiQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAbQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAEUDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNJAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWkBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzSQMBLEFzc2V0RmlsdGVyAAEQZGVzdGkBASBMb2NhdGlvbgABDHhjbfkCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlSQMBLEFzc2V0RmlsdGVyAAEQd2FudAUDARhBc3NldHMAARxtYXhpbWFsUQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNJAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlaQEBIExvY2F0aW9uAAEMeGNt+QIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c0kDASxBc3NldEZpbHRlcgABEGRlc3RpAQEgTG9jYXRpb24AAQx4Y235AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb0UDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c0kDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzDQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACZAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACZAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cwUDARhBc3NldHMAARh0aWNrZXRpAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0cQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAFAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAFAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAPQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEACEDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAhQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb0UDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAEUDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAdQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrfQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9ubQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y235AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldA0DARRBc3NldAABIHVubG9ja2VyaQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQNAwEUQXNzZXQAARh0YXJnZXRpAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldA0DARRBc3NldAABFG93bmVyaQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldA0DARRBc3NldAABGGxvY2tlcmkBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1EBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABpAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0qQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luPQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0DQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbmkBASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzVQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblEBARBib29sAAEYYXNzZXRzXQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbfkCARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5lAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtmQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzaQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAClAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAOUBAURWZXJzaW9uZWRMb2NhdGlvbgADAACpAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAE0CASx2Mzo6QXNzZXRJZAADAAhWNAQAxQIBLHY0OjpBc3NldElkAAQACFY1BAARAwEsdjU6OkFzc2V0SWQABQAArQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAACxAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrUDDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbrkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luuQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXRxAgEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAAC9Aww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8EDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleMUDAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc8EDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7JAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzwQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHECARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2luyQMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEDAAACIADFAwAABQQAyQMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEwGHN5c3RlbQQAzQMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADRAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EANUDAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABhQZW9wbGUEANkDAWxpbmRpdl9wYWxsZXRfcGVvcGxlOjpPcmlnaW4AMwAoUHJvb2ZPZkluawQA5QMBqGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6Ok9yaWdpbjxSdW50aW1lPgA1ABBHYW1lBADpAwGIaW5kaXZfcGFsbGV0X2dhbWU6Ok9yaWdpbjxSdW50aW1lPgA3ABRTY29yZQQA7QMBjGluZGl2X3BhbGxldF9zY29yZTo6T3JpZ2luPFJ1bnRpbWU+ADgAKFBlb3BsZUxpdGUEAPEDAaRpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6Ok9yaWdpbjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAPUDAXhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpPcmlnaW4APwAcTWVtYmVycwQA/QMBlGluZGl2X3BhbGxldF9tZW1iZXJzOjpPcmlnaW48UnVudGltZT4AQwAcQ29pbmFnZQQABQQBlGluZGl2X3BhbGxldF9jb2luYWdlOjpPcmlnaW48UnVudGltZT4ARAAYSG9ub3VyBAAhBAFsaW5kaXZfcGFsbGV0X2hvbm91cjo6T3JpZ2luAEcAAM0DDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADRAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQAaQEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBABpAQEgTG9jYXRpb24AAQAA1QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADZAwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQYT3JpZ2luAAEIQFBlcnNvbmFsSWRlbnRpdHkEACgBKFBlcnNvbmFsSWQAAAA0UGVyc29uYWxBbGlhcwQA3QMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAA3QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAADAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcmluZzgBJFJpbmdJbmRleAABCGNh4QMBPENvbnRleHR1YWxBbGlhcwAA4QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHk8Q29udGV4dHVhbEFsaWFzAAAIARRhbGlhcwgBFEFsaWFzAAEcY29udGV4dAgBHENvbnRleHQAAOUDDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhPcmlnaW4EBFQAAQxYQXV0aG9yaXplZEFwcGx5V2l0aFNpZwQABAEwVDo6QWNjb3VudElkAAAARFJlZmVycmVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAQBASW52aXRlZENhbmRpZGF0ZQQABAEwVDo6QWNjb3VudElkAAIAAOkDDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQYT3JpZ2luBARUAAEEHEludml0ZWQEAAQBMFQ6OkFjY291bnRJZAAAAADtAwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBhPcmlnaW4EBFQAAQRIQWNjb3VudFBhcnRpY2lwYW50BAAEATBUOjpBY2NvdW50SWQAAAAA8QMMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQYT3JpZ2luBARUAAEIKExpdGVQZXJzb24EAAQBMFQ6OkFjY291bnRJZAAAACRMaXRlQWxpYXMEAN0DAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAEAAPUDDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBhPcmlnaW4AAQxETm90aWZpY2F0aW9uQWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAPkDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAAD5AwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAD9AwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAEBBAEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAADdAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAAAQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAAFBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAEBBAEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbgkEARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzEQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWUdBAEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAACQQMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AAQxhZ2XFAwEMdTE2AAANBAAABQkAEQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEVBARTAAAEABkEARhWZWM8VD4AABUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAGQQAAAIVBAAdBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWUNBAEwRGVub21pbmF0aW9uAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAACEEDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBhPcmlnaW4AAQQUVm90ZXIEARxhbGlhc2VzJQQBLFZvdGVBbGlhc2VzAAAAACUEDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzLFZvdGVBbGlhc2VzAAAIATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEscG9pbnRfYWxpYXMIAShQb2ludEFsaWFzAAApBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXNVAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGTFAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNVAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQtBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0cQIBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZMUDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc1UBAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludC0EAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHRxAgEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xkxQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzVQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50MQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkxQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzVQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLi0EBBhPcHRpb24EBFQBMQQBCBBOb25lAAAAEFNvbWUEADEEAAABAAAxBAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAA1BAwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHECARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45BAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZT0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4xQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUEEATBUOjpQcm94eVR5cGUAARRpbmRleMUDAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlPQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49BAQYT3B0aW9uBARUAUEEAQgQTm9uZQAAABBTb21lBABBBAAAAQAAQQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAABFBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAUwtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuAGEBVGhpcyBjYWxsIGlzIGF1dGhvcml6ZWQgdGhyb3VnaCB0aGUgYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUgYEFzUGVyc29uYFkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXkgcHJvdGVjdGlvbi4gUmVwbGF5IGlzIG9ubHlZAXByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZSBhY2NvdW50IHRoaXMgY2FsbCBzZXRzLiBBcyBzb29uVQFhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieSBhbm90aGVyIGBzZXRfYWxpYXNfYWNjb3VudGApLCB0aGlzTQFjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHkgcGVyaW9kIGVsYXBzZXMuIENvbnNlcXVlbnRseSwgaWYgMlkBc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlIG92ZXJsYXBwaW5nIHZhbGlkaXR5IHBlcmlvZHMsIHRoZXlNAWNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG92ZXJsYXAuIFRvVQFhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoIHRyYW5zYWN0aW9ucyBhbGl2ZSAod2l0aGluIHRoZWlyIHZhbGlkaXR5ZHBlcmlvZCkgYXQgdGhlIHNhbWUgdGltZS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAACBBUBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIGFsaWFzIHRvIGl0cyByZWdpc3RlcmVkIGFjY291bnQuaGZvcmNlX3JlY29nbml6ZV9wZXJzb25ob29kBAEYcGVvcGxlSQQBQFZlYzxNZW1iZXJPZjxUPj4AAxDgUmVjb2duaXplIGEgc2V0IG9mIHBlb3BsZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNoZWNrcy4AUQFUaGUgcGVvcGxlIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwcm92aWRlZCBsaXN0IG9mIGtleXMgYW5kIHdpbGwgZWFjaCBiZSBhc3NpZ25lZCwgaW6Yb3JkZXIsIHRoZSBuZXh0IGF2YWlsYWJsZSBwZXJzb25hbCBJRC5cc2V0X3BlcnNvbmFsX2lkX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAQ8aFNldCBhIHBlcnNvbmFsIGlkIGFjY291bnQuAE0BVGhlIGFjY291bnQgY2FuIHRoZW4gYmUgdXNlZCB0byBzaWduIHRyYW5zYWN0aW9ucyBvbiBiZWhhbGYgb2YgdGhlIHBlcnNvbmFsIGlkLCBhbmSkcHJvdmlkZSByZXBsYXkgcHJvdGVjdGlvbiB3aXRoIHRoZSBub25jZS4AUQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFjY291bnQgd2FzIHByZXZpb3VzbHkgc2V0IGZvciB0aGUwcGVyc29uYWwgaWQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5kdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudAAFBHhVbnNldCB0aGUgcGVyc29uYWwgaWQgYWNjb3VudC5gY3JlYXRlX3Blb3BsZV9jb2xsZWN0aW9uAAYodENyZWF0ZSB0aGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGXALSBPbmJvYXJkaW5nIHNpemU6IGBQRU9QTEVfT05CT0FSRElOR19TSVpFYCAoMTApSC0gTW9kZTogYEZsZXhpYmxlYEwtIFJpbmcgc2l6ZTogYFIyZTlgWGNsZWFuX3VwX3N0YWxlX2FsaWFzZXMEARxhbGlhc2VzTQQB3EJvdW5kZWRWZWM8Q29udGV4dHVhbEFsaWFzLCBDb25zdFUzMjxNQVhfQlVMS19DTEVBTlVQPj4AB1CgUmVtb3ZlIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmdzLgBgQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46LQEtIGl0cyBjb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF0gKGdvdmVybmFuY2WoICByZWNvbmZpZ3VyYXRpb24sIGVuZGVkIGFpcmRyb3AgZXRjLiksIG9ycC0gaXRzIHJpbmcgaGFzIGJlZW4gZGVsZXRlZC4AHQFSZXZpc2lvbiBtaXNtYXRjaGVzIGRvIG5vdCByZW5kZXIgYW4gYWxpYXMgc3RhbGUuIFRoZSB1c2VyIGNhbiBjb250aW51ZRUBdHJhbnNhY3RpbmcgdmlhIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWRgIHdpdGhvdXQgaGF2aW5nIHRvTHJlZG8gYWNjb3VudCBzZXR1cC4A/FR5cGljYWxseSBzdWJtaXR0ZWQgYnkgdGhlIE9DVywgYnV0IHRoZSBkaXNwYXRjaCBkb2VzIG5vdCB0cnVzdKh0aGUgY2FsbGVyLiBFYWNoIGFsaWFzIGlzIHJlLXZhbGlkYXRlZCB2aWHsYFNlbGY6OmVuc3VyZV9hbGlhc19pc19zdGFsZWA7IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkEAAACCABNBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeEDBFMAAAQAUQQBGFZlYzxUPgAAUQQAAALhAwBVBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvblkEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0cQIBGFdlaWdodAABEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgY2xvc2VkLiBJdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhbGwncyBkZWNsYXJlZCB3ZWlnaHQgYW5kWQFjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBjYWxsYmFjayB3ZWlnaHQgb24tY2hhaW4sIHdpdGggdGhlIGRpZmZlcmVuY2UgcmVmdW5kZWQuIFRoZUEBY2FsbCBmYWlscyB3aXRoIGBDYWxsYmFja1dlaWdodFRvb0xvd2AgaWYgdGhlIGJvdW5kIGRvZXMgbm90IGNvdmVyIHRoZSBjYWxsYmFjay4oY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMLQFPcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgdHJhbnNhY3Rpb24gaXMgYXV0aG9yaXplZCBpbiBgQXV0aG9yaXplQ2FsbGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdFkEASRKdWRnZW1lbnQAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0cQIBGFdlaWdodAAEEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgaW50ZXJ2ZW5lZC4gSXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYWxsJ3MgZGVjbGFyZWQgd2VpZ2h0WQFhbmQgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgY2FsbGJhY2sgd2VpZ2h0IG9uLWNoYWluLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHJlZnVuZGVkLlEBVGhlIGNhbGwgZmFpbHMgd2l0aCBgQ2FsbGJhY2tXZWlnaHRUb29Mb3dgIGlmIHRoZSBib3VuZCBkb2VzIG5vdCBjb3ZlciB0aGUgY2FsbGJhY2suKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2EEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAJAFhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIACgAwY2xhaW1fY3JlZGl0AAsAMGNsZWFuX3BvaW50cwgBFHJvdW5kOAEoUm91bmRJbmRleAABFHZvdGVyCAEUQWxpYXMADABAZm9yY2VfcmlwZW5fY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADQAodG91Y2hfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADgBQY2xlYXJfdm90aW5nX3BlbmFsdHkADwBEY2xlYW5fdm90ZV9zaWduZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEUdm90ZXIIARRBbGlhcwAQBFhPcmlnaW4gbXVzdCBiZSBzaWduZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlkEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5JEp1ZGdlbWVudAABCBRUcnV0aAQAXQQBFFRydXRoAAAAIENvbnRlbXB0AAEAAF0EEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5FFRydXRoAAEIEFRydWUAAAAURmFsc2UAAQAAYQQAAAI4AGUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEgTW9iIFJ1bGUgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC78LSBSZXF1ZXN0cyBhIGp1ZGdlbWVudCBmb3IgdGhlIHByb29mLW9mLWluayBldmlkZW5jZSBzdGF0ZW1lbnQuUQEtIE5lZWRzIGBTaWduZWRFeHRlbnNpb25gIHRvIGF2b2lkIHVwZnJvbnQgcmVxdWlyZW1lbnQgZm9yIGZlZSBpZiBganVkZ2VtZW50cyA9PSAwYC45AS0gSWYgYGp1ZGdlbWVudHMgPiAwYCwgdGhlbiBhbiBhZGRpdGlvbmFsIGZlZSBzaG91bGQgYmUgY2hhcmdlZCBpbnRvIFRyZWFzdXJ5LhhqdWRnZWQMARh0aWNrZXQ4AURPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50WQQBJEp1ZGdlbWVudAACBOhJcyBjYWxsZWQgYnkgdGhlIE9yYWNsZSB3aGVuIHRoZSBldmlkZW5jZSBoYXMgYmVlbiBqdWRnZWQuRHJlZ2lzdGVyX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcGkEAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQADJFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuIQEqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIGNhbmRpZGF0ZSdzIHJlZmVycmFsIHJld2FyZC5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuVHJlZ2lzdGVyX25vbl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXBpBAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABDhQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLsAqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgcmV3YXJkcy5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuACgjIFdhcm5pbmc6ADkBVGhpcyBjYWxsIGNhbiBwYXkgdHdvIHJld2FyZHMgdG8gdGhlIHNhbWUgYWNjb3VudCBmb3Igbm9uLXJlZmVycmVkIGNhbmRpZGF0ZXMuKQFUaGUgYXBwIGlzIHJlc3BvbnNpYmxlIGZvciBhbnkgYWRkaXRpb25hbCBwcml2YWN5IGhhbmRsaW5nIGFmdGVyIHRyYW5zZmVyLhhyZXJvbGwABQAYY29tbWl0CAEYY2hvaWNlbQQBJElua0Nob2ljZQABKHJlcXVpcmVfaWStAwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAYUSQFDb21taXQgdG8gYSBkZXNpZ24gYW5kIGF1dGhvcml6ZSB0aGUgc3RvcmFnZSBmb3IgKHBvc3NpYmx5IGp1c3QgaW5pdGlhbCkgZXZpZGVuY2UuAFUBSWYgYSBzcGVjaWZpYyBwZXJzb25hbCBpZGVudGl0eSBpcyByZXF1aXJlZCwgdGhlbiB0aGlzIGNhbiBiZSBwbGFjZWQgaW4gYHJlcXVpcmVfaWRgLkEBVGhpcyBjYW4gYmUgYW55IHVudXNlZC91bnJlc2VydmVkIHBlcnNvbmFsIGlkZW50aXR5IG5vIGdyZWF0ZXIgdGhhbiB0aGUgYE5leHRJZGAgY291bnRlci40YWxsb2NhdGVfZnVsbAAHABx0aW1lb3V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAIDDkBT25jZSBhIHRpbWVvdXQgcGFzc2VzLCByZW1vdmVzIGEgY2FuZGlkYXRlIHdobyBpcyBzZWxlY3RlZCBidXQgbm90IHlldCBwcm92ZW4uWQFJZiB0aGUgY2FuZGlkYXRlIHdhcyByZWZlcnJlZCB0aGVuIHJlZmVycmFsIGlzIGJhZCwgaWYgY2FuZGlkYXRlIGFwcGxpZWQgd2l0aCBkZXBvc2l0LExkZXBvc2l0IGlzIHNsYXNoZWQuIGZsYWtlb3V0AAkEtFJlbW92ZSBhIGNhbmRpZGF0ZSB3aG8gaGFzIG5vdCB5ZXQgY29tbWl0dGVkLlBhcHBseV93aXRoX3NpZ25hdHVyZQwBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABJHNpZ25hdHVyZXEEAUhUOjpUaWNrZXRTaWduYXR1cmUAARh0aWNrZXQEASRUOjpUaWNrZXQAChB0VXRpbGl6ZSBhIHJlZmVycmFsIHNpZ25hdHVyZS4AXQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIHJlZmVycmVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5UYXBwbHlfd2l0aF9pbnZpdGF0aW9uDAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJlcQQBSFQ6OlRpY2tldFNpZ25hdHVyZQATENRBcHBseSB0byB0aGUgUHJvb2Ytb2YtSW5rIHByb2Nlc3Mgd2l0aCBhbiBpbnZpdGF0aW9uLgBZAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgaW52aXRlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuRGFkZF9kZXNpZ25fZmFtaWx5DAEUaW5kZXjFAwEsRmFtaWx5SW5kZXgAARBraW5keQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAsE8EFkZCBhIGRlc2lnbiBmYW1pbHkuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLkxzZXRfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AAwYvEFkZCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24uAFUBT25seSBvbmUgcmVmZXJyYWwgdGlja2V0IG1heSBiZSBhY3RpdmUgYXQgYW55IGdpdmVuIHRpbWUgZm9yIG9uZSBwZXJzb24uIENhbGxpbmcgdGhpcyUBZXh0cmluc2ljIHdoaWxlIGEgdmFsaWQgdGlja2V0IGlzIHNldCB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdGlja2V0LgA5AUlmIGFueSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZHMgYXJlIHByZXNlbnQsIHRoZXkgbmVlZCB0byBiZSByZWdpc3RlcmVkIGZpcnN0LlhjYW5jZWxfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AA0EyENhbmNlbCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24ujHJlZ2lzdGVyX3N1Y2Nlc3NmdWxfcmVmZXJyYWxfcmV3YXJkBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQADgA0Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAPGORHcmFudHMgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AmFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW4uALAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ2l2ZSBpbnZpdGVzIHRvLqQtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBnaXZlLpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIAEBicUmVtb3ZlIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAJxUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgARFEhJbnZpdGUgYW4gYWNjb3VudC4ADQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuAJQtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBzZXQuUGNhbmNlbF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AEhRUQ2FuY2VsIGFuIGludml0YXRpb24uACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuRHNldF9jb25maWd1cmF0aW9uBAEYY29uZmlnfQQBfENvbmZpZ1JlY29yZDxCbG9ja051bWJlckZvcjxUPj4AMgQVAVNldCB0aGUgY29uZmlndXJhdGlvbiByZWNvcmQuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLmBzZXRfcmVpbWJ1cnNlbWVudF92YWx1ZXMIATxyZWZlcnJlZF92YWx1ZXOBBAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgABPHJlZmVycmVyX3ZhbHVlc4EEAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+ADMoTQFTZXQgdGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVkIGNhbmRpZGF0ZXMgYXMgd2VsbCBhcyB0aGVpck0BcmVmZXJyZXJzLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgZm9yIGVhY2ggdmFsdWUuIFRoZXNlIHZhbHVlcyBhcmUkc3RvcmVkIGluUQFyZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmVJAXRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLiBUaGUgbGVuZ3RoIG9mIHRoZSB0d28gbGlzdHMgbXVzdCBiZSBlcXVhbC4AIFdBUk5JTkchAE0BQWZ0ZXIgdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBpcyBleGhhdXN0ZWQgZm9yIGEgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZSBwYWxsZXT0c3RhcnRzIHVzaW5nIHRoZSBuZXh0IHZhbHVlIGltbWVkaWF0ZWx5IGZvciBmdXR1cmUgdHJhbnNmZXJzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5pBAAAA0AAAAAMAG0EDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRJbmtDaG9pY2UAARRARGVzaWduZWRFbGVjdGl2ZQgAxQMBLEZhbWlseUluZGV4AADFAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQEAMUDASxGYW1pbHlJbmRleAABAEhQcm9jZWR1cmFsUGVyc29uYWwEAMUDASxGYW1pbHlJbmRleAACAChQcm9jZWR1cmFsCADFAwEsRmFtaWx5SW5kZXgAAAwBMFZhcmlhbnRJbmRleAADAFBQcm9jZWR1cmFsRGVyaXZhdGl2ZQgAKAEoUGVyc29uYWxJZAAArQMBSE9wdGlvbjxQZXJzb25hbElkPgAEAABxBAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABpBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAGkEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAHUEAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAdQQBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAdQQAAANBAAAADAB5BAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoRmFtaWx5S2luZAABECBEZXNpZ25lZAQBFGNvdW50xQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50AAEASFByb2NlZHVyYWxQZXJzb25hbAACAChQcm9jZWR1cmFsBAEUcmFuZ2UMATBWYXJpYW50SW5kZXgAAwAAfQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MENvbmZpZ1JlY29yZAQsQmxvY2tOdW1iZXIBOAAgAThyZXJvbGxfdGltZW91dDgBLEJsb2NrTnVtYmVyAAE8ZmFzdHRyYWNrX2NvdW50OAEMdTMyAAEcbWF4aW11bTgBDHUzMgABOGZ1bGxfYWxsb2NfbGVuKAEMdTY0AAFAZnVsbF9hbGxvY19jb3VudDgBDHUzMgABOGluaXRfYWxsb2NfbGVuKAEMdTY0AAFAaW5pdF9hbGxvY19jb3VudDgBDHUzMgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAgQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFBARTAAAEAIkEARhWZWM8VD4AAIUEAAAECEUBOACJBAAAAoUEAI0EDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQQQ2FsbAQEVAABTExzaWduX3VwX3dpdGhfaW52aXRlCAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5EEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAASNBTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50IGFuZCBhbiBpbnZpdGUuABUBVGhpcyBpcyBmb3IgbmV3IHBsYXllcnMgb3IgYXJjaGl2ZWQgcGxheWVycywgb3RoZXIgcGxheWVycyBzaG91bGQgdXNlqFtgUGFsbGV0OjpzaWduX3VwX3dpdGhfYWNjb3VudGBdIGZvciBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50CAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5EEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgABTJhTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50LgA9AUlmIHRoZSBwbGF5ZXIgaXMgbmV3IG9yIGFyY2hpdmVkLCB0aGVuIGEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lci5sT3RoZXJ3aXNlIHRoZSBjYWxsIGlzIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBFAWBhaXJkcm9wc2Agb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpczkBZ2FtZS4gUGFzcyBgTm9uZWAgdG8gc2tpcCBpdDsgb3RoZXJ3aXNlIGl0IGhvbGRzIGV4YWN0bHkgb25lIFZSRiBwZXIgc2NoZWR1bGVkVQFhaXJkcm9wIGV2ZW50IChgYWlyZHJvcHNfc2NoZWR1bGVkYCBpbiB0aGUgW2BHYW1lYF0gc3RvcmFnZSksIGluIGFpcmRyb3AtaW5kZXggb3JkZXIuVQFFYWNoIGVudHJ5IGlzIGJvdW5kIHRvIGl0cyBvd24gZXZlbnQgaWQgKHNlZSBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKSwgc2VlZHMgdGhlWQFwbGF5ZXIncyBkcmF3IHNsb3QgZm9yIHRoYXQgZXZlbnQgYW5kIHByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgdmFyaWFudCBpZh0BdGhlIHBsYXllciBpcyByZWNvZ25pemVkIChwYWxsZXQtc2NvcmUgYHJlY29nbml0aW9uYCBpcyBgUmVjb2duaXplZGAgb3JVAWBFeHRlcm5hbGx5UmVjb2duaXplZGApLCBvdGhlcndpc2UgdGhlIGFjY291bnQgdmFyaWFudC4gVGhlIHNpZ24tdXAgZmFpbHMgZW50aXJlbHkgaWZJAWFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnMgZG9lcyBub3RZAW1hdGNoIGBhaXJkcm9wc19zY2hlZHVsZWRgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BBaXJkcm9wVnJmc2BdIGZvciBtb3JlIGRldGFpbHMuADEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciwgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uSHNpZ25fdXBfd2l0aF9hbGlhcxABOGlkZW50aWZpZXJfa2V5dQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAFEc3RhdGVtZW50X2FjY291bnQEATBUOjpBY2NvdW50SWQAAQxzaWdxBAFMVDo6QWNjb3VudFNpZ25hdHVyZQABIGFpcmRyb3BzkQQBmE9wdGlvbjxBaXJkcm9wVnJmczxBaXJkcm9wUHJvb2ZPZjxUPj4+AAJsVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC5RAS0gYGFpcmRyb3BzYDogb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpc2EBICBnYW1lLiBQYXNzIGBOb25lYCB0byBza2lwIGl0OyBvdGhlcndpc2UgaXQgaG9sZHMgZXhhY3RseSBvbmUgVlJGIHBlciBzY2hlZHVsZWQgYWlyZHJvcGEBICBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIGBHYW1lYCBzdG9yYWdlKSwgaW4gYWlyZHJvcC1pbmRleCBvcmRlci4gRWFjaCBlbnRyeVkBICBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGApIGFuZCBzZWVkcyB0aGUgcGxheWVyJ3NhASAgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50OyB0aGUgYWxpYXMgdmFyaWFudCBtdXN0IGJlIHVzZWQgZm9yIGFsaWFzLWJhc2VkIHBsYXllcnMgZ2l2ZW5BASAgdGhleSBhcmUgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgcGFydGljaXBhbnQgaW5mb3JtYXRpb24uIFRoZSBzaWduLXVwIGZhaWxzXQEgIGVudGlyZWx5IGlmIGFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnNZASAgZG9lcyBub3QgbWF0Y2ggYGFpcmRyb3BzX3NjaGVkdWxlZGAuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgQWlyZHJvcFZyZnNgIGZvciBtb3JlKCAgZGV0YWlscy6Ac2lnbl91cF93aXRoX2FjY291bnRfbGl0ZV9pbnZpdGUMARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5EEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAVdEUBU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudCBhbmQgYSBsaXRlIGludml0ZSwgdGhlIGludml0YXRpb24gb2YgYSBsaXRlHHBlcnNvbi4AVQFMaXRlIHBlcnNvbmhvb2QgaXMgY3JlZGlibGUgZW5vdWdoIHRvIHBsYXksIHNvIGEgbGl0ZSBwZXJzb24gY2FuIGludml0ZSBhbiBhY2NvdW50IG9mTQF0aGVpciBvd24uIEl0IGlzIHJlZ2lzdGVyZWQgYXMgYW4gYWNjb3VudC1iYXNlZCBwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBVAVRoZSBvcmlnaW4gbXVzdCBiZSBhIGxpdGUgYWxpYXMgaW4gW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLCBzZWVZAVtgQ29uZmlnOjpFbnN1cmVMaXRlQWxpYXNgXS4gVGhlIGxpdGUgcGVyc29uIG5hbWVzIHRoZSBhY2NvdW50IHBsYXlpbmcgb24gdGhlaXIgYmVoYWxmVQF3aXRoIGBhY2NvdW50YCwgc28gdGhlIHBsYXlpbmcgYWNjb3VudCBpcyBub3QgdGhlIGxpdGUgcGVyc29uJ3Mgb3duIGFjY291bnQgYW5kIHN0YXlzTHVubGlua2FibGUgZnJvbSBpdC4AXQFBIGxpdGUgcGVyc29uIGludml0ZXMgb25lIGFjY291bnQsIGV2ZXI6IHRoZSBmaXJzdCBhY2NvdW50IHRoZXkgc2lnbiB1cCB0aGlzIHdheSBpcyB0aGXsb25seSBvbmUgdGhleSBjYW4gcGxheSB3aXRoLCBldmVuIGFmdGVyIGl0IHN0b3BwZWQgcGxheWluZy4AOQFUaGlzIG11c3QgYmUgdXNlZCBieSBsaXRlLXBlb3BsZSBvbiB0aGVpciBmaXJzdCBzaWdudXAgb3IgYWZ0ZXIgdGhleSBoYXZlIGJlZW70YXJjaGl2ZWQuIEZ1cnRoZXIgc2lnbnVwcyB3aGlsZSB0aGUgcGxheWVyIGlzIGFjdGl2ZSBtdXN0IHVzZaRbYFBhbGxldDo6c2lnbl91cF93aXRoX2FjY291bnRgXSBpbnN0ZWFkLhhyZXBvcnQEASxmdWxsX3JlcG9ydKkEATRGdWxsUmVwb3J0PFQ+AANclEFmdGVyIHRoZSBnYW1lLCBzZW5kIHRoZSBmdWxsIHJlcG9ydC4A0FRoZSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlcG9ydGluZyBwaGFzZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4ARQFgZnVsbF9yZXBvcnRgIGhvbGRzIG9uZSBlbnRyeSBwZXIgcm91bmQgKGV4YWN0bHkgYGdhbWUucm91bmRzYCBvZiB0aGVtKSwgYW5kIGVhY2hFAXJvdW5kIGxpc3RzIG9uZSBgUmVwb3J0YCBwZXIgY28tcGxheWVyIGluIHRoZSByZXBvcnRlcidzIGdyb3VwIGZvciB0aGF0IHJvdW5kLCBpbj0BZ3JvdXAgb3JkZXIgYW5kIGV4Y2x1ZGluZyB0aGUgcmVwb3J0ZXIuIEEgcm91bmQgd2hvc2UgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRoZTkBcmVwb3J0ZXIncyByZWFsIGdyb3VwIG1lbWJlcnNoaXAgaXMgcmVqZWN0ZWQgd2l0aCBgRXJyb3I6OkludmFsaWRSZXBvcnRgLiBFYWNoYQFgUmVwb3J0OjpQZXJzb25gIHZvdGUgYXdhcmRzIGFuIGF0dGVuZGFuY2UgTkZUIGNsYWltIGNyZWRpdCB0byB0aGUgYXR0ZXN0ZWUgaW1tZWRpYXRlbHk7jGBSZXBvcnQ6Ok5vdFBlcnNvbmAgYXdhcmRzIG5vdGhpbmcuAEkBQWZ0ZXIgdGhlIHZvdGVzIGZyb20gdGhlIHJlcG9ydCBhcmUgY291bnRlZCwgdGhlIHJlcG9ydGVyIGFuZCBlYWNoIG9mIHRoZSByZXBvcnRlZEUBcGxheWVycyB3aG9zZSBhdHRlbmRhbmNlIGNhbiBub3cgYmUgZGV0ZXJtaW5lZCBhcmUgcHJvY2Vzc2VkIGVhcmx5LiBUaGlzIGxldHMgdGhlTQFnYW1lIHNraXAgdGhlIHBsYXllci1wcm9jZXNzIHBoYXNlIGVudGlyZWx5IHdoZW4gZXZlcnkgcGxheWVyIGhhcyBiZWVuIHByb2Nlc3NlZCBieVR0aGUgZW5kIG9mIHJlcG9ydGluZy4ASQFPbiBzdWNjZXNzIHRoZSBjYWxsIHBheXMgbm8gZmVlIChgUGF5czo6Tm9gKS4gSXRzIHdlaWdodCBzY2FsZXMgd2l0aCB0aGUgbnVtYmVyIG9mTQFjby1wbGF5ZXIgZW50cmllcyBhY3Jvc3MgYWxsIHJvdW5kcywgbm90IHRoZSByb3VuZCBjb3VudCwgc28gcGFydGlhbCBncm91cHMgYXJlIG5vdFEBb3ZlcmNoYXJnZWQuIFRoZSBwcmUtZGlzcGF0Y2ggY2hhcmdlIGFzc3VtZXMgZXZlcnkgY28tcGxheWVyIGVudHJ5IHBsdXMgdGhlIHJlcG9ydGVySQFpcyBlYXJseS1lbmFjdGVkIGFuZCBpcyByZWZ1bmRlZCBkb3duIHRvIHRoZSBhY3R1YWwgZW5hY3RtZW50IGNvdW50IHBvc3QtZGlzcGF0Y2guIG9mZmJvYXJkAAQcgE9mZmJvYXJkIGEgcGxheWVyIGZyb20gdGhlIGdhbWUuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAF0BVGhlcmUgbXVzdCBiZSBubyBnYW1lIG9yIHRoZSBleGlzdGluZyBnYW1lIG11c3QgYmUgaW4gcmVnaXN0cmF0aW9uIHBoYXNlIGFuZCB0aGUgcGxheWVylG11c3QgaGF2ZSBub3Qgc2lnbmVkIHVwIGZvciB0aGUgZ2FtZS4ca2lja291dAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAFGDEBS2lja291dCBhIGtpY2thYmxlIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGFmdGVyIGBOb25QbGF5aW5nS2lja291dFRpbWVgLgCgVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LgAhAS0gYHBsYXllcmA6IFRoZSBwbGF5ZXIgdG8ga2lja291dC4gSXQgbXVzdCBiZSBhcmNoaXZlZCBhbmQga2lja2FibGUgd2l0aNggIGBhcmNoaXZlZF9zaW5jZWAgb2xkZXIgdGhhbiBgTm9uUGxheWluZ0tpY2tvdXRUaW1lYC40Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAGGPRHcmFudCBzb21lIGludml0ZXMgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBkaXN0cmlidXRlIHRoZW0uAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuALQtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ3JhbnQgaW52aXRlcyB0by6oLSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGludml0ZXMgdG8gZ3JhbnQukHJlbW92ZV9hdmFpbGFibGVfYW5kX3BlbmRpbmdfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRsaW1pdDgBDHUzMgAHGJhDbGVhciBhbGwgaW52aXRlcyBnaXZlbiB0byBhbiBhY2NvdW50LgCIVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGVJc3N1ZXJgLgDQLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgaW52aXRlcyBmcm9tLuwtIGBsaW1pdGA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwZW5kaW5nIGludml0ZXMgdG8gcmVtb3ZlLkRzZXRfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAgYSEludml0ZSBhbiBhY2NvdW50LgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGludml0ZXMgbGVmdC4gVGhlIGNhbGwgaXMgZnJlZSBvbiBzdWNjZXNzLgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAkURENhbmNlbCBhbiBpbnZpdGUuACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuOHNjaGVkdWxlX2dhbWVzBAE8Z2FtZXNfc2NoZWR1bGVzvQQBWFZlYzxHYW1lU2NoZWR1bGVPZjxUPj4ACgjQU2NoZWR1bGVzIG5ldyBnYW1lcyBhY2NvcmRpbmcgdG8gcHJvdmlkZWQgc2NoZWR1bGVzLl0BU2NoZWR1bGVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciwgYW5kIGFmdGVyIHRoZSBvbmdvaW5nIGdhbWUgKGlmIHRoZXJlIGlzIGFueSkuVHJlbW92ZV9zY2hlZHVsZWRfZ2FtZQQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAsAQHNldF9wbGF5X2RlcG9zaXQEARhhbW91bnRFAQFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEFQFVcGRhdGUgdGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IGFtb3VudCBmb3IgZnV0dXJlIGFjY291bnQgc2lnbnVwcy40Y2xhaW1fYWlyZHJvcAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAEUgtAUNsYWltIGEgcHJpemUgZnJvbSB0aGUgYWlyZHJvcCBldmVudCBhdCBpbmRleCBgYWlyZHJvcF9pbmRleGAgc2NoZWR1bGVkIGZvcjRgZ2FtZV9pbmRleGAuADkBQSBnYW1lIHNjaGVkdWxlcyBvbmUgYWlyZHJvcCBldmVudCBwZXIgZW50cnkgaW4gaXRzIHNjaGVkdWxlJ3MgYGFpcmRyb3BzYCAoc2VlUQFbYEdhbWVTY2hlZHVsZWBdKTsgYGFpcmRyb3BfaW5kZXhgIHNlbGVjdHMgd2hpY2ggb2YgdGhlbSB0byBjbGFpbSBmcm9tLiBBIHBsYXllciB3aG8hAXdvbiBzZXZlcmFsIG9mIHRoZSBnYW1lJ3MgYWlyZHJvcCBldmVudHMgY2xhaW1zIGVhY2ggb2YgdGhlbSBzZXBhcmF0ZWx5LgBhAUVsaWdpYmlsaXR5IHJlcXVpcmVzIDIgY29uZGl0aW9ucyBvbiB0aGUgY2xhaW1hbnQgdG8gYmUgcmVjb2duaXplZCBhbmQgaGF2ZSBhdHRlbmRlZCB0aGVYZ2FtZS4gSW4gbW9yZSBkZXRhaWxzOlEBKiB0byBiZSBlaXRoZXIgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgKGByZWNvZ25pdGlvbi5pc19yZWNvZ25pemVkKClgKSBvciB0byBoYXZl2CAgcmVhY2hlZCB0aGUgcGVyc29uaG9vZCBzY29yZSAoYHJlYWNoZWRfcGVyc29uaG9vZGApLGEBKiBBTkQgZm9yIGBnYW1lX2luZGV4YCB0byBtYXRjaCB0aGUgcGFydGljaXBhbnQncyBgbGFzdF9hdHRlbmRlZF9nYW1lYCDigJQgaS5lLiB0aGUgbW9zdFEBICByZWNlbnQgZ2FtZSB0aGUgY2xhaW1hbnQgYWN0dWFsbHkgYXR0ZW5kZWQgbXVzdCBiZSBleGFjdGx5IHRoZSBnYW1lIHRoZSBhaXJkcm9wIGlzVQEgIHRpZWQgdG8uIFN1YnNlcXVlbnQgZ2FtZSBhdHRlbmRhbmNlIG92ZXJyaWRlcyB0aGlzIGluZm9ybWF0aW9uIHNvIHRoZSBjbGFpbSBtdXN0IGJlYQEgIG1hZGUgYmVmb3JlIGF0dGVuZGluZyBhbm90aGVyIGdhbWUuIEluIHBhcnRpY3VsYXIgYW4gYWlyZHJvcCBldmVudCBkcmF3biBsYXRlIHJlbGF0aXZlSQEgIHRvIHRoZSBnYW1lIHBsYXkgdGltZSBtdXN0IGJlIGNsYWltZWQgYmVmb3JlIHRoZSBjbGFpbWFudCBhdHRlbmRzIHRoZSBuZXh0IGdhbWUuALRDbGFpbXMgYWdhaW5zdCBhIGNhbmNlbGxlZCBnYW1lIGFyZSByZWplY3RlZC5sdGVzdG5ldF9mb3JjZV9zdGFydF9zaHVmZmxlAGUM1EZvcmNlIHN0YXJ0IHRoZSBzaHVmZmxlIGJlZm9yZSBpdHMgbm9ybWFsIHN0YXJ0IHRpbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy5sdGVzdG5ldF9mb3JjZV9lbmRfcmVwb3J0aW5nAGYM+EZvcmNlIGVuZCBhIGdhbWUncyByZXBvcnRpbmcgcGhhc2UgYmVmb3JlIGl0cyBub3JtYWwgZW5kIHRpbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy48c2V0X2dhbWVfcGhhc2VzBAEYcGhhc2Vz2QQBTFBoYXNlRHVyYXRpb25WYWx1ZXMADiyIT3ZlcnJpZGUgdGhlIGdhbWUgcGhhc2UgZHVyYXRpb25zLgApAVJlc3RyaWN0ZWQgdG8gW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXSAob3Igcm9vdCkuIFVudGlsIHJlc2V0LCBhbGwgZnV0dXJlNQFnYW1lIHNjaGVkdWxlcyB1c2UgdGhlc2UgcGhhc2VzIGluc3RlYWQgb2YgW2BDb25maWc6OkRlZmF1bHRQaGFzZUR1cmF0aW9uc2BdLg0BVG8gcmV2ZXJ0LCB0aGUgbWFuYWdlciByZS1pc3N1ZXMgdGhlIGNhbGwgd2l0aCB0aGUgZGVzaXJlZCBleHBsaWNpdMB2YWx1ZXMg4oCUIHRoZXJlIGlzIG5vIHNlcGFyYXRlIGNsZWFyIGV4dHJpbnNpYy4AGQFPbmx5IGNhbGxhYmxlIHdoaWxlIG5vIGdhbWUgZXhpc3RzIG9yIHRoZSBjdXJyZW50IGdhbWUgaXMgc3RpbGwgaW4gaXRzKQFSZWdpc3RyYXRpb24gcGhhc2U7IG90aGVyd2lzZSBmYWlscyB3aXRoIFtgRXJyb3I6OkludmFsaWRHYW1lU3RhdGVgXS4gVGhpcx0BcHJldmVudHMgY2hhbmdpbmcgcGhhc2UgZHVyYXRpb25zIG9uY2UgcGxheWVycyBoYXZlIGNvbW1pdHRlZCB0byBhIGdhbWWId2hvc2UgdGltaW5nIGlzIGFscmVhZHkgbG9ja2VkIGluLixjYW5jZWxfZ2FtZQAPDD0BQ2FuY2VsIHRoZSBjdXJyZW50IGdhbWUgd2hpbGUgaXQgaXMgc3RpbGwgaW4gdGhlIFJlZ2lzdHJhdGlvbiBvciBTaHVmZmxlIHBoYXNlLgDIUmVzdHJpY3RlZCB0byBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIChvciByb290KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMukQQEGE9wdGlvbgQEVAGVBAEIEE5vbmUAAAAQU29tZQQAlQQAAAEAAJUEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyxBaXJkcm9wVnJmcwQEUAABCBxBY2NvdW50BACZBAEBAUJvdW5kZWRWZWM8VnJmU2lnbmF0dXJlLCBDb25zdFUzMjx7IE1BWF9HQU1FX0FJUkRST1BTIGFzIHUzMiB9Pj4AAAAUQWxpYXMMARhwcm9vZnOlBAHUQm91bmRlZFZlYzxQLCBDb25zdFUzMjx7IE1BWF9HQU1FX0FJUkRST1BTIGFzIHUzMiB9Pj4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEAAJkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQQEUwAABAChBAEYVmVjPFQ+AACdBBAcc3BfY29yZRxzcjI1NTE5DHZyZjBWcmZTaWduYXR1cmUAAAgBKHByZV9vdXRwdXQIATBWcmZQcmVPdXRwdXQAARRwcm9vZmkEASBWcmZQcm9vZgAAoQQAAAKdBAClBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUEBFMAAAQAGQQBGFZlYzxUPgAAqQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGtBARTAAAEALkEARhWZWM8VD4AAK0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBsQQEUwAABAC1BAEYVmVjPFQ+AACxBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMYUmVwb3J0AAEIGFBlcnNvbgAAACROb3RQZXJzb24AAQAAtQQAAAKxBAC5BAAAAq0EAL0EAAACwQQAwQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzMEdhbWVTY2hlZHVsZQgcQXNzZXRJZAFpARxCYWxhbmNlAUUBABABOGdhbWVfcGxheV90aW1lOAEMdTMyAAEYcm91bmRzDAEIdTgAAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABIGFpcmRyb3BzxQQBSQFCb3VuZGVkVmVjPEdhbWVBaXJkcm9wPEFzc2V0SWQsIEJhbGFuY2U+LCBDb25zdFUzMjwKeyBNQVhfR0FNRV9BSVJEUk9QUyBhcyB1MzIgfT4+AADFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAckEBFMAAAQA1QQBGFZlYzxUPgAAyQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLEdhbWVBaXJkcm9wCBxBc3NldElkAWkBHEJhbGFuY2UBRQEADAEsZHJhd19vZmZzZXQ4AQx1MzIAATBjbGFpbV93aW5kb3c4AQx1MzIAARRwcml6Zc0EAXhBaXJkcm9wUHJpemU8QXNzZXRJZCwgQmFsYW5jZT4AAM0EDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlczBBaXJkcm9wUHJpemUIHEFzc2V0SWQBaQEwQXNzZXRCYWxhbmNlAUUBABABIGFzc2V0X2lkaQEBHEFzc2V0SWQAATBhc3NldF9hbW91bnRFAQEwQXNzZXRCYWxhbmNlAAEsbWF4X3dpbm5lcnM4AQx1MzIAASh3aW5uZXJfY2Fw0QQBHFBlcm1pbGwAANEEDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAA4AQx1MzIAANUEAAACyQQA2QQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzTFBoYXNlRHVyYXRpb25WYWx1ZXMAABQBMHJlZ2lzdHJhdGlvbjgBDHUzMgABHHNodWZmbGU4AQx1MzIAAUxwb3N0X3NodWZmbGVfbWFyZ2luOAEMdTMyAAEkcmVwb3J0aW5nOAEMdTMyAAE4cGxheWVyX3Byb2Nlc3M4AQx1MzIAAN0EDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0EENhbGwEBFQAASRYc2NoZWR1bGVfcGF5b3V0X3JvdW5kcwwBGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgABIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQxcU2NoZWR1bGUgcGF5b3V0IHJvdW5kcy4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LlhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIAAgyAUmVtb3ZlIGEgc2NoZWR1bGVkIHBheW91dCByb3VuZC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LkB0cmFuc2l0aW9uX3JvdW5kBAEscm91bmRfaW5kZXg4AQx1MzIAAxhIU3RhcnQgYSBuZXcgcm91bmQuAFEBVGhpcyBpcyB2YWxpZCBpZiB0aGUgY3VycmVudCByb3VuZCBpcyBmaW5pc2hlZCwgb3IgaWYgdGhlIGN1cnJlbnQgcm91bmQgZG9lc24ndCBoYXZlqHBsYW5uaW5nIGFuZCBhIHNjaGVkdWxlIGV4aXN0cyB0byBwbGFuIGl0LgC8VGhpcyBpcyBhIHRhc2ssIGFuZCBjYW4gYmUgY2FsbGVkIGZyb20gYW55Ym9keS5Qb3BlcmF0ZV9wYXlvdXRfcm91bmQIASxyb3VuZF9pbmRleDgBKFJvdW5kSW5kZXgAARRsaW1pdDgBDHUzMgAEPHhPcGVyYXRlIHNvbWUgcm91bmQgcGF5aW5nIG91dC4AUQFEcmFpbnMgcm91bmQncyBwYXJ0aWNpcGFudHMsIHVwIHRvIGEgbGltaXQuIEZvciBlYWNoIHBhcnRpY2lwYW50LCBhZGQgdGhlIGNhbGN1bGF0ZWQVAXJld2FyZCAoYGJhc2VfcmV3YXJkICsgcmVtYWluZGVyX3BvcnRpb25gKSB0byB0aGVpciBgY3JlZGl0YCBiYWxhbmNlLgBhAVRoZW4sIG1vdmVzIGZ1bmRzIG9uIHRoZSBwb3QgYWNjb3VudCBmcm9tIFBheW91dCB0byBDcmVkaXQsIHNvIHRoZXkgYXJlIG93ZWQgdG8gc3BlY2lmaWOgcGFydGljaXBhbnRzIHJhdGhlciB0aGFuIHRoZSByb3VuZCBwb29sLgBFAUZpbmFsbHksIHJlbGVhc2UgdGhlIGxlZnRvdmVyIGZyb20gdGhlIFBheW91dCBob2xkIGJhY2sgdG8gdGhlIHBvdCdzIGZyZWUgYmFsYW5jZVQoZnVuZHMgYXJlIHJlY3ljbGVkKS4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuAMQqIHJvdW5kX2luZGV4OiBUaGUgaW5kZXggb2YgdGhlIHJvdW5kIHRvIG9wZXJhdGUuEQEqIGxpbWl0OiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFydGljaXBhbnRzIHRvIG9wZXJhdGUgaW4gdGhpcyBjYWxsLiBjYXNoX291dAAFJFkBQ2FzaCBvdXQgaGFsZiBvZiB0aGUgc2NvcmUsIHJvdW5kZWQgdXAuIENvbnZlcnRzIHRoZSBzY29yZSBpbnRvIHBvaW50cyBmb3IgdGhlIGN1cnJlbnQlAXBheW91dCByb3VuZC4gQ2FsbGVyIG11c3QgaGF2ZSBuZXZlciByZWFjaGVkIHBlcnNvbmhvb2Qgc2luY2Ugb25ib2FyZGluZy4AtEl0IGNhbiBiZSBjYWxsZWQgb25jZSBwZXIgZ2FtZSBzZXNzaW9uIChlcmEpLgA9AU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpYyB1c2luZyBTY29yZUFzUGFydGljaXBhbnRYdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKQDMQWxpYXMgb3JpZ2luIGlzIG5vdCBhbGxvd2VkIGFzIHRoZXkgY2FuJ3QgY2FzaCBvdXQuNHJlZGVlbV9jcmVkaXQEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAGGFEBUmVkZWVtIGZ1bGwgYWNjdW11bGF0ZWQgY3JlZGl0LCB0cmFuc2ZlcnJpbmcgaXQgdG8gdGhlIHByb3ZpZGVkIGRlc3RpbmF0aW9uIGFjY291bnQuAORDcmVkaXQgaXMgY29udmVydGVkIGZyb20gcG9pbnRzIGR1cmluZyBwYXlvdXQgcHJvY2Vzc2luZy4ASQFPcmlnaW4gbXVzdCBiZSBhIHBlcnNvbiBhbGlhcywgYSBzaWduZWQgYWNjb3VudCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljwHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudCB0cmFuc2FjdGlvbiBleHRlbnNpb24pLiByZWdpc3RlcgQBDGtleeEEAQ0BT3B0aW9uPChNZW1iZXJPZjxUPiw8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZSkKPgAHNPBSZWdpc3RlciBhcyBhIHBlcnNvbiwgb3IgcmVzdW1lIHBlcnNvbmhvb2QgYWZ0ZXIgc3VzcGVuc2lvbi4AJQFSZXF1aXJlcyBzY29yZSA+PSBwZXJzb25ob29kIHRocmVzaG9sZCAob3IgaGF2aW5nIHByZXZpb3VzbHkgcmVhY2hlZCBpdCkuAGEBSWYgdGhlIHBhcnRpY2lwYW50IHdhcyBwcmV2aW91c2x5IHJlY29nbmlzZWQgYW5kIGlzIG5vdyBzdXNwZW5kZWQsIHRoZXkgbXVzdCBub3QgcHJvdmlkZYhhIGtleS4gVGhlIGV4aXN0aW5nIGtleSBpcyByZXVzZWQuAD0BSWYgdGhlIHBhcnRpY2lwYW50IHdhcyBuZXZlciByZWNvZ25pc2VkLCB0aGV5IG11c3QgcHJvdmlkZSBhIGtleSBhbmQgYSBwcm9vZiBvZhkBb3duZXJzaGlwIChga2V5YCBwYXJhbWV0ZXIpOiBhIHNpZ25hdHVyZSBvdmVyIGAicG9wIHJlZ2lzdGVyIHVzaW5nIiB8fExzZW5kZXJfYWNjb3VudF9pZGAuAEUBT3JpZ2luIG11c3QgYmUgc2lnbmVkIG9yIGEgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50XHRyYW5zYWN0aW9uIGV4dGVuc2lvbikuaHNldF9hYnNlbmNlX2dyYWNlX3NjaGVkdWxlBAEgc2NoZWR1bGXpBAFEQWJzZW5jZUdyYWNlVGllcnMACDh8U2V0IHRoZSBhYnNlbmNlIGdyYWNlIHNjaGVkdWxlLgApAUV2ZXJ5IHRpZXIgbXVzdCBzYXRpc2Z5OiBgMCA8PSB3aW5kb3cgPD0gOGAgYW5kIGBhbGxvd2VkX21pc3NlcyA8IHdpbmRvd2AuFQFgYWxsb3dlZF9taXNzZXMgPSAwYCBkaXNhYmxlcyBncmFjZSBlbnRpcmVseSAoYW55IGFic2VuY2UgaW1tZWRpYXRlbHkoc3VzcGVuZHMpLgAlAVRpZXJzIG11c3QgYmUgcHJvdmlkZWQgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4A/EFuIGVtcHR5IHNjaGVkdWxlIGRpc2FibGVzIHRoZSBncmFjZSBwZXJpb2QgZW50aXJlbHkgKGltbWVkaWF0ZR0Bc3VzcGVuc2lvbiBvbiBhbnkgbWlzc2VkIGdhbWUpLiBUaGUgbmV3IHJhdGlvIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQJAW9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9uIHdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlc1BgQWJzZW5jZUdyYWNlUmF0aW9gLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuhHNldF9wZXJzb25ob29kX3RocmVzaG9sZF9zY2hlZHVsZQQBIHNjaGVkdWxl9QQBYFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVycwAJQJhTZXQgdGhlIHBlcnNvbmhvb2QtdGhyZXNob2xkIHNjaGVkdWxlLgA4VGllcnMgbXVzdCBiZTowLSBub24tZW1wdHksyC0gc29ydGVkIGFzY2VuZGluZyBieSBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAsGQEtIGNhcHBlZCBieSBhIGZpbmFsIHRpZXIgd2l0aCBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZCA9PSB1MzI6Ok1BWGAsFQEtIHBlci10aWVyOiBgMCA8IHNjb3JlX3RocmVzaG9sZCA8PSBNQVhfUEVSU09OSE9PRF9USFJFU0hPTERgICg9IDIxKSzULSBoYXZlIG5vbi1kZWNyZWFzaW5nIGBzY29yZV90aHJlc2hvbGRgIGFjcm9zcyB0aWVycy4ACQFUaGUgbmV3IGN1cnZlIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb274d2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzIGBQZXJzb25ob29kVGhyZXNob2xkYC4AAQFBbHJlYWR5LXJlY29nbml6ZWQgcGFydGljaXBhbnRzIGFyZSBOT1QgcmV0cm9hY3RpdmVseSBzdXNwZW5kZWQ6EQF0aGUgbmV3IGJhciBvbmx5IGdhdGVzIGZ1dHVyZSBzY29yZSBldmFsdWF0aW9ucyBpbiBgc2V0X2F0dGVuZGFuY2VgLgCQQ2FsbGVkIGZyb20gYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuEEBBhPcHRpb24EBFQB5QQBCBBOb25lAAAAEFNvbWUEAOUEAAABAADlBAAABAgIaQQA6QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtBARTAAAEAPEEARhWZWM8VD4AAO0EDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNAQWJzZW5jZUdyYWNlVGllcgAADAFkcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZDgBDHUzMgABGHdpbmRvdwwBCHU4AAE4YWxsb3dlZF9taXNzZXMMAQh1OAAA8QQAAALtBAD1BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkEBFMAAAQA/QQBGFZlYzxUPgAA+QQMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlc1xQZXJzb25ob29kVGhyZXNob2xkVGllcgAACAFkcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZDgBDHUzMgABPHNjb3JlX3RocmVzaG9sZAwBCHU4AAD9BAAAAvkEAAEFDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0EENhbGwEBFQAAQxEc2VuZF9jcmVkaXRfdHJlZXMIAThmaXJzdF9zZXF1ZW5jZSgBMFRyZWVTZXF1ZW5jZQABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgASHEkBRGVsaXZlcnMgdGhlIHF1ZXVlZCBjcmVkaXQgdHJlZXMgdGhhdCBmaXQgb25lIFhDTSBtZXNzYWdlIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluLgBFAUF1dGhvcml6ZWQgY2FsbCBzdWJtaXR0ZWQgYnkgdGhpcyBwYWxsZXQncyBvZmZjaGFpbiB3b3JrZXI6IGl0IGlzIGFjY2VwdGVkIGZyb20gYREBbG9jYWwgb3IgaW4tYmxvY2sgc291cmNlIG9ubHksIHNvIGl0IGNhbm5vdCBiZSBzdWJtaXR0ZWQgZXh0ZXJuYWxseS4AWQFgZmlyc3Rfc2VxdWVuY2VgIG11c3QgYmUgdGhlIHNlcXVlbmNlIGF0IHRoZSBmcm9udCBvZiBgQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWVgLCB3aGljaD0BbWFrZXMgYSByZXRyeSB0aGF0IHJhY2VkIGEgc3VjY2Vzc2Z1bCBkZWxpdmVyeSBzdGFsZSByYXRoZXIgdGhhbiBhIHNlY29uZCBzZW5kLkxyZXBsYXlfY3JlZGl0X3RyZWVzBAEYYmxvY2tzBQUB6EJvdW5kZWRWZWM8QmxvY2tOdW1iZXJGb3I8VD4sIFQ6Ok1heENyZWRpdFRyZWVzUGVyTWVzc2FnZT4AE0D0UmVzZW5kcyB0aGUgY3JlZGl0IHRyZWVzIG9mIGBibG9ja3NgIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluLgBdAVBlcm1pc3Npb25sZXNzOiBhIGNyZWRpdCB0cmVlIGlzIGEgcHVibGljIGNvbW1pdG1lbnQgdGhlIGNsYWltcyBjaGFpbiBpcyBtZWFudCB0byBob2xkLF0BYW5kIHRoZSB0cmVlcyBhcmUgcmVhZCBmcm9tIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIHJhdGhlciB0aGFuIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIuUQFCbG9ja3Mgd2l0aG91dCBhIHRyZWUgYXJlIHNraXBwZWQuIEEgcmVzZW50IHRyZWUgY2FycmllcyBubyBzZXF1ZW5jZSBudW1iZXIsIHNvIHRoaXNdAWNhbm5vdCBkaXN0dXJiIHRoZSBjbGFpbXMgY2hhaW4ncyB0cmFja2luZyBvZiB0aGUgbGl2ZSBzdHJlYW0sIGFuZCBvbmUgdGhlIGNsYWltcyBjaGFpbgEBYWxyZWFkeSBob2xkcyBpcyBpZ25vcmVkIHRoZXJlIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGFueXRoaW5nLgBZAVRoZSBjYWxsZXIgcGF5cyBmb3IgdGhlIHJlbW90ZSB3b3JrLCBbYENvbmZpZzo6TmZ0Q2xhaW1zUmVtb3RlV2VpZ2h0YF0gcGVyIHRyZWUgb24gdG9wXQFvZiB0aGlzIGNhbGwncyBvd24gd2VpZ2h0LCBhbmQgdGhhdCBmZWUgaXMgdGhlIG9ubHkgdGhpbmcgbGltaXRpbmcgaG93IG9mdGVuIGFueW9uZSBtYXlZAXJlcGFpci4gSXQgaXMgZGVsaWJlcmF0ZWx5IG5vdCByYXRlLWxpbWl0ZWQ6IGEgbGltaXQgc2hhcmVkIGJldHdlZW4gYXdhcmQgYmxvY2tzIHdvdWxkWQFsZXQgYSByZXBsYXkgb2YgYW55IHJldGFpbmVkIHJvb3QsIGluY2x1ZGluZyBvbmUgYWxyZWFkeSBkZWxpdmVyZWQsIGNvbnN1bWUgdGhlIHJlcGFpcrhjYXBhY2l0eSBvZiB0aGUgdHJlZXMgdGhhdCByZWFsbHkgYXJlIG1pc3NpbmcuADQjIyBQYXJhbWV0ZXJzEQEtIGBibG9ja3NgOiBUaGUgYXdhcmQgYmxvY2tzIHRvIHJlc2VuZCwgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLnh0ZXN0bmV0X2dyYW50X25mdF9jbGFpbV9jcmVkaXQUASBjbGFpbWFudAkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABIGF0dGVzdGVyCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAARRyb3VuZAwBKFJvdW5kSW5kZXgAAURhdHRlc3Rlcl9wb3NpdGlvbjgBQEF0dGVzdGVyUG9zaXRpb24AZ2DoQXdhcmQgYW4gTkZUIGNsYWltIGNyZWRpdCB0byBgY2xhaW1hbnRgIG91dHNpZGUgb2YgYSBnYW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcuSQFJdCBleGlzdHMgYmVjYXVzZSBhIGNyZWRpdCBpcyBvdGhlcndpc2Ugb25seSBlYXJuZWQgYnkgYSBgUGVyc29uYCB2b3RlIGluIGEgcGxheWVkRQFnYW1lLCB3aGljaCBtYWtlcyB0aGUgY2xhaW0gY2hhaW4ncyBtaW50aW5nIHBhdGggaGFyZCB0byBleGVyY2lzZSBvbiBpdHMgb3duLiBUaGUBAWNyZWRpdCBpdCBhd2FyZHMgaXMgYSBub3JtYWwgb25lOiBpdCBpcyByZWNvcmRlZCBpbiB0aGlzIGJsb2NrJ3NFAVtgTmZ0Q2xhaW1DcmVkaXRBd2FyZHNgXSwgY29tbWl0dGVkIHRvIHRoZSBibG9jaydzIHRyZWUgYW5kIGNsYWltZWQgd2l0aCB0aGUgc2FtZUxwcm9vZiBhcyBhbnkgb3RoZXIuAFEBVGhlIGNyZWRpdCBpcyB0aGUgb25lIGBhdHRlc3RlcmAgd291bGQgZWFybiBgY2xhaW1hbnRgIGJ5IHJlcG9ydGluZyB0aGVtIGEgcGVyc29uIGluSQFgcm91bmRgIG9mIGBnYW1lX2luZGV4YCwgc28gaXQgZG9lcyBub3QgbmVlZCBhbnkgb2YgdGhvc2UgdG8gZXhpc3QuIEEgc2xvdCBpcyB1c2VkUQFvbmNlIHBlciBjbGFpbWFudCBhbmQgZ2FtZTogcmVwZWF0aW5nIGEgY2FsbCB3aXRoIHRoZSBzYW1lIGBnYW1lX2luZGV4YCwgYHJvdW5kYCBhbmRdAWBhdHRlc3Rlcl9wb3NpdGlvbmAgZm9yIHRoZSBzYW1lIGBjbGFpbWFudGAgZmFpbHMgcmF0aGVyIHRoYW4gYXdhcmRpbmcgYSBzZWNvbmQgY3JlZGl0LqBWYXJ5IGFueSBvZiB0aGVtIHRvIGF3YXJkIG1vcmUgdGhhbiBvbmUuACxQYXJhbWV0ZXJzOk0BLSBgY2xhaW1hbnRgOiB3aG8gdGhlIGNyZWRpdCBpcyBhd2FyZGVkIHRvLCBhbmQgdGhlIG9ubHkgaWRlbnRpdHkgdGhhdCBjYW4gbWludCBpdC5VAS0gYGF0dGVzdGVyYDogdGhlIHJlcG9ydGVyIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0bywgd2hpY2ggYWxvbmcgd2l0aCBgZ2FtZV9pbmRleGAhASAgYW5kIGByb3VuZGAgaXMgd2hhdCBtYWtlcyB0aGUgY3JlZGl0IGRpc3RpbmN0IGZyb20gYW5vdGhlciBjbGFpbWFudCdzLlEBLSBgZ2FtZV9pbmRleGA6IHRoZSBnYW1lIHRoZSBjcmVkaXQgaXMgYXR0cmlidXRlZCB0by4gQWxsIHRoZSBjcmVkaXRzIGEgYmxvY2sgYXdhcmRzHQEgIG11c3QgbmFtZSB0aGUgc2FtZSBnYW1lLCBzaW5jZSB0aGUgYmxvY2sncyB0cmVlIGlzIGxhYmVsbGVkIHdpdGggb25lLtQtIGByb3VuZGA6IHRoZSByb3VuZCBvZiB0aGF0IGdhbWUsIGJlbG93IGBNYXhSb3VuZHNgLmEBLSBgYXR0ZXN0ZXJfcG9zaXRpb25gOiB0aGUgYXR0ZXN0ZXIncyBwbGFjZSBpbiB0aGUgZ3JvdXAsIGJlbG93IGBNYXhHcm91cFNpemVgLiBUb2dldGhlcgEBICB3aXRoIGByb3VuZGAgaXQgcGlja3MgdGhlIGNsYWltYW50J3MgY3JlZGl0IHNsb3QgZm9yIHRoZSBnYW1lLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABhBAEYVmVjPFQ+AAAJBQw0aW5kaXZfc3VwcG9ydCBpZGVudGl0eTxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAADQUMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0EENhbGwEBFQAASAscmVzZXJ2ZV9pZHMEARRjb3VudDgBDHUzMgAABIRSZXNlcnZlIGEgbnVtYmVyIG9mIHBlcnNvbmFsIElEcy5QcmVuZXdfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAQS8UmVuZXcgYSBwZXJzb25hbCBJRC4gVGhlIElEIG11c3Qgbm90IGJlIGluIHVzZS5UY2FuY2VsX2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAIEhENhbmNlbCBhIHBlcnNvbmFsIElEIHJlc2VydmF0aW9uLlByZWNvZ25pemVfcGVyc29uaG9vZAQBMGlkc19hbmRfa2V5cxEFAfBCb3VuZGVkVmVjPChQZXJzb25hbElkLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4AAwQpAUdyYW50IHBlcnNvbmhvb2QgZm9yIGEgbGlzdCBvZiBjYW5kaWRhdGVzIHRoYXQgaGF2ZSByZXNlcnZlZCBwZXJzb25hbCBJRHMuSHN1c3BlbmRfcGVyc29uaG9vZAQBDGlkcx0FAbRCb3VuZGVkVmVjPFBlcnNvbmFsSWQsIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4ABAhdAVN1c3BlbmQgdGhlIHBlcnNvbmhvb2Qgb2YgYSBsaXN0IG9mIHJlY29nbml6ZWQgcGVvcGxlLiBUaGUgcGVvcGxlIG11c3Qgbm90IGN1cnJlbnRseSBiZShzdXNwZW5kZWQuRHJlc3VtZV9wZXJzb25ob29kBAEIaWQoAShQZXJzb25hbElkAAUEEQFSZXN1bWUgc29tZW9uZSdzIHBlcnNvbmhvb2QuIFRoZSBwZXJzb24gbXVzdCBjdXJyZW50bHkgYmUgc3VzcGVuZGVkLlhzdGFydF9tdXRhdGlvbl9zZXNzaW9uAAYIXQFTdGFydCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgZG9lcyBub3QgY2hlY2slAXdoZXRoZXIgYSBtdXRhdGlvbiBzZXNzaW9uIGlzIGFscmVhZHkgb25nb2luZyBhbmQgY2FuIHN0YXJ0IG5ldyBzZXNzaW9ucy5QZW5kX211dGF0aW9uX3Nlc3Npb24ABxBdAUVuZCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgY2FuIGVuZCBtdWx0aXBsZeBtdXRhdGlvbiBzZXNzaW9ucywgZXZlbiBvbmVzIG5vdCBzdGFydGVkIGJ5IHRoaXMgcGFsbGV0LgDYVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBubyBtdXRhdGlvbiBzZXNzaW9uIGlzIG9uZ29pbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQUEUwAABAAZBQEYVmVjPFQ+AAAVBQAABAgoCAAZBQAAAhUFAB0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBKARTAAAEACEFARhWZWM8VD4AACEFAAACKAAlBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBBDYWxsBARUAAEgeGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAAGCUBR3JhbnQgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBhdHRlc3QgcGVvcGxlLgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDILSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGF0dGVzdGF0aW9ucyB0by68LSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyB0byBncmFudC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFLxDbGVhciBhbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGZvciBhbiBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDkLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgYXR0ZXN0YXRpb25zIGZyb20uGGF0dGVzdBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABTGNhbmRpZGF0ZV9zaWduYXR1cmVxBAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAATByaW5nX3ZyZl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGkEAThTaWduYXR1cmVPZjxUPgABVGNvbnN1bWVyX3JlZ2lzdHJhdGlvbikFAaxPcHRpb248TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zT2Y8VD4+AAKMSEF0dGVzdCBhbiBhY2NvdW50LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBsZWZ0LgDwVGhlIGF1dGhvcml0eSB3aWxsIGhhdmUgdG8gZ2V0IHR3byBzaWduYXR1cmVzIGZyb20gdGhlIHVzZXI6TQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIGFjY291bnQga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgY2FuZGlkYXRlYCggIGFjY291bnQ7XQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIHJpbmctdnJmIGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYHJpbmdfdnJmX2tleWAYICBrZXkuAGEBVGhlIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGJvdGgga2V5cyBmcm9tIHdoaWNoIHRoZSBzaWduYXR1cmVzIGFyZSBnZW5lcmF0ZWQgaXMgY3JlYXRlZFUBYnkgY29uY2F0ZW5hdGluZyB0aGUgYnl0ZXMgInBvcDpwZW9wbGUtbGl0ZTpyZWdpc3RlciB1c2luZyIgd2l0aCB0aGUgZW5jb2RlZCBieXRlcyBvZi0BdGhlIHVzZXIncyBhY2NvdW50IChgY2FuZGlkYXRlYCksIGFuZCB0aGUgZW5jb2RlZCBieXRlcyBvZiB0aGUgcmluZyBWUkYga2V5RChgcmluZ192cmZfa2V5YCkuAFhPbiBzdWNjZXNzLCB0aGlzIGNhbGw6wC0gc3RvcmVzIGxpdGUgcmVnaXN0cmF0aW9uIGRhdGEgaW4gYExpdGVQZW9wbGVgLPQtIGFkZHMgdGhlIHVzZXIncyByaW5nIFZSRiBrZXkgdG8gdGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24uAAkBVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjcmVhdGVkICh2aWEgdGhl6GBtaWdyYXRpb246OkNyZWF0ZUxpdGVQZW9wbGVDb2xsZWN0aW9uYCBydW50aW1lIHVwZ3JhZGUgb3KkW2BDYWxsOjpjcmVhdGVfbGl0ZV9wZW9wbGVfY29sbGVjdGlvbmBdKS4A/C0gYGNhbmRpZGF0ZWA6IFRoZSBjYW5kaWRhdGUgdG8gYmUgcmVjb2duaXplZCBhcyBhIGxpdGUgcGVyc29uLmEBLSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93IHRoZSBhdHRlc3RlctwgIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBvbiB0aGVpciBiZWhhbGYuJQEtIGByaW5nX3ZyZl9rZXlgOiBUaGUgcmluZyBWUkYga2V5IHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGl0ZSBwZXJzb24uXQEtIGByaW5nX3ZyZl9rZXlfc2lnbmF0dXJlYDogVGhlIHJpbmcgVlJGIHNpZ25hdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbmRpZGF0ZSwgdG8gYWxsb3dVASAgdGhlIGF0dGVzdGVyIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhpcyBhbHNvIHByb3ZlIHRoZSBvd25lcnNoaXAgb2aQICB0aGUgcmluZyBWUkYga2V5IGJ5IHRoZSBjYW5kaWRhdGUuXQEtIGNvbnN1bWVyX3JlZ2lzdHJhdGlvbjogT3B0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGNhbiBjb250YWluIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb25dASAgdG8gZm9yd2FyZCBhIGNvbnN1bWVyIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IHRvIHRoZSBgTGl0ZUNvbnN1bWVyUmVnaXN0cmFyYCBzZXJ2aWNlLiBJZlEBICBwcmVzZW50LCBpdCBhbHNvIGNvbnRhaW5zIGEgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIHVzZXIgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlJQEgIGludGVudC4gTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgc2lnbmluZyBwYXlsb2FkIGdlbmVyYXRpb24gYXZhaWxhYmxlIGlu7CAgW3R5cGVzOjpMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXM6OnNpZ25pbmdfcGF5bG9hZF0uRHJlZ2lzdGVyX3dpdGhfZmVlDAEwcmluZ192cmZfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBpBAE4U2lnbmF0dXJlT2Y8VD4AAVRjb25zdW1lcl9yZWdpc3RyYXRpb24pBQGsT3B0aW9uPExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtc09mPFQ+PgADSC0BUmVnaXN0ZXIgYXMgYSBsaXRlIHBlcnNvbiBieSBwYXlpbmcgdGhlIGNvbmZpZ3VyZWQgbmF0aXZlIHJlZ2lzdHJhdGlvbiBmZWUuAGEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBjYW5kaWRhdGUncyBzaWduZWQgYWNjb3VudC4gVGhlIGNhbmRpZGF0ZSBwcm92ZXMgb3duZXJzaGlwIG9mIHRoZUUBYHJpbmdfdnJmX2tleWAgYnkgc2lnbmluZyB0aGUgc2FtZSByZWdpc3RyYXRpb24gbWVzc2FnZSB1c2VkIGJ5IFtgU2VsZjo6YXR0ZXN0YF0uAEUBT24gc3VjY2VzcywgdGhpcyBjYWxsIHRyYW5zZmVycyB0aGUgY29uZmlndXJlZCBmZWUgdG8gdGhlIHBhbGxldCBwb3QsIHN0b3JlcyBsaXRlOQFyZWdpc3RyYXRpb24gZGF0YSBpbiBgTGl0ZVBlb3BsZWAgYW5kIGFkZHMgdGhlIHJpbmcgVlJGIGtleSB0byB0aGUgbGl0ZSBtZW1iZXKQY29sbGVjdGlvbi4gVGhlIGZlZSBpcyBub3QgcmVmdW5kZWQuAAUBVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjcmVhdGVkIHZpYSB0aGXoYG1pZ3JhdGlvbjo6Q3JlYXRlTGl0ZVBlb3BsZUNvbGxlY3Rpb25gIHJ1bnRpbWUgdXBncmFkZSBvcqBbYENhbGw6OmNyZWF0ZV9saXRlX3Blb3BsZV9jb2xsZWN0aW9uYF0uACUBLSBgcmluZ192cmZfa2V5YDogVGhlIHJpbmcgVlJGIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpdGUgcGVyc29uLk0BLSBgcHJvb2Zfb2Zfb3duZXJzaGlwYDogVGhlIHJpbmcgVlJGIHNpZ25hdHVyZSBwcm92aW5nIG93bmVyc2hpcCBvZiBgcmluZ192cmZfa2V5YC5JAS0gYGNvbnN1bWVyX3JlZ2lzdHJhdGlvbmA6IE9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgdGhlIGNhbmRpZGF0ZSBhcyBhIGxpdGVVASAgY29uc3VtZXIuIFRoZSByZXF1ZXN0IG11c3QgY29udGFpbiBhIHNpZ25hdHVyZSBvdmVyIHRoZSB1c3VhbCBjb25zdW1lciBwYXlsb2FkIHdpdGgpASAgdGhlIHNpZ25lZCBjYW5kaWRhdGUgYWNjb3VudCBpbiBib3RoIHRoZSBhY2NvdW50IGFuZCB2ZXJpZmllciBwb3NpdGlvbnMuSGRpc3BhdGNoX2FzX3NpZ25lcgQBEGNhbGwgAUxCb3g8VDo6UnVudGltZUNhbGw+AAUARHNldF9hbGlhc19hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHZhbGlkX2F0X2Jsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABji0U2V0IHRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCBhIGxpdGUgYWxpYXMuALRUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGB2YWxpZF9hdF9ibG9ja2AgdW50aWzEYHZhbGlkX2F0X2Jsb2NrICsgYWNjb3VudF9zZXR1cF9ibG9ja190b2xlcmFuY2VgLgAlAVRoaXMgY2FsbCBpcyBhdXRob3JpemVkIHRocm91Z2ggdGhlIGBBc0xpdGVBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUxAWBQZW9wbGVMaXRlQXV0aGAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXlFAXByb3RlY3Rpb24uIFJlcGxheSBpcyBvbmx5IHByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZUkBYWNjb3VudCB0aGlzIGNhbGwgc2V0cy4gQXMgc29vbiBhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieU0BYW5vdGhlciBgc2V0X2FsaWFzX2FjY291bnRgKSwgdGhpcyBjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHlZAXBlcmlvZCBlbGFwc2VzLiBDb25zZXF1ZW50bHksIGlmIDIgc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlWQFvdmVybGFwcGluZyB2YWxpZGl0eSBwZXJpb2RzLCB0aGV5IGNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvci0BdGhlIGR1cmF0aW9uIG9mIHRoZSBvdmVybGFwLiBUbyBhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoDQF0cmFuc2FjdGlvbnMgYWxpdmUgKHdpdGhpbiB0aGVpciB2YWxpZGl0eSBwZXJpb2QpIGF0IHRoZSBzYW1lIHRpbWUuTHVuc2V0X2FsaWFzX2FjY291bnQABwB0Y3JlYXRlX2xpdGVfcGVvcGxlX2NvbGxlY3Rpb24ACCiIQ3JlYXRlIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgApAVRoaXMgY2FsbCBpcyB2YWxpZCBvbmx5IGlmIHRoZSBjb2xsZWN0aW9uIGRvZXNuJ3QgZXhpc3QgeWV0LiBPbmNlIGNyZWF0ZWQsjHRoaXMgY2FsbCBjYW5ub3QgYmUgZXhlY3V0ZWQgYWdhaW4uANRUaGUgY29sbGVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBmaXhlZCBjb25maWd1cmF0aW9uOrgtIE93bmVyOiBDb25maWd1cmVkIHZpYSBgQ29sbGVjdGlvbk93bmVyYCB0eXBlnC0gT25ib2FyZGluZyBzaXplOiBgTGl0ZU9uYm9hcmRpbmdTaXplYFAtIE1vZGU6IGBBcHBlbmRPbmx5YHwtIFJpbmcgc2l6ZTogYExpdGVSaW5nRXhwb25lbnRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikFBBhPcHRpb24EBFQBLQUBCBBOb25lAAAAEFNvbWUEAC0FAAABAAAtBQxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzeExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtcwgkQWNjb3VudElkAQQkU2lnbmF0dXJlAXEEABQBJHNpZ25hdHVyZXEEASRTaWduYXR1cmUAARxhY2NvdW50BAEkQWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZTEFASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1lNQUBQE9wdGlvbjxVc2VybmFtZT4AADEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQUEGE9wdGlvbgQEVAExBQEIEE5vbmUAAAAQU29tZQQAMQUAAAEAADkFDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBBDYWxsBARUAAE0UHJlZ2lzdGVyX2xpdGVfcGVyc29uDAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASB1c2VybmFtZTEFASBVc2VybmFtZQABRHJlc2VydmVkX3VzZXJuYW1lNQUBQE9wdGlvbjxVc2VybmFtZT4AAASUUmVnaXN0ZXIgYSBsaXRlIHBlcnNvbiBhcyBhIGNvbnN1bWVyLjxyZWdpc3Rlcl9wZXJzb24MAVBsaW5rZWRfbGl0ZV9pZGVudGl0eQQBMFQ6OkFjY291bnRJZAABTGxpdGVfaWRlbnRpdHlfcHJvb2ZxBAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAATx1c2VybmFtZV9jaG9pY2U9BQFYUGVyc29uYWxVc2VybmFtZUNob2ljZQABJJxSZWdpc3RlciBhIHByb3ZlbiBwZXJzb24gYXMgYSBjb25zdW1lci4AXQFUaGUgcGVyc29uIG11c3QgbGluayBhIHByZXZpb3VzbHkgcmVjb2duaXplZCBsaXRlIGlkZW50aXR5LCB3aGljaCB3aWxsIGJlIHVwZ3JhZGVkIHRvIGFZAWZ1bGwgcGVyc29uIGNvbnN1bWVyLiBJbiBvcmRlciB0byBwcm92ZSB0aGV5IGhvbGQgdGhlIGxpdGUgaWRlbnRpdHkgdGhleSB3YW50IHRvIGxpbmssYQF1c2VycyBtdXN0IHByb3ZpZGUgYSBgbGl0ZV9pZGVudGl0eV9wcm9vZmAgc2lnbmF0dXJlLCBjcmVhdGVkIGJ5IHNpZ25pbmcgdGhlIGFsaWFzIGJ5dGVziHVzaW5nIHRoZWlyIGxpdGUgY29uc3VtZXIgYWNjb3VudC4AOQFUaGUgY29uc3VtZXIgY2FuIGNob29zZSBpZiB0aGV5IHdhbnQgdG8gaGF2ZSBhIG5ldyB1c2VybmFtZSBvciB1c2UgYW4gZXhpc3RpbmcVAXJlc2VydmF0aW9uIG1hZGUgaW4gdGhlIG5hbWUgb2YgdGhlIGxpdGUgY29uc3VtZXIgd2hvIHdpbGwgYmUgbGlua2VkLmh0b3VjaF9wZXJzb25fYXV0aG9yaXphdGlvbgACEEkBVXBkYXRlIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBieSBlbnN1cmluZyB0aGV5IGNhbiBzdGlsbCBhdXRoZW50aWNhdGUgYXMgcGVvcGxlLgBRAVRoaXMgY2FsbCBtdXN0IGJlIHBlcmZvcm1lZCBhdCBsZWFzdCBgTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsYCBzZWNvbmRzIGFmdGVyIHRoZZRsYXN0IHVwZGF0ZSBpbiBvcmRlciB0byBwcmV2ZW50IHNwYW0ujHJlbW92ZV9leHBpcmVkX3VzZXJuYW1lX3Jlc2VydmF0aW9uCAEgdXNlcm5hbWUxBQEgVXNlcm5hbWUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMgOQFSZW1vdmUgYW4gZXhwaXJlZCBlbnRyeSBmcm9tIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gcXVldWUuIFRoZSB0YXJnZXQgZW50cnkgaXMBAWlkZW50aWZpZWQgYnkgYGFjY291bnRgIGFuZCBjYW4gYmUgYXQgYW55IHBvc2l0aW9uIGluIHRoZSBxdWV1ZS4dAUVhY2ggY2FsbCByZW1vdmVzIGV4YWN0bHkgb25lIGVudHJ5LCBzbyBpdCBtdXN0IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvkGNsZWFyIG11bHRpcGxlIGV4cGlyZWQgcmVzZXJ2YXRpb25zLgAtAVRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4gVGhlIGBhY2NvdW50YDEBcGFyYW1ldGVyIGlzIGFsc28gdXNlZCBmb3IgdHJhbnNhY3Rpb24gcG9vbCBkZWR1cGxpY2F0aW9uLCBhbGxvd2luZyBwYXJhbGxlbBEBc3VibWlzc2lvbnMgdGhhdCB0YXJnZXQgZGlmZmVyZW50IGV4cGlyZWQgZW50cmllcyBpbiB0aGUgc2FtZSBxdWV1ZS5UdXBkYXRlX2lkZW50aWZpZXJfa2V5BAE4aWRlbnRpZmllcl9rZXl1BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIABBDYVXBkYXRlIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIga2V5IG9mIGEgY29uc3VtZXIuAEEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBhY2NvdW50IHJlZ2lzdGVyZWQgZm9yIHRoYXQgY29uc3VtZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIwY3JlZGliaWxpdHkuhHNldF91c2VybmFtZV9yZXNlcnZhdGlvbl9kdXJhdGlvbgQBIGR1cmF0aW9uKAEMdTY0AAUMHQFTZXQgdGhlIGR1cmF0aW9uIGZvciB3aGljaCBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIGlzIHZhbGlkLCBpbiBzZWNvbmRzLgBgVGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QuTGRlbW90ZV9hdXRoX2V4cGlyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAcMMQFEZW1vdGUgYSBmdWxsIHBlcnNvbiB0byBhIGxpdGUgcGVyc29uIGFmdGVyIHRoZWlyIGF1dGhvcml6YXRpb24gaGFzIGV4cGlyZWQuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuvHNldF9ub3RpZmljYXRpb25fc3RhdGVtZW50X2FjY291bnRfZm9yX3NlcXVlbmNlCAEkcmVmZXJlbmNlQQUBVE5vdGlmaWNhdGlvblJlZmVyZW5jZQABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACDwNAUFzc29jaWF0ZSBhIHN0YXRlbWVudCBhY2NvdW50IHdpdGggYSBub3RpZmljYXRpb24gY29udGV4dCBzZXF1ZW5jZS4AUQFUaGUgYXNzb2NpYXRlZCBhY2NvdW50IGNhbiBzdWJtaXQgc3RhdGVtZW50cyB3aGlsZSB0aGlzIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gaXMcYWN0aXZlLjEBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46Ok5vdGlmaWNhdGlvbkFsaWFzYCwgY3JlYXRlZCBieSB0aGUgYEFzUmVzb3VyY2VzYE0BKGBSZWdpc3Rlck5vdGlmaWNhdGlvbldpdGhQcm9vZiguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi4dAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlIGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uIHN0YXRlaGB7YWNjb3VudF9pZCwgcmVmZXJlbmNlfWAuACxQYXJhbWV0ZXJzOsQqIGByZWZlcmVuY2VgOiBub3RpZmljYXRpb24gcGVyaW9kL3NlcXVlbmNlIHBhaXIuCQEgIC0gYHJlZmVyZW5jZS5wZXJpb2RgIG11c3QgYmUgdGhlIGN1cnJlbnQgc3RhdGVtZW50LXN0b3JlIHBlcmlvZC4BASAgLSBgcmVmZXJlbmNlLnNlcWAgbXVzdCBiZSBpbiBgMC4uPU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYC5NASogYGFjY291bnRfaWRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUuIE11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBieSBhbm90aGVycCAgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbi6MY2xlYXJfZXhwaXJlZF9ub3RpZmljYXRpb25fc2VxdWVuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEMc2VxDAEIdTgACSgtAUNsZWFyIGEgc3RhbGUgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhbmQgcmV2b2tlIGl0cyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiEBU3VjY2VlZHMgb25seSB3aGVuIHRoZSByZWdpc3RyYXRpb24ncyBwZXJpb2QtZGVyaXZlZCBleHBpcnkgaGFzIGVsYXBzZWQuWQFPbiBzdWNjZXNzLCByZW1vdmVzIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gc3RhdGUgYW5kIGRlY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgAsUGFyYW1ldGVyczpZASogYGFjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCBhIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24uXQEqIGBzZXFgOiBub3RpZmljYXRpb24gc2VxdWVuY2UgdG8gY2xlYXIuIE11c3QgbWF0Y2ggc3RvcmVkIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZSBhbmQgYmWYICBpbiBgMC4uPU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYC5sc2V0X3N0YXRlbWVudF9zdG9yZV9hY2NvdW50DAEYcGVyaW9kOAEMdTMyAAEMc2VxOAEMdTMyAAE4dGFyZ2V0X2FjY291bnQEATBUOjpBY2NvdW50SWQACiwJAUNsYWltIGFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGZvciBhIHRhcmdldCBhY2NvdW50LgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpTdG10U3RvcmVBbGlhc2AsIHByb2R1Y2VkIGJ5IHRoZSBgQXNSZXNvdXJjZXNgVQEoYFJlZ2lzdGVyU3RhdGVtZW50U3RvcmVBbGxvd2FuY2UoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHByb29mIHZhbGlkYXRpb24uRQFPbiBzdWNjZXNzLCBpbmNyZWFzZXMgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGB0YXJnZXRfYWNjb3VudGAgYW5kIHN0b3JlcyB0aGWYbWFwcGluZyBpbiBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYC4ALFBhcmFtZXRlcnM6PQEqIGBwZXJpb2RgOiBkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2guIE11c3QgYmUgaW4gdGhlIGFjY2VwdGVkIHBlcmlvZCB3aW5kb3cuRQEqIGBzZXFgOiBzbG90IG51bWJlciB3aXRoaW4gdGhlIHBlcmlvZCwgYm91bmRlZCBieSB0aGUgY29sbGVjdGlvbi1zcGVjaWZpYyBsaW1pdC7MKiBgdGFyZ2V0X2FjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCB0byBhdXRob3JpemUujGNsZWFyX2V4cGlyZWRfc3RtdF9zdG9yZV9hbGxvd2FuY2VzCAEYcGVyaW9kOAEMdTMyAAEsZmlyc3RfZW50cnkIARRBbGlhcwALFPBSZW1vdmUgZXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyBmb3IgYSBwYXN0IHBlcmlvZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC5FAVJlbW92ZXMgdXAgdG8gYFN0bXRTdG9yZUNsZWFudXBMaW1pdGAgZW50cmllcyBmcm9tIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgIGZvckEBdGhlIGdpdmVuIGBwZXJpb2RgLCBkZWNyZWFzaW5nIHRoZSBzdGF0ZW1lbnQgYWxsb3dhbmNlIGZvciBlYWNoIHJlbW92ZWQgYWNjb3VudC5cY2xhaW1fbG9uZ190ZXJtX3N0b3JhZ2UMARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAwwOQFDbGFpbSBsb25nLXRlcm0gc3RvcmFnZSBvbiBhIHJlbW90ZSBjaGFpbiB1c2luZyBhbiBhbm9ueW1vdXMgbWVtYmVyc2hpcCBwcm9vZi4AUQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6TG9uZ1Rlcm1TdG9yYWdlQ2xhaW0oYWxpYXMsIGNvbGxlY3Rpb24pYCwgY3JlYXRlZCBieSB0aGVVAWBBc1Jlc291cmNlc2AgKGBDbGFpbUxvbmdUZXJtU3RvcmFnZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcmluZy1WUkYgcHJvb2YsdmFsaWRhdGlvbi4ALFBhcmFtZXRlcnM6SQEqIGBwZXJpb2RgOiB0aGUgY2xhaW1pbmcgcGVyaW9kLiBNdXN0IGJlIHRoZSBjdXJyZW50IHBlcmlvZCBvciB0aGUgcHJldmlvdXMgb25lIGlmaCAgd2l0aGluIHRoZSBncmFjZSB3aW5kb3cuDQEqIGBjb3VudGVyYDogdGhlIGNsYWltIGNvdW50ZXIgd2l0aGluIHRoZSBwZXJpb2QuIE11c3QgYmUgbGVzcyB0aGFuLQEgIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgLiBFYWNoIGNvdW50ZXIgcHJvZHVjZXMgYSBkaXN0aW5jdCBhbGlhcy4lASogYGFjY291bnRfaWRgOiB0aGUgYWNjb3VudCB0byBhdXRob3JpemUgZm9yIHN0b3JhZ2Ugb24gdGhlIHJlbW90ZSBjaGFpbi6cY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzCAEYcGVyaW9kOAEMdTMyAAEUbGltaXQ4AQx1MzIADSDwQ2xlYXIgc3BlbnQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBmb3IgYW4gZXhwaXJlZCBwZXJpb2QuAEUBVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGwgYXV0aG9yaXplZCB2aWEgdGhlIGBhdXRob3JpemVgIGF0dHJpYnV0ZS4gSXQgY2FuIGJlJQFjYWxsZWQgYnkgYW55b25lIG9uY2UgYSBwZXJpb2QgaGFzIGZ1bGx5IGV4cGlyZWQgKHBhc3QgdGhlIGdyYWNlIHdpbmRvdykuACxQYXJhbWV0ZXJzOtAqIGBwZXJpb2RgOiB0aGUgZXhwaXJlZCBwZXJpb2QgdG8gY2xlYXIgYWxpYXNlcyBmb3IuAQEqIGBsaW1pdGA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIHJlbW92ZSBpbiB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLj0FDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzWFBlcnNvbmFsVXNlcm5hbWVDaG9pY2UAAQgoU3RhbmRhbG9uZQQAMQUBIFVzZXJuYW1lAAAALFJlc2VydmF0aW9uBAAxBQEgVXNlcm5hbWUAAQAAQQUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNUTm90aWZpY2F0aW9uUmVmZXJlbmNlAAAIARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAAARQUMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQQQ2FsbAQEVAABCChhZGRfY2h1bmtzDAE0cmluZ19leHBvbmVudEkFATBSaW5nRXhwb25lbnQAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAE4ZW5jb2RlZF9jaHVua3NNBQGYQm91bmRlZFZlYzx1OCwgTWF4RW5jb2RlZENodW5rc0xlbjxUPj4AABBoQWRkcyBhIG5ldyBwYWdlIG9mIGNodW5rcy4AQQFUaGUgaGFzaCBvZiB0aGUgY2h1bmtzIG11c3QgbWF0Y2ggdGhlIGhhc2ggc3RvcmVkIG9uLWNoYWluIGluIGBDaHVua1BhZ2VIYXNoZXNgLtxUaGUgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHBhZ2UgYWxyZWFkeSBleGlzdHMgb24tY2hhaW4uVHNldF9jaHVua19wYWdlX2hhc2hlcwgBNHJpbmdfZXhwb25lbnRJBQEwUmluZ0V4cG9uZW50AAEscGFnZV9oYXNoZXNRBQHMQm91bmRlZFZlYzxDaHVua1BhZ2VIYXNoLCBDb25zdFUzMjxNQVhfUEFHRV9DT1VOVD4+AAEYDQFTZXRzIHRoZSBleHBlY3RlZCBoYXNoZXMgZm9yIGNodW5rIHBhZ2VzIGZvciBhIGdpdmVuIHJpbmcgZXhwb25lbnQuACEBQWxsb3dzIHNldHRpbmcgdGhlIGV4cGVjdGVkIGhhc2hlcyB0aGF0IGNodW5rcyBtdXN0IG1hdGNoIHdoZW4gYWRkZWQgdmlhNGBhZGRfY2h1bmtzYC4ArFRoZSBvcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSQUQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwUmluZ0V4cG9uZW50AAEMEFIyZTkACQAUUjJlMTAACgAUUjJlMTQADgAATQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABRBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABJBAEYVmVjPFQ+AABVBQxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0EENhbGwEBFQAATgsbWVyZ2VfcmluZ3MMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAAMUQFNZXJnZSB0aGUgbWVtYmVycyBpbiB0d28gcmluZ3MgaW50byBhIHNpbmdsZSwgbmV3IHJpbmcuIEluIG9yZGVyIGZvciB0aGUgcmluZ3MgdG8gYmU1AWVsaWdpYmxlIGZvciBtZXJnaW5nLCB0aGV5IG11c3QgYmUgYmVsb3cgMS8yIG9mIG1heCBjYXBhY2l0eSwgaGF2ZSBubyBwZW5kaW5n4HN1c3BlbnNpb25zIGFuZCBub3QgYmUgdGhlIHRvcCByaW5nIHVzZWQgZm9yIG9uYm9hcmRpbmcuTHNldF9vbmJvYXJkaW5nX3NpemUIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgABBE0BRm9yY2Ugc2V0IHRoZSBvbmJvYXJkaW5nIHNpemUgZm9yIGEgY29sbGVjdGlvbi4gVGhpcyBjYWxsIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4wc2VsZl9pbmNsdWRlDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAARhtZW1iZXIIASxNZW1iZXJPZjxUPgABNGNhbGxfdmFsaWRfYXQoAQx1NjQAAihBAUFsbG93IGEgbWVtYmVyIHdhaXRpbmcgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUgdG8gaW5jbHVkZSB0aGVtc2VsdmVzIGludG8gYSByaW5nTQFhZnRlciBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLiBUaGlzIGJ5cGFzc2VzIHRoZSBub3JtYWwgY29ob3J0LWJhc2VkIG9uYm9hcmRpbmcgc2l6ZTByZXF1aXJlbWVudC4AOQFUaGlzIGNhbGwgbXVzdCBiZSBkaXNwYXRjaGVkIHdpdGggYSBgU2VsZkluY2x1ZGVgIG9yaWdpbiwgYXV0aGVudGljYXRlZCBieSB0aGUhAWBBc01lbWJlcmAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBUaGUgcmluZ3MgbXVzdCBiZSBpbiBhcHBlbmQtb25seSBtb2RlLgBNAVRoZSBgY2FsbF92YWxpZF9hdGAgcGFyYW1ldGVyIGRpY3RhdGVzIHRoZSB0aW1lIHdpbmRvdyBpbiB3aGljaCB0aGlzIHRyYW5zYWN0aW9uIGlzTQF2YWxpZCBhbmQgcmVwcmVzZW50cyB0aGUgdGltZXN0YW1wIChpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoKSB3aGVuIHRoaXMgY2FsbDhiZWNvbWVzIHZhbGlkLlRidWlsZF9yaW5nX2F1dGhvcml6ZWQYAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX2V4cG9uZW50SQUBMFJpbmdFeHBvbmVudAABIHJldmlzaW9u5AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAEodG9faW5jbHVkZTgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AQx1MzIAZCzYQnVpbGQgYSByaW5nIHJvb3QgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uANhTdWJtaXR0ZWQgYnkgdGhlIE9DVyB3aXRoIGEgYHRvX2luY2x1ZGVgIHNuYXBzaG90IGZyb20xAVtgUGFsbGV0OjpzaG91bGRfYnVpbGRfcmluZ2BdLiBMZWZ0b3ZlcnMgZnJvbSBsYXRlciBvbmJvYXJkaW5nIGFyZSBwaWNrZWQgdXAZAW9uIHRoZSBuZXh0IE9DVyB0aWNrLCBvciBieSB0aGUgbWVtYmVyIHZpYSBbYFNlbGY6OnNlbGZfaW5jbHVkZWBdIHdoZW6AY29ob3J0IGdhdGluZyBzdGFsbHMgb25ib2FyZGluZy4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuaG9uYm9hcmRfbWVtYmVyc19hdXRob3JpemVkFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEQaGVhZDgBJFBhZ2VJbmRleAABMGZpcnN0X21lbWJlclkFAUxPcHRpb248TWVtYmVyT2Y8VD4+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBlIBEBT25ib2FyZCBtZW1iZXJzIGZyb20gdGhlIG9uYm9hcmRpbmcgcXVldWUgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5wbWVyZ2VfcXVldWVfcGFnZXNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEwaW5pdGlhbF9oZWFkOAEkUGFnZUluZGV4AAEgbmV3X2hlYWQ4ASRQYWdlSW5kZXgAZgwNAU1lcmdlIHRoZSB0b3AgdHdvIG9uYm9hcmRpbmcgcXVldWUgcGFnZXMgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoByZW1vdmVfc3VzcGVuZGVkX2tleXNfYXV0aG9yaXplZBABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9u5AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBnIOxSZW1vdmUgc3VzcGVuZGVkIGtleXMgZnJvbSBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmxkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGgMyERlbGV0ZSBhIHBhZ2UgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AZW5xdWV1ZV9yaW5nX2RlbGV0aW9uX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaRzsRW5xdWV1ZSBhIHJpbmcgZm9yIGRlbGV0aW9uIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AIQFBcmNoaXZlcyB0aGUgcmluZyByb290LCBub3RpZmllcyBzdWJzY3JpYmVycywgcmVtb3ZlcyByaW5nIG1ldGFkYXRhLCBhbmT4ZW5xdWV1ZXMgcmluZyBwYWdlcyBpbnRvIGBSaW5nRGVsZXRpb25RdWV1ZWAgZm9yIHByb2Nlc3NpbmcgYnl4YGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZGAuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZGVsZXRlX29uYm9hcmRpbmdfcXVldWVfcGFnZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGoc/ERlbGV0ZSBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIGBNZW1iZXJzYCBlbnRyaWVzIGZvciB0aGUgbWVtYmVycyBpbiB0aGUgcGFnZSwgdGhlbiByZW1vdmVzJQF0aGUgcGFnZSBpdHNlbGYuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MgYW5kIHJpbmcgcGFnZXMgaGF2ZSBiZWVuOGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZmluYWxpemVfY29sbGVjdGlvbl9kZWxldGlvbl9hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAaxx0RmluYWxpemUgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCByZW1haW5pbmcgcGVyLWNvbGxlY3Rpb24gc3RvcmFnZSBhbmQgdGhlIG93bmVyJ3MgaWRlbnRpZmllchkBcmVmZXJlbmNlLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzLCByaW5nIHBhZ2VzLCBhbmQgb25ib2FyZGluZ5BxdWV1ZSBwYWdlcyBoYXZlIGJlZW4gZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLohyZW1vdmVfb3JwaGFuZWRfbWVtYmVyc19hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAbiT0UmVtb3ZlIG9ycGhhbmVkIGBNZW1iZXJzYCBlbnRyaWVzIGZvciBhIHN1c3BlbmRlZCBjb2xsZWN0aW9uLgBVAVN1c3BlbmRlZCBtZW1iZXJzIGNhbiBsZWF2ZSBlbnRyaWVzIGluIGBNZW1iZXJzYCB0aGF0IG91dGxpdmUgdGhlaXIgcmluZywgc28gYmVmb3JlIGH8Y29sbGVjdGlvbiBjYW4gYmUgZmluYWxpemVkIHRoZXNlIG11c3QgYmUgZHJhaW5lZC4gRHJhaW5zIHVwIHRvOQFgT1JQSEFORURfTUVNQkVSU19SRU1PVkFMX0xJTUlUYCBlbnRyaWVzIGZvciBgaWRlbnRpZmllcmAuIFRoZSBvZmZjaGFpbiB3b3JrZXI9AXJlc3VibWl0cyB1bnRpbCB0aGUgcHJlZml4IGlzIGVtcHR5LCBhZnRlciB3aGljaCB0aGUgY29sbGVjdGlvbiBkZWxldGlvbiBjYW4gYmUoZmluYWxpemVkLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuaG1hcmtfcmluZ19zdGFsZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGwY8E1hcmsgYSByaW5nIGFzIHN0YWxlIHNvIHRoZSBvZmZjaGFpbiB3b3JrZXIgd2lsbCByZWJ1aWxkIGl0LgAdAUFueW9uZSBjYW4gc3VibWl0IHRoaXMgdHJhbnNhY3Rpb24gaWYgdGhlIHJpbmcgaGFzIG1lbWJlcnMgdGhhdCBhcmUgbm90JQF5ZXQgaW5jbHVkZWQgaW4gdGhlIHJvb3QgKGB0b3RhbCA+IGluY2x1ZGVkYCkgYW5kIHRoZSByaW5nIGlzIG5vdCBhbHJlYWR5JQFtYXJrZWQgc3RhbGUuIFRoaXMgaXMgYSByZWNvdmVyeSBtZWNoYW5pc20gaW4gY2FzZSB0aGUgYFN0YWxlUmluZ3NgIGVudHJ5bHdhcyBsb3N0IG9yIG5ldmVyIGluc2VydGVkLnRjbGVhbl91cF9vbGRfcm9vdHNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABFGxpbWl0OAEMdTMyAG0ggENsZWFuIHVwIGV4cGlyZWQgb2xkIHJpbmcgcm9vdHMuABEBUmVtb3ZlcyB1cCB0byBgbGltaXRgIG9sZCByaW5nIHJvb3RzIGZvciB0aGUgZ2l2ZW4gcmluZyBpbiB0aGUgZ2l2ZW4sY29sbGVjdGlvbi4A0FRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBgTG9jYWxgIG9yIGBJbkJsb2NrYC4A9FRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuWQUEGE9wdGlvbgQEVAEIAQgQTm9uZQAAABBTb21lBAAIAAABAABdBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0EENhbGwEBFQAAXgUc3BsaXQEAShzcGxpdF9pbnRvYQUBfQFCb3VuZGVkVmVjPAooRGVub21pbmF0aW9uLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksIFQ6OgpNYXhTcGxpdE91dHB1dHMsPgAAUIRTcGxpdCBhIGNvaW4gaW50byBtdWx0aXBsZSBjb2lucy4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuANRUaGUgY2FsbCBpcyBmcmVlIGFuZCBhZ2VzIHRoZSByZXN1bHRpbmcgY29pbnMgYnkgb25lLgBJAVRoZSBgc3BsaXRfaW50b2AgcGFyYW1ldGVyIGNvbnRhaW5zIGEgdmVjdG9yIG9mIHBhaXJzLCBlYWNoIHBhaXIgY29udGFpbmluZyBhIGNvaW5VAXZhbHVlIGFuZCBhIGxpc3Qgb2YgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuIEZvciBlYWNoIHBhaXIsIGEgbmV3IGNvaW4gd2l0aCB0aGUgZ2l2ZW7EdmFsdWUgaXMgY3JlYXRlZCBmb3IgZWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IGlkLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKeAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLlUBKiBUaGUgZGVub21pbmF0aW9uIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uLQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW4gY29pbi4JASogVGhlIG51bWJlciBvZiBvdXRwdXRzIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhTcGxpdE91dHB1dHNdLiUBKiBUaGUgYWdlIG9mIHRoZSBuZXcgY29pbnMgaXMgc2V0IHRvIHRoZSBhZ2Ugb2YgdGhlIG9yaWdpbiBjb2luIHBsdXMgb25lLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLiB0cmFuc2ZlcgQBCHRvBAEwVDo6QWNjb3VudElkAAEsjFRyYW5zZmVyIGEgY29pbiB0byBhbm90aGVyIGFjY291bnQuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgDQVGhlIGNhbGwgaXMgZnJlZSBhbmQgYWdlcyB0aGUgcmVzdWx0aW5nIGNvaW4gYnkgb25lLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKdwqIFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4u4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uXGxvYWRfcmVjeWNsZXJfd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwaQQBOFNpZ25hdHVyZU9mPFQ+AAJIaExvYWQgY29pbiBpbnRvIGEgcmVjeWNsZXIuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBEVGhlIGNhbGwgaXMgZnJlZS4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCkBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLlEBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgY29pbidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLgUBKiBUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBmb3IgdGhlIGNvaW4ncyB2YWx1ZSBtdXN0IGFscmVhZHkgZXhpc3RZASogT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgbG9hZGVkIGtleSdzIGRlcG9zaXQuhGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMHByZXNlcnZhdGlvbnEFAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGkEAThTaWduYXR1cmVPZjxUPgADhJBMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlci4AjFRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBvcmlnaW4uAIBUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkLgBFAVRoZSBgcHJlc2VydmF0aW9uYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyB0aGUgYXNzZXQgdHJhbnNmZXIgc2hvdWxkIHByZXNlcnZlIHRoZURzaWduZXIncyBhY2NvdW50LgBRAVRoZSBgaW5zdGFuY2VfaWRgIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hpY2ggY29pbmFnZSBpbnN0YW5jZSB0byBsb2FkIGludG8sIGFuZCBoZW5jZZh3aGljaCB1bmRlcmx5aW5nIGFzc2V0IGlzIHRyYW5zZmVycmVkLgBBAVRoZSBgdmFsdWVgIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGRlbm9taW5hdGlvbiB0byBiZSBsb2FkZWQgaW50byB0aGUgcmVjeWNsZXIuPQFUaGUgZXF1aXZhbGVudCBhbW91bnQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgc2lnbmVyIHRvTHRoZSBwYWxsZXQgYWNjb3VudC4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AVQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgcGFyYW1ldGVyIGlzIHRoZSBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlNGBtZW1iZXJfa2V5YC4ANFJlcXVpcmVtZW50czrcKiBUaGUgYGluc3RhbmNlX2lkYCBtdXN0IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGluc3RhbmNlLgEBKiBUaGUgYG1lbWJlcl9rZXlgIG11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLtAqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCAoaS5lLiB3ZWxsIGZvcm1lZCkuQQEqIFRoZSBgdmFsdWVgIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uVQEqIFRoZSBzaWduZXIgbXVzdCBoYXZlIGVub3VnaCBiYWxhbmNlIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IHRvIGNvdmVyIHRoZSBlcXVpdmFsZW50kCAgYW1vdW50IGZvciB0aGUgZ2l2ZW4gZGVub21pbmF0aW9uLlkBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU0YG1lbWJlcl9rZXlgLlkBKiBPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBtdXN0IGNvdmVyIHRoZSBsb2FkZWQga2V5J3MgZGVwb3NpdC6gbG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMHByZXNlcnZhdGlvbnEFAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGkEAThTaWduYXR1cmVPZjxUPgAPUC0BTG9hZCBleHRlcm5hbCBhc3NldCBpbnRvIGEgcmVjeWNsZXIgKGluZmFsbGlibGUsIHZhbGlkYXRlZCB1bnBhaWQgdmFyaWFudCkuAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGV0dHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnSNAVtgQXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZGBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWQpLgDcVGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YWxpZGF0aW9uIHBoYXNlIG11c3QgZW5zdXJlOswtIFRoZSBgaW5zdGFuY2VfaWRgIHJlZmVycyB0byBhbiBleGlzdGluZyBpbnN0YW5jZS4VAS0gVGhlIGBtZW1iZXJfa2V5YCBpcyB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLkUBLSBUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLi0BLSBUaGUgYHZhbHVlYCBpcyB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kQQEgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0sIGFuZCBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8gYW4gYXNzZXQgYW1vdW50LlkBLSBUaGUgc2lnbmVyIGhhcyBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudCBhbW91bnTkICBmb3IgdGhlIGdpdmVuIGRlbm9taW5hdGlvbiAocmVzcGVjdGluZyBgcHJlc2VydmF0aW9uYCkurC0gVGhlIG5vbmNlIGlzIHZhbGlkIGZvciByZXBsYXkgcHJvdGVjdGlvbi4dAS0gVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIGBpbnN0YW5jZV9pZGAgYW5kIGB2YWx1ZWAgYWxyZWFkeSBleGlzdHMuSQEtIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIGNvdmVycyB0aGUgbG9hZGVkIGtleSdzIGRlcG9zaXQuAERUaGUgY2FsbCBpcyBmcmVlLrhsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUaXRlbXN1BQHUQm91bmRlZFZlYzxVbnBhaWRMb2FkSW5wdXQ8VD4sIFQ6Ok1heEJhdGNoVW5wYWlkTG9hZD4AEFgZAUJhdGNoZWQgdmFyaWFudCBvZiBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZXR0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFyaWFudI0BW2BBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZCkuMQFUaGUgZXh0ZW5zaW9uIHZhbGlkYXRlcyBlYWNoIGlubmVyIGl0ZW0gYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2l0aGluLWJhdGNoVQFtZW1iZXIta2V5IHVuaXF1ZW5lc3MgYW5kIHRoYXQgdGhlIHNpZ25lcidzIGJhbGFuY2UgY292ZXJzIHRoZSBzdW0gb2YgYWxsIGlubmVyIGFzc2V0IGFtb3VudHMuAEEBVGhpcyBjYWxsIGRpc3BhdGNoZXMgZWFjaCBpbm5lciBsb2FkIGJ5IHJlLXJ1bm5pbmcgdGhlIHNhbWUgY2hlY2tzIHRoZSBleHRlbnNpb25RAWp1c3QgcGVyZm9ybWVkIChzZWUgW2BSZWN5Y2xlck1hbmFnZXI6OmxvYWRgXSkuIFRoZSByZWR1bmRhbmN5IG1hdGNoZXMgdGhlIGRlZmVuc2l2ZU0BcGF0dGVybiB1c2VkIGJ5IFtgU2VsZjo6bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZGBdOiBhIGRpc3BhdGNoIHBhdGhFAXRoYXQgZmFpbHMgYW55IG9mIHRoZXNlIGNoZWNrcyBpcyBhIGxvZ2ljIGJ1ZyBpbiB0aGUgZXh0ZW5zaW9uLCBub3QgYSB1c2VyIGVycm9yLgBVAVRoZSBpbnN0YW5jZSBpcyBmaXhlZCBmb3IgdGhlIHdob2xlIGJhdGNoIHJhdGhlciB0aGFuIHBlciBpdGVtLCBiZWNhdXNlIHRoZSBleHRlbnNpb25VAWNoZWNrcyB0aGUgc2lnbmVyJ3MgYmFsYW5jZSBvbmNlIGFnYWluc3QgdGhlIHN1bW1lZCBjb3N0IG9mIGV2ZXJ5IGl0ZW0sIHdoaWNoIGlzIG9ubHmcbWVhbmluZ2Z1bCB3aXRoaW4gb25lIHVuZGVybHlpbmcgYXNzZXQuAFEBT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgZGVwb3NpdHMgb2YgZXZlcnkga2V5sGxvYWRlZCBoZXJlLCB0aGUgYmF0Y2ggYmVpbmcgY2hhcmdlZCBhcyBvbmUuAERUaGUgY2FsbCBpcyBmcmVlLmR1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEcYWxpYXNlc4EFAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQABGiUVW5sb2FkIGEgcmVjeWNsZXIgdG8gbWludCBhIG5ldyBjb2luLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAsIHdoaWNoIGNhbiBiZWEBb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKSB1c2luZ1hgQXNVbmxvYWRUb2tlblBlb3BsZWAs7GBBc1VubG9hZFRva2VuTGl0ZVBlb3BsZWAsIG9yIGBBc1VubG9hZFRva2VuUGFpZGAgdmFyaWFudHMuAEkBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHByb3ZlIHRoZXkgb3duIG9uZSBvciBtb3JlIGNvaW5zIGluIGEgcmVjeWNsZXIgcmluZ10Bd2l0aG91dCByZXZlYWxpbmcgd2hpY2ggc3BlY2lmaWMgY29pbnMgdGhleSBvd24uIEl0IGNvbnNvbGlkYXRlcyBvbmUgb3IgbXVsdGlwbGUgaW5wdXRzaGludG8gYSBzaW5nbGUgb3V0cHV0IGNvaW4uACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi41ASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLsQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgbmV3IGNvaW4uADRSZXF1aXJlbWVudHM6KQEqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLi0BKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi4hASogVGhlIGBhbGlhc2VzYCBwcm92aWRlZCBtdXN0IG1hdGNoIHRoZSBhbGlhc2VzIGRlcml2ZWQgZnJvbSB0aGUgcHJvb2ZzLhUBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCBmcm9tIHRoaXMgcmVjeWNsZXIuvCogVGhlIG51bWJlciBvZiBhbGlhc2VzIG11c3QgYmUgYSBwb3dlciBvZiB0d28uNQEqIFRoZSByZXN1bHRpbmcgY29uc29saWRhdGVkIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLox1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldBwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABHGFsaWFzZXOBBQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABXTwVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAF0BV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSAodmlhIGZyZWUgb3IgcGFpZCB1bmxvYWQgdG9rZW4pLCBubyBmZWUgaXMgZGVkdWN0ZWQuUQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHVubG9hZGVkIGFzc2V0czpZAXRoZSBhc3NldCBpcyBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5LCBzbyB0aGUgYW1vdW50IGRlZHVjdGVkIGRlcGVuZHMgb24gdGhljG1hcmtldCBhbmQgaXMgYm91bmRlZCBieSBgbWF4X2ZlZWAuADEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHdpdGhkcmF3IHRoZWlyIGNvaW5zIGJhY2sgaW50byB0aGUgdW5kZXJseWluZ4Bhc3NldCAoZS5nLiwgYW4gZXh0ZXJuYWwgYXNzZXQpLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvwqIGBfcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy7kKiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHVuZGVybHlpbmcgYXNzZXQuXQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gYW1vdW50IG9mIHRoZSB1bmxvYWRlZCBhc3NldCB0aGUgZmVlIG1heSBjb25zdW1lLiBXaGF0ZXZlciB0aGVhASAgZmVlIGRvZXMgbm90IGNvbnN1bWUgZ29lcyB0byBgdG9gLiBJdCBpcyBpZ25vcmVkIGZvciBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgd2hpY2ggdGFrZXNsICBubyBmZWUgb3V0IG9mIHRoZSBvdXRwdXQuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uWQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIChleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgd2hlbiBgZmVlYBUBICBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgd2hpY2ggd2FzIHByZS1tYXJrZWQgaW4gdGhlIGV4dGVuc2lvbikurHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBpBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAGcCkBUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIGEgY29pbi4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAF0BVGhlIGNvaW4gaXMgY29uc3VtZWQuIFRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgY29pbidzIHZhbHVlOiB0aGUgYXNzZXQgaXMgY29udmVydGVkPQFpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3ksIHdoaWNoIGlzIHRyYW5zZmVycmVkIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4gVGhlpHJlbWFpbmluZyB2YWx1ZSBvZiB0aGUgY29pbiBpcyBkZXN0cm95ZWQuANRJZiB0aGUgY2FsbCBmYWlscywgdGhlIG9yaWdpbiBjb2luIGlzIHN0aWxsIGNvbnN1bWVkLgBdAVRvIHByb3RlY3QgdGhlIHVzZXIgYWdhaW5zdCB2YXJ5aW5nIGZlZXMsIGlmIHRoZSBjb2luJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBmZWUsIHRoZehjYWxsIGlzIGludmFsaWQgKGFuIGludmFsaWQgY2FsbCBuZXZlciBnb2VzIGludG8gYSBibG9jaykuAGEBVGhpcyBpcyB0aGUgb25lIGFzc2V0LXBheWluZyBjYWxsIHdpdGggbm8gY2FsbGVyLXNldHRhYmxlIGJvdW5kIG9uIHRoZSBmZWUsIGFuZCBpdCBuZWVkc2EBbm9uZTogdGhlIGNvaW4gaXMgY29uc3VtZWQgd2hvbGUgZWl0aGVyIHdheSwgc28gaXRzIHZhbHVlIGlzIHRoZSBib3VuZCwgYW5kIHdoYXRldmVyIHRoZV0BY29udmVyc2lvbiBkb2VzIG5vdCB0YWtlIGlzIGRlc3Ryb3llZCByYXRoZXIgdGhhbiByZXR1cm5lZC4gQSBjYWxsZXIgd2hvIHdhbnRzIHRvIGJvdW5kqHdoYXQgdGhlIGZlZSBjb3N0cyBwYXlzIGZvciB0aGUgdG9rZW4gd2l0aCEBW2BTZWxmOjpwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9leHRlcm5hbF9hc3NldGBdIGluc3RlYWQuAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM64CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0u3CogVGhlIGRlbm9taW5hdGlvbiBtdXN0IGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGZlZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQutHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX25hdGl2ZQgBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGkEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAc8XQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgdGhlIG5hdGl2ZSBjdXJyZW5jeS4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAEUBVGhpcyBhZGRzIHRoZSBgbWVtYmVyX2tleWAgdG8gYSAicGFpZCB1bmxvYWQgdG9rZW4gcmluZyIuIEJlaW5nIHBhcnQgb2YgdGhpcyByaW5nIQFhbGxvd3MgdGhlIHVzZXIgdG8gbGF0ZXIgZ2VuZXJhdGUgYW4gYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4ADQFUaGUgZmVlIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIGNhbGxlciB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM62CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLtRwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9leHRlcm5hbF9hc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcGkEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACHhFAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgdW5kZXJseWluZ3Bhc3NldCBvZiB0aGUgZ2l2ZW4gaW5zdGFuY2UuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgBFAVRoaXMgYWRkcyB0aGUgYG1lbWJlcl9rZXlgIHRvIGEgInBhaWQgdW5sb2FkIHRva2VuIHJpbmciLiBCZWluZyBwYXJ0IG9mIHRoaXMgcmluZyEBYWxsb3dzIHRoZSB1c2VyIHRvIGxhdGVyIGdlbmVyYXRlIGFuIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAFEBVGhlIGZlZSBhcmUgY2hhcmdlZCBpbiB0aGUgdW5kZXJseWluZyBhc3NldCBvZiB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLCBhbmQgY29udmVydGVkCQFpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGZlZSBkZXN0aW5hdGlvbi78YG1heF9mZWVgIGJvdW5kcyBob3cgbXVjaCBvZiB0aGUgYXNzZXQgdGhlIGNvbnZlcnNpb24gbWF5IHRha2UuAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuAFEBVGhlIGBpbnN0YW5jZV9pZGAgb25seSBzZWxlY3RzIHdoaWNoIGluc3RhbmNlJ3MgdW5kZXJseWluZyBhc3NldCB0aGUgZmVlIGlzIHBhaWQgaW4uTQFUaGUgcmVzdWx0aW5nIHRva2VuIGlzIG5vdCBib3VuZCB0byB0aGF0IGluc3RhbmNlIGFuZCBjYW4gYmUgY29uc3VtZWQgdG8gdW5sb2FkIGFueRkBaW5zdGFuY2UncyByZWN5Y2xlciwgd2hpY2ggaXMgd2h5IHRoZSBmZWUgaXMgdGhlIHNhbWUgZm9yIGFsbCBvZiB0aGVtLgBRAVVubGlrZSB0aGUgc2lnbmVkIHVubG9hZCBjYWxscywgdGhpcyBvbmUgaXMgbm90IHByZS1jaGVja2VkIGFnYWluc3QgYG1heF9mZWVgIGR1cmluZ10BdHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBhbmQgZG9lcyBub3QgcmVmdW5kIHRoZSB3ZWlnaHQgaXQgZGlkIG5vdCB1c2U6IGEgY29udmVyc2lvbiB0aGF0VQFtb3ZlZCBwYXN0IGBtYXhfZmVlYCBiZXR3ZWVuIHRoZSBjYWxsZXIgcXVvdGluZyBpdCBhbmQgdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGluY2x1ZGVkTQFmYWlscyB0aGUgZGlzcGF0Y2ggYXQgdGhlIGZ1bGwgYmVuY2htYXJrZWQgd2VpZ2h0LiBDYWxsZXJzIHNob3VsZCBsZWF2ZSBoZWFkcm9vbSBpbihgbWF4X2ZlZWAuADRSZXF1aXJlbWVudHM63CogVGhlIGBpbnN0YW5jZV9pZGAgbXVzdCByZWZlciB0byBhbiBleGlzdGluZyBpbnN0YW5jZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQupCogYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIGNvbnZlcnRlZCBmZWUu0HVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X2FuZF9sb2FkZWRfY29pbnMkASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VzgQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBsb2FkZWRfY29pbnOFBQHsQm91bmRlZFZlYzwoRGVub21pbmF0aW9uLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFNwbGl0T3V0cHV0cz4AARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAJsEUBVW5sb2FkIGEgcmVjeWNsZXIgaW50byBhIG1peGVkIG91dHB1dCBvZiBleHRlcm5hbCBhc3NldCBhbmQgZnJlc2hseSBsb2FkZWQgY29pbnMuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAFkBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIG9mZmJvYXJkIHBhcnQgb2YgdGhlIHVubG9hZGVkIHZhbHVlIGludG8gdGhlIHVuZGVybHlpbmcBAWFzc2V0IHdoaWxlIHJlbWludGluZyB0aGUgcmVzdCBhcyBmcmVzaGx5IGxvYWRlZCByZWN5Y2xlciBjb2lucy4ARQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBpcyB0cmFuc2ZlcnJlZCBhcy1pcy41AVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgc3BlY2lmaWVkOQFgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCwgc28gdGhlIHJlY2lwaWVudCByZWNlaXZlcyB0aGUgcmVtYWluZGVyLiBUaGUgYXNzZXQgaXNRAWNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gcGF5IHRoZSBmZWUsIHNvIHRoZSBhbW91bnQgZGVkdWN0ZWQgZGVwZW5kcyBvbpx0aGUgbWFya2V0IGFuZCBpcyBib3VuZGVkIGJ5IGBtYXhfZmVlYC4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLjUBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC74KiBgcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzIHByb29mcy78KiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIGV4dGVybmFsIGFzc2V0IHBvcnRpb24uXQEqIGBleHRlcm5hbF9hc3NldF9hbW91bnRgOiB0aGUgZ3Jvc3MgYXNzZXQgcG9ydGlvbiB0byBvZmZib2FyZCBmcm9tIHRoZSB1bmxvYWRlZCB2YWx1ZS5dASogYGxvYWRlZF9jb2luc2A6IHRoZSBmcmVzaGx5IGxvYWRlZCByZWN5Y2xlciBjb2lucyB0byBtaW50IGZyb20gdGhlIHJlbWFpbmluZyB1bmxvYWRlZCAgIHZhbHVlLmEBKiBgbWF4X2ZlZWA6IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCB0aGUgZmVlIG1heSBjb25zdW1lLiBXaGF0ZXZlclkBICB0aGUgZmVlIGRvZXMgbm90IGNvbnN1bWUgZ29lcyB0byBgdG9gLiBJdCBpcyBpZ25vcmVkIGZvciBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgd2hpY2iEICB0YWtlcyBubyBmZWUgb3V0IG9mIHRoZSBvdXRwdXQuAEUBVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgYWx3YXlzIGVxdWFsIHRoZSBhc3NldCBwb3J0aW9uIHBsdXMgdGhlIGxvYWRlZC1jb2luSQFwb3J0aW9uLiBJbiBgRnJvbU91dHB1dGAgbW9kZSwgdGhlIGFzc2V0IHBvcnRpb24gbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gY292ZXIgdGhlLHVubG9hZCBmZWUuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uWQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIChleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgd2hlbiBgZmVlYBUBICBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgd2hpY2ggd2FzIHByZS1tYXJrZWQgaW4gdGhlIGV4dGVuc2lvbikuVQEqIGBsb2FkZWRfY29pbnNgIG11c3Qgbm90IGJlIGVtcHR5LCBhbmQgYWxsIGxvYWRlZC1jb2luIG1lbWJlciBrZXlzIG11c3QgYmUgdmFsaWQgYW5kJCAgdW51c2VkLmEBKiBUaGUgdG90YWwgdW5sb2FkZWQgdmFsdWUgbXVzdCBlcXVhbCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBwbHVzIHRoZSB0b3RhbCBhc3NldCB2YWx1ZVAgIG9mIGBsb2FkZWRfY29pbnNgLkUBKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBtdXN0IGNvdmVyIHRoZSBmZWUuQQEqIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIG11c3QgY292ZXIgdGhlIGRlcG9zaXRzIG9mIHRoZS0BICBgbG9hZGVkX2NvaW5zYCBrZXlzLCB3aXRob3V0IGNyZWRpdGluZyB0aGUgZGVwb3NpdHMgdGhpcyB1bmxvYWQgcmVsZWFzZXMuxHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMYASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARRpbnB1dJEFAaBVbmxvYWRSZWN5Y2xlcklucHV0PFQ6Ok1heENvbnNvbGlkYXRpb24+AAEwYWxpYXNfcHJvb2ZzEQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeZUFASxGZWVDdXJyZW5jeQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAsYMQFVbmxvYWQgYSByZWN5Y2xlciB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAFUBQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzXXRmb3IgdGhlIHNpbmdsZS1yZWN5Y2xlciBjYXNlLgBZAVNlZSBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNdIGZvciBmdWxsIGRvY3VtZW50YXRpb24uyHVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEYaW5wdXRzmQUBtFZlYzxVbmxvYWRSZWN5Y2xlcklucHV0PFQ6Ok1heENvbnNvbGlkYXRpb24+PgABMGFsaWFzX3Byb29mcxEEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3mVBQEsRmVlQ3VycmVuY3kAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAMfFEBVW5sb2FkIG11bHRpcGxlIHJlY3ljbGVycyB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAEEBVGhpcyBpcyBhIHNpZ25lZC1vcmlnaW4gdmVyc2lvbiBvZiBbYFNlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0ZAXdoZXJlIHRoZSBmZWUgaXMgcGFpZCBleHBsaWNpdGx5IGJ5IHRoZSBzaWduZXIgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGXwcmluZy1hdXRoZW50aWNhdGVkIHVubG9hZCB0b2tlbiwgYW5kIGZvciBtdWx0aXBsZSByZWN5Y2xlcnMuADEBVGhlIGZlZSBjaGFyZ2VkIGlzIG9uZSB1bmxvYWQgdG9rZW4gZmVlIHBlciByZWN5Y2xlciAoaS5lLiwgYGlucHV0cy5sZW4oKWApLgBNAUV2ZXJ5IGlucHV0IHVubG9hZHMgZnJvbSBgaW5zdGFuY2VfaWRgOiBvbmUgY2FsbCBjYW5ub3Qgc3BhbiBpbnN0YW5jZXMsIGJlY2F1c2UgdGhlTQF1bmxvYWRlZCB2YWx1ZSBpcyBzdW1tZWQgYW5kIHBhaWQgb3V0IGFzIGEgc2luZ2xlIHRyYW5zZmVyIG9mIG9uZSB1bmRlcmx5aW5nIGFzc2V0LgAsUGFyYW1ldGVyczrcKiBgaW5zdGFuY2VfaWRgOiB0aGUgaW5zdGFuY2UgZXZlcnkgaW5wdXQgdW5sb2FkcyBmcm9tLjEBKiBgaW5wdXRzYDogQSBsaXN0IG9mIGlucHV0cywgc3BlY2lmeWluZyB0aGUgcmVjeWNsZXIgYW5kIGFsaWFzZXMgdG8gdW5sb2FkLlUBKiBgYWxpYXNfcHJvb2ZzYDogdGhlIHByb29mcyBmb3IgYWxsIGFsaWFzZXMgYWNyb3NzIGFsbCBpbnB1dHMsIHNpZ25lZCBvdmVyIGEgbWVzc2FnZVUBICB0aGF0IGluY2x1ZGVzIHRoZSBzaWduZXIuIFRoZSBwcm9vZnMgbXVzdCBjb3JyZXNwb25kIHNlcXVlbnRpYWxseSB0byB0aGUgYWxpYXNlcyBpbiwgIGBpbnB1dHNgLrgqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgYXNzZXQuOQEqIGBmZWVfY3VycmVuY3lgOiB3aGV0aGVyIHRvIHBheSB0aGUgZmVlIGluIG5hdGl2ZSBjdXJyZW5jeSBvciBleHRlcm5hbCBhc3NldC5hASogYG1heF9mZWVgOiB0aGUgbW9zdCB0aGUgZmVlIG1heSBjb3N0IHRoZSBzaWduZXIsIGluIGBmZWVfY3VycmVuY3lgOiB0aGUgbmF0aXZlIGZlZSBmb3JVASAgW0ZlZUN1cnJlbmN5OjpOYXRpdmVdLCBhbmQgdGhlIGFtb3VudCBvZiB0aGUgc2lnbmVyJ3MgYXNzZXQgdGhlIGNvbnZlcnNpb24gaW50byB0aGXcICBuYXRpdmUgZmVlIG1heSB0YWtlIGZvciBbRmVlQ3VycmVuY3k6OkV4dGVybmFsQXNzZXRdLgA0UmVxdWlyZW1lbnRzOnAqIFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQu3CogVGhlIGBpbnN0YW5jZV9pZGAgbXVzdCByZWZlciB0byBhbiBleGlzdGluZyBpbnN0YW5jZS6UKiBBbGwgc3BlY2lmaWVkIHJlY3ljbGVycyBtdXN0IGV4aXN0Li0BKiBUaGUgYWxpYXMgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4gYGlucHV0c2AuOQEqIGBpbnB1dHNgIG11c3Qgbm90IGJlIGVtcHR5IGFuZCBlYWNoIGVsZW1lbnQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBhbGlhcy5BASogVGhlIHNpZ25lciBtdXN0IGhhdmUgc3VmZmljaWVudCBiYWxhbmNlIHRvIHBheSB0aGUgZmVlIChvbmUgZmVlIHBlciByZWN5Y2xlcikuxCogYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIGZlZSBpbiBgZmVlX2N1cnJlbmN5YC6wdW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXQoASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABNHJlY3ljbGVyX3Jvb3SdBQEwTWVtYmVyc09mPFQ+AAE0dW5sb2FkZWRfcm9vdDwBEEgyNTYAASxhbGlhc19wcm9vZhUEAShQcm9vZk9mPFQ+AAFMbm9uX2luY2x1c2lvbl9wcm9vZqEFAWUBQm91bmRlZFZlYzxCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNQVhfVFJJRV9OT0RFX0xFTj4+LCBDb25zdFUzMjwKTUFYX1RSSUVfUFJPT0ZfTk9ERVM+LD4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeZUFASxGZWVDdXJyZW5jeQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABGkBQFSZWNvdmVyIGEgY29pbiBmcm9tIGFuIGFyY2hpdmVkIHJlY3ljbGVyIGludG8gdGhlIGV4dGVybmFsIGFzc2V0LgBYVGhpcyBpcyBhIHNpZ25lZCBjYWxsLgDwSXQgYWxsb3dzIGEgdXNlciB0byB1bmxvYWQgYSBjb2luIGZyb20gYW4gYXJjaGl2ZWQgcmVjeWNsZXIuSQFUaGUgdW5sb2FkIHRva2VuIGZlZSBpcyBjaGFyZ2VkIHRvIHRoZSBzaWduZXIsIGFuZCB0aGUgY2FsbCBpcyBub3QgcmVmdW5kZWQsIGFzIGl0HQFhY2NvdW50cyBmb3IgdGhlIGV4dHJhIHByb29mIHZlcmlmaWNhdGlvbiBhbmQgYXJjaGl2ZWQgcmVjeWNsZXIgdXBkYXRlLgAsUGFyYW1ldGVyczopASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZnkgdGhlIGFyY2hpdmVkIHJlY3ljbGVyIHJpbmcuMQEqIGByZWN5Y2xlcl9yb290YDogdGhlIGRlbGV0ZWQgcmluZydzIHJpbmctVlJGIHJvb3Q7IHZhbGlkYXRlZCB0b2dldGhlciB3aXRo5CAgYHVubG9hZGVkX3Jvb3RgIGFnYWluc3QgdGhlIHN0b3JlZCBhcmNoaXZhbCBjb21taXRtZW50LgUBKiBgdW5sb2FkZWRfcm9vdGA6IHRoZSBjdXJyZW50IHJvb3Qgb2YgdGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZS45ASogYGFsaWFzX3Byb29mYDogYSByaW5nLVZSRiBtZW1iZXJzaGlwIHByb29mLCBjcmVhdGVkIG92ZXIgdGhlIG1lc3NhZ2UgYmluZGluZ1kBICBgYmxha2UyXzI1NihVTkxPQURfQVJDSElWRURfTVNHX1BSRUZJWCArKyBzaWduZXIpYCBpbiB0aGUgcmVjeWNsZXIgdW5sb2FkaW5nIGNvbnRleHR0ICBVTkxPQURJTkdfUkVDWUNMRVJfQ09OVEVYVC41ASogYG5vbl9pbmNsdXNpb25fcHJvb2ZgOiB0cmllIG5vZGVzIHByb3ZpbmcgdGhlIGNhbGxlcidzIGFsaWFzIGlzIGFic2VudCBmcm9tVQEgIGB1bmxvYWRlZF9yb290YCAoaS5lLiBpdCB3YXMgbmV2ZXIgdW5sb2FkZWQpOyBtdXN0IGFsc28gY292ZXIgdGhlIGluc2VydGlvbiBwYXRoIG9muCAgdGhlIGFsaWFzIHNvIHRoZSBuZXcgcm9vdCBjYW4gYmUgcmVjb21wdXRlZC7kKiBgdG9gOiB0aGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHJlY292ZXJlZCBkZW5vbWluYXRpb24uWQEqIGBmZWVfY3VycmVuY3lgOiB3aGV0aGVyIHRoZSB1bmxvYWQgZmVlIGlzIHBhaWQgaW4gbmF0aXZlIGN1cnJlbmN5IG9yIGV4dGVybmFsIGFzc2V0LmEBKiBgbWF4X2ZlZWA6IHRoZSBtb3N0IHRoZSBmZWUgbWF5IGNvc3QgdGhlIHNpZ25lciwgaW4gYGZlZV9jdXJyZW5jeWA6IHRoZSBuYXRpdmUgZmVlIGZvclUBICBbRmVlQ3VycmVuY3k6Ok5hdGl2ZV0sIGFuZCB0aGUgYW1vdW50IG9mIHRoZSBzaWduZXIncyBhc3NldCB0aGUgY29udmVyc2lvbiBpbnRvIHRoZdwgIG5hdGl2ZSBmZWUgbWF5IHRha2UgZm9yIFtGZWVDdXJyZW5jeTo6RXh0ZXJuYWxBc3NldF0uAGEBT24gc3VjY2VzcyB0aGUgZnVsbCBkZW5vbWluYXRpb24gaXMgcmVsZWFzZWQgdG8gYHRvYCwgdGhlIGFsaWFzIGlzIGFkZGVkIHRvIHRoZSB1bmxvYWRlZDUBc2V0IChzbyBpdCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFnYWluKSwgYW5kIHRoZSBhcmNoaXZlJ3MgcmVjb3ZlcmFibGUgY291bnQgaXPAZGVjcmVtZW50ZWQgKHRoZSBlbnRyeSBpcyByZW1vdmVkIG9uY2UgZHJhaW5lZCkuVQEoTm8gW2BDb25maWc6OkxvYWREZXBvc2l0YF0gaXMgc2V0dGxlZCBoZXJlLCBpdCB3YXMgYWxyZWFkeSBzZXR0bGVkIHdoZW4gdGhlIHJlY3ljbGVyOHdhcyBhcmNoaXZlZC4pAFUBVGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBuZWVkZWQgZm9yIGB1bmxvYWRlZF9yb290YCBhbmQgYG5vbl9pbmNsdXNpb25fcHJvb2ZgIGNhbiBiZTEBcmVjb25zdHJ1Y3RlZCBvZmZjaGFpbiBieSBsaXN0ZW5pbmcgdG8gdGhlIFtgRXZlbnQ6OlJlY3ljbGVyQWxpYXNVbmxvYWRlZGBdLFEBW2BFdmVudDo6UmVjeWNsZXJBcmNoaXZlZGBdIGFuZCBbYEV2ZW50OjpBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldGBdHGV2ZW50cy4AVQFUaGlzIGNhbGwgY29uZmxpY3RzIHdpdGggYW55IG90aGVyIGNhbGwgdGhhdCB1bmxvYWRzIGZyb20gdGhlIHNhbWUgYXJjaGl2ZWQgcmVjeWNsZXI6YQFlYWNoIHVubG9hZCB1cGRhdGVzIHRoZSBjb21taXRtZW50LCBzbyB0aGUgcHJvb2ZzIGluIHRoZSBjb21wZXRpbmcgY2FsbCBiZWNvbWUgb3V0ZGF0ZWQuQQFgcmVjeWNsZXJfcm9vdGAgYW5kIGB1bmxvYWRlZF9yb290YCBhcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29tbWl0bWVudCBhdE0BdHJhbnNhY3Rpb24gdmFsaWRhdGlvbiwgdGhlcmVmb3JlIHJlc29sdmluZyBzdWNoIGNvbmZsaWN0cyB3aXRob3V0IGNoYXJnaW5nIGZlZXMgYnmMbWFya2luZyBvdXRkYXRlZCBwcm9vZnMgYXMgaW52YWxpZC5odW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnMcASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VzgQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShzcGxpdF9pbnRvYQUBfQFCb3VuZGVkVmVjPAooRGVub21pbmF0aW9uLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksIFQ6OgpNYXhTcGxpdE91dHB1dHMsPgABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA281FVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgbXVsdGlwbGUgbmV3IGNvaW5zIChzcGxpdCkuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC4ARQFUaGlzIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSBhbmRFAVtTZWxmOjpzcGxpdF0gaW4gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhlIHJlc3VsdGluZyBjb2lucycgYWdlIGlzIDEgYmVjYXVzZUUBdGhlIGFjdGlvbiBvZiBzcGxpdHRpbmcgYWdlIGNvaW5zLiBUaGlzIGlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgcmVzdWx0aW5nIGNvaW5z6GFyZSBub3QgZW50aXJlbHkgZnJlc2gsIHRoZXkgY2FuIGJlIGxpbmtlZCB0byBvdGhlciBjb2lucy4AWQFVbmxpa2UgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dLCB0aGlzIGNhbGwgZG9lcyAqKm5vdCoqIHJlcXVpcmUgdGhlIG51bWJlciBvZnRhbGlhc2VzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLlEBKiBgc3BsaXRfaW50b2A6IGEgdmVjdG9yIG9mIHBhaXJzLCBlYWNoIHBhaXIgY29udGFpbmluZyBhIGRlbm9taW5hdGlvbiBhbmQgYSBsaXN0IG9maCAgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuWQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gZmVlIHRoZSBjYWxsZXIgaXMgd2lsbGluZyB0byBwYXksIGV4cHJlc3NlZCBpbiB0aGUgdW5kZXJseWluZ0kBICBhc3NldCBiYWxhbmNlLiBJdCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRvdGFsIHZhbHVlIG9mIHRoZTkBICB1bmxvYWRlZCBjb2lucyBhbmQgdGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AuAGEBICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBpdCBtdXN0IGJlIHplcm86IG5vdGhpbmcgaXMgc2V0IGFzaWRlIGZvciB0aGUgZmVlLCBzb7ggIGBzcGxpdF9pbnRvYCB0YWtlcyB0aGUgd2hvbGUgdW5sb2FkZWQgdmFsdWUuXQEgIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoaXMgYW1vdW50IGlzIGRlZHVjdGVkIGZyb20gdGhlIGlucHV0OiB0aGUgYXNzZXQNASAgaXMgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBuZXR3b3JrIGZlZSwgd2hpY2ggaXMgdHJhbnNmZXJyZWQgdG81ASAgW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLCBhbmQgYW55IHJlbWFpbmRlciBpcyBidXJuZWQuIFRoZSBjYWxsZXIgY2FuIHF1ZXJ57CAgYGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fYXNzZXRgIHRvIGVzdGltYXRlIHRoZSBmZWUuAGEBICBUaGlzIHBhcmFtZXRlciBzZXJ2ZXMgYXMgYSBzYWZlZ3VhcmQ6IHRoZSB0cmFuc2FjdGlvbiBpcyByZWplY3RlZCBhdCB2YWxpZGF0aW9uIGlmIHRoZUEBICBhY3R1YWwgbmV0d29yayBmZWUgZXhjZWVkcyBgbWF4X2ZlZWAsIHByb3RlY3RpbmcgdGhlIGNhbGxlciBmcm9tIGV4Y2Vzc2l2ZSBmZWVdASAgaW5jcmVhc2VzIHRoYXQgd291bGQgcmVuZGVyIHRoZSBhcmd1bWVudCBgc3BsaXRfaW50b2AgaW52YWxpZCAodW5sb2FkZWQgZnVuZHMgbXVzdCBiZZggIGhpZ2hlciB0aGFuIHRoZSBzcGxpdCBwbHVzIHRoZSBmZWUpLgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0uLQEqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMu4CogRWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4uYQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gIHBsdXMgYG1heF9mZWVgIG11c3QgZXF1YWwgdGhlkCAgdG90YWwgdmFsdWUgb2YgdGhlIHVubG9hZGVkIGNvaW5zLlUBKiBgbWF4X2ZlZWAgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBtaW5pbXVtIGNvaW4uIChUaGlzIGlzIGltcGxpZWQgYnkgdGhlIGNvbmRpdGlvbiQgIGFib3ZlKS7cKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgbWF4X2ZlZWAgbXVzdCBiZSAwLi0BKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgbmV0d29yayBmZWUuoGRpcmVjdF9vZmZib2FyZF9jb2luX2ludG9fZXh0ZXJuYWxfYXNzZXQEAQh0bwQBMFQ6OkFjY291bnRJZAAOYPBEaXJlY3RseSBvZmZib2FyZCBhIGNvaW4gaW50byB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldC4A1FRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCBvYnRhaW5lZCB0aHJvdWdo6FtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKSB1c2luZyBgQXNDb2luYC4AOQFUaGlzIGNhbGwgYnlwYXNzZXMgdGhlIHJlY3ljbGVyL3VubG9hZC10b2tlbiBvZmZib2FyZGluZyBmbG93IGFuZCByZWxlYXNlcyB0aGXMdW5kZXJseWluZyBhc3NldCBkaXJlY3RseSwgd2hhdGV2ZXIgdGhlIGNvaW4ncyBhZ2UuAEQjIFByaXZhY3kgd2FybmluZwBBAURpcmVjdGx5IG9mZmJvYXJkaW5nIGEgY29pbiB3aXRoIG5vbi16ZXJvIGFnZSBwdWJsaWNseSBsaW5rcyB0aGUgY29pbidzIHRyYW5zZmVyVQFjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gYWNjb3VudCwgd2hpY2ggY29tcHJvbWlzZXMsIHRvIHNvbWUgZXh0ZW50LCB0aGUgYW5vbnltaXR5IG9mTQFldmVyeSBwcmV2aW91cyBob2xkZXIgaW4gdGhlIGNoYWluOiBpZiBBbGljZSBzZW5kcyBhIGNvaW4gdG8gQm9iIGFuZCBCb2IgdG8gQ2hhcmxpZUUBYW5kIENoYXJsaWUgZGlyZWN0bHkgb2ZmYm9hcmRzIGl0LCBBbGljZSBtYXkgZGVkdWNlIHdoYXQgQm9iIGRpZCB3aXRoIHRoZSBjb2luLiBBWQFmcmVzaCBjb2luIChgYWdlID09IDBgKSBoYXMganVzdCBiZWVuIHVubG9hZGVkIGZyb20gYSByZWN5Y2xlciBhbmQgY2FycmllcyBubyB0cmFuc2ZlckEBaGlzdG9yeSwgc28gaXQgY2FuIGJlIG9mZmJvYXJkZWQgZGlyZWN0bHkgd2l0aG91dCB0aGlzIHByaXZhY3kgbG9zcy4gRm9yIG1heGltdW0dAXByaXZhY3ksIG9mZmJvYXJkIGNvaW5zIHdpdGggbm9uLXplcm8gYWdlIHRocm91Z2ggdGhlIHJlY3ljbGVyIGluc3RlYWQuACxQYXJhbWV0ZXJzOj0BKiBgdG9gOiBkZXN0aW5hdGlvbiBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgdGhlIHJlbGVhc2VkIHVuZGVybHlpbmcgYXNzZXQgYW1vdW50LgA0UmVxdWlyZW1lbnRzOpAqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpDb2luXS4RASogVGhlIGRlbm9taW5hdGlvbiBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgdW5kZXJseWluZy1hc3NldCBhbW91bnQuaGNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlCAEgYXNzZXRfaWRpAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEkD0Q3JlYXRlIGEgc3VmZmljaWVudCBjb2luYWdlIGluc3RhbmNlIGZvciBhbiB1bmRlcmx5aW5nIGFzc2V0LgAhAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdLiBUaGUgYXNzZXQgbXVzdCBleGlzdCBpbkUBW2BDb25maWc6OkZ1bmdpYmxlc2BdOyBpdCBtYXkgYWxyZWFkeSBiZSB3cmFwcGVkIGJ5IG90aGVyIGluc3RhbmNlcywgc28gYWRtaW4gY2FuIQFhbHdheXMgd3JhcCBpdCBhdCB0aGUgZ3JhbnVsYXJpdHkgaXQgd2FudHMsIHdoYXRldmVyIHdhcyBjcmVhdGVkIGJlZm9yZS4AUQFUaGUgaW5zdGFuY2UncyByZWN5Y2xlciBjb2xsZWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoaW4gdGhpcyBjYWxsLiBUaGUgcGFsbGV0IGFjY291bnRNAW11c3QgYWxyZWFkeSBiZSBhYmxlIHRvIHJlY2VpdmUgdGhlIHVuZGVybHlpbmcgYXNzZXQ6IGZvciBhIG5vbi1zdWZmaWNpZW50IGFzc2V0IGl0QQFtdXN0IGhhdmUgYmVlbiB0b3VjaGVkIGJlZm9yZWhhbmQuIEl0IG11c3QgYWxzbyBhbHJlYWR5IGhvbGQgdGhlIGFzc2V0J3MgbWluaW11bZhiYWxhbmNlIGFzIGEgYnVmZmVyIHRvIGF2b2lkIGR1c3RpbmdzLgAsUGFyYW1ldGVyczoFASogYGFzc2V0X2lkYDogdGhlIHVuZGVybHlpbmcgYXNzZXQgYmFja2luZyB0aGlzIGluc3RhbmNlJ3MgY29pbnMuWQEqIGBhc3NldF91bml0YDogdGhlIGFzc2V0IGFtb3VudCBvZiBhIGNvaW4gb2YgZGVub21pbmF0aW9uIHplcm8uIE11c3QgYmUgbm9uLXplcm8sIGFuZE0BICBtdXN0IHJlcHJlc2VudCBldmVyeSBkZW5vbWluYXRpb24gaW4gYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gIHdpdGhvdXQ0ICB0cnVuY2F0aW9uLmRjcmVhdGVfc3BvbnNvcmVkX2luc3RhbmNlDAEgYXNzZXRfaWRpAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATxpbml0aWFsX2Z1bmRpbmetBQHYT3B0aW9uPChGdW5naWJsZXNBc3NldElkT2Y8VD4sIEZ1bmdpYmxlc0JhbGFuY2VPZjxUPik+ABOA4ENyZWF0ZSBhIHNwb25zb3JlZCBjb2luYWdlIGluc3RhbmNlIHdyYXBwaW5nIGBhc3NldF9pZGAuAE0BVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OlNwb25zb3JPcmlnaW5gXSwgd2hpY2ggeWllbGRzIHRoZSBwYXlpbmcgYWNjb3VudDtJAXdpdGggYEVuc3VyZVNpZ25lZGAgYW55b25lIGNhbiBjYWxsIHRoaXMuIFtgQ29uZmlnOjpFbmFibGVQZXJtaXNzaW9ubGVzc2BdIG11c3QgYmVVAXRydWUsIG90aGVyd2lzZSBubyBzcG9uc29yZWQgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgYXQgYWxsLiBUaGUgaW5zdGFuY2UncyBsb2FkLXNpZGUlAWNvc3RzIGFyZSB1bmRlcndyaXR0ZW4gYnkgYSBwb3QgYWNjb3VudCBkZXJpdmVkIGZyb20gdGhlIGluc3RhbmNlIGlkIChzZWU9AVtgUGFsbGV0Ojpwb3RfYWNjb3VudGBdKSwga2VwdCBmdW5kZWQgYnkgc3BvbnNvcnMgdGhyb3VnaCBbYFBhbGxldDo6ZnVuZF9wb3RgXS4AUFRoZSBjYWxsZXIgcHJvdmlkZXM6UQEtIHRoZSBpbnN0YW5jZSBjcmVhdGlvbiBkZXBvc2l0IChbYENvbmZpZzo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXRgXSwgdGFrZW4gZnJvbSB0aGVVASAgY2FsbGVyIGFuZCBrZXB0IGZvciBhcyBsb25nIGFzIHRoZSBpbnN0YW5jZSBpcyBzcG9uc29yZWQsIHNpbmNlIGluc3RhbmNlcyBhcmUgbmV2ZXJJASAgcmVtb3ZlZDsgdGhlIGNhbGxlciBhbmQgaXRzIHRpY2tldCBhcmUgcmVjb3JkZWQgaW4gW2BJbnN0YW5jZVJlY29yZDo6Y3JlYXRvcmBdKSxdAS0gdGhlIHBhbGxldCBhY2NvdW50J3MgbWluaW11bSBiYWxhbmNlIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0ICh0cmFuc2ZlcnJlZCByYXRoZXIgdGhhbgUBICBtaW50ZWQsIHNvIGEgcGVybWlzc2lvbmxlc3MgY2FsbCBjYW5ub3QgY3JlYXRlIHVuYmFja2VkIGZ1bmRzKSxRAS0gb3B0aW9uYWxseSBgaW5pdGlhbF9mdW5kaW5nYCwgcmVjb3JkZWQgYXMgdGhlIGNhbGxlcidzIHBvdCBjb250cmlidXRpb24gZXhhY3RseSBhc00BICBbYFBhbGxldDo6ZnVuZF9wb3RgXSB3b3VsZC4gQnVuZGxlZCBoZXJlIGJlY2F1c2UgdGhlIGluc3RhbmNlIGlkIGlzIG9ubHkgYXNzaWduZWQ9ASAgaW5zaWRlIHRoZSBjYWxsLCBzbyBhIHNlcGFyYXRlIGBmdW5kX3BvdGAgY2Fubm90IGJlIGJhdGNoZWQgd2l0aCB0aGUgY3JlYXRpb24wICByYWNlLWZyZWUuAFkBYGFzc2V0X3VuaXRgIGlzIGZpeGVkIGF0IGNyZWF0aW9uIGFuZCBpbnN0YW5jZXMgYXJlIG5ldmVyIHJlbW92ZWQsIGJ1dCBhbiBhc3NldCBpcyBub3QxAWZpcnN0LWNvbWU6IGFueW9uZSwgYWRtaW4gaW5jbHVkZWQsIGNhbiB3cmFwIHRoZSBzYW1lIGFzc2V0IGFnYWluIGluIGl0cyBvd25RAWluc3RhbmNlIGF0IGFub3RoZXIgdW5pdCwgc28gb25lIGNyZWF0b3IgY2Fubm90IGZpeCB0aGUgY29pbiBncmFudWxhcml0eSBvZiBhbiBhc3NldBUBZm9yIGV2ZXJ5Ym9keSBlbHNlLiBXaGF0IHN0b3BzIGEgZmxvb2Qgb2YgbmVhci1kdXBsaWNhdGUgaW5zdGFuY2VzIGlzVQFbYENvbmZpZzo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXRgXSwgaGVsZCBvbiBlYWNoIGNyZWF0b3IgZm9yIGFzIGxvbmcgYXMgaXRzIGluc3RhbmNlNGlzIHNwb25zb3JlZC4ALFBhcmFtZXRlcnM6BQEqIGBhc3NldF9pZGA6IHRoZSB1bmRlcmx5aW5nIGFzc2V0IGJhY2tpbmcgdGhpcyBpbnN0YW5jZSdzIGNvaW5zLlkBKiBgYXNzZXRfdW5pdGA6IHRoZSBhc3NldCBhbW91bnQgb2YgYSBjb2luIG9mIGRlbm9taW5hdGlvbiB6ZXJvLiBNdXN0IGJlIG5vbi16ZXJvLCBhbmRNASAgbXVzdCByZXByZXNlbnQgZXZlcnkgZGVub21pbmF0aW9uIGluIGBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYCB3aXRob3V0NCAgdHJ1bmNhdGlvbi4dASogYGluaXRpYWxfZnVuZGluZ2A6IGFuIG9wdGlvbmFsIGAoY3VycmVuY3ksIGFtb3VudClgIHBvdCBjb250cmlidXRpb24uIGZ1bmRfcG90DAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lpAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAUPEUBRnVuZCB0aGUgcG90IG9mIHRoZSBzcG9uc29yZWQgaW5zdGFuY2UgYGluc3RhbmNlX2lkYCB3aXRoIGBhbW91bnRgIG9mIGBjdXJyZW5jeWAuADEBVGhlIGNvbnRyaWJ1dGlvbiBpcyByZWNvcmRlZCBwZXIgZnVuZGVyIGFuZCBwZXIgY3VycmVuY3k6IHRoZSBwYXJ0IG9mIGl0IG5vdAEBY3VycmVudGx5IGhlbGQgYXMgbG9hZC1kZXBvc2l0IGNvbGxhdGVyYWwgY2FuIGJlIHRha2VuIGJhY2sgd2l0aE0BW2BQYWxsZXQ6OndpdGhkcmF3X3BvdF9mdW5kc2BdLiBBIHBsYWluIHRyYW5zZmVyIHRvIHRoZSBwb3QgYWNjb3VudCBiYWNrcyBsb2FkcyBhbGy0dGhlIHNhbWUgYnV0IGlzIGEgZG9uYXRpb24sIG5vdCB3aXRoZHJhd2FibGUuAEEBQW55IGV4aXN0aW5nIGBjdXJyZW5jeWAgaXMgYWNjZXB0ZWQsIG5vdCBqdXN0IHRoZSBjdXJyZW50IGRlcG9zaXQgY3VycmVuY3ksIHNvIGHYc3BvbnNvciBjYW4gcHJlZnVuZCBhaGVhZCBvZiBhbiBhZG1pbiBjdXJyZW5jeSBzd2l0Y2guAEkBQSBwb3Qgd2l0aCBubyBhY2NvdW50IGZvciBgY3VycmVuY3lgIGhhcyBvbmUgY3JlYXRlZCBmb3IgaXQgZmlyc3QsIGF0IHRoZSBjYWxsZXInc0kBZXhwZW5zZS4gV2hhdGV2ZXIgdGhhdCBjb3N0cyBpcyBub3QgcGFydCBvZiB0aGUgcmVjb3JkZWQgY29udHJpYnV0aW9uIGFuZCBpcyBuZXZlcjEBcmVmdW5kZWQuIFRoZSBgYW1vdW50YCBtdXN0IGJlIGF0IGxlYXN0IHRoZSBjdXJyZW5jeSdzIG1pbmltdW0gYmFsYW5jZSwgc28gYU0BZnVuZGluZyBjYW5ub3QgYmUgZHVzdGVkIG9uIGFycml2YWw7IHRoZSBwb3QncyBhY2NvdW50IHRoZW4gc3Vydml2ZXMgYW55IHdpdGhkcmF3YWwgb3IgaG9sZC5Id2l0aGRyYXdfcG90X2Z1bmRzDAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lpAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAVEEUBVGFrZSBiYWNrIHVwIHRvIHRoZSBjYWxsZXIncyByZWNvcmRlZCBjb250cmlidXRpb24gdG8gdGhlIHBvdCBvZiBgaW5zdGFuY2VfaWRgIGluLGBjdXJyZW5jeWAuADkBT25seSB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIGNhbiBiZSB3aXRoZHJhd246IGhlbGQgY29sbGF0ZXJhbCBpcyBvdXQgb2YgcmVhY2guWGNvbGxhcHNlX2xvYWRfZGVwb3NpdHMEASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAFzQBAVJlLXByaWNlIGV2ZXJ5IGxpdmUgbG9hZCBkZXBvc2l0IG9mIGBpbnN0YW5jZV9pZGAgdG8gdGhlIGN1cnJlbnQtAVtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLCBjb252ZXJ0aW5nIHRoZSBjb2xsYXRlcmFsIHRvIHRoZSBjdXJyZW50IGN1cnJlbmN5LgBBAUFueWJvZHkgbWF5IGNhbGwgdGhpcy4gSXQgaXMgdGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgY2hhbmdlcyBob3cgbXVjaCBjb2xsYXRlcmFsVQFiYWNrcyBhbHJlYWR5LWxvYWRlZCBrZXlzLCBpbiBlaXRoZXIgZGlyZWN0aW9uOiB0aGUgcG90IGlzIGNoYXJnZWQgdGhlIHNob3J0ZmFsbCB3aGVuNQFhZG1pbiBoYXMgcmFpc2VkIHRoZSBwcmljZSBzaW5jZSB0aG9zZSBsb2FkcywgYW5kIHJlZnVuZGVkIHRoZSBleGNlc3Mgd2hlbiBpdE0BaGFzIGxvd2VyZWQgaXQuIE5vdGhpbmcgaXMgY29udmVydGVkIGJldHdlZW4gY3VycmVuY2llczogb2xkIGNvbGxhdGVyYWwgaXMgcmVsZWFzZWRRAXRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgYW5kIHRoZSBuZXcgcmVxdWlyZW1lbnQgaXMgdGFrZW4gZnJlc2gsIHNvIG5vIHJhdGUgZmVlZCBpcyRpbnZvbHZlZC4AMQFUaGlzIGlzIHRoZSBjb21wYW5pb24gdG8gYW4gYWRtaW4gY2hhbmdlIG9mIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLCBhbmQgdGhlVQFwZXJtaXNzaW9ubGVzcyByZW1lZHkgZm9yIGFuIGluc3RhbmNlIHdob3NlIGxvYWRzIGFyZSByZWZ1c2VkIGJlY2F1c2UgaXRzIG9sZCB0aWVyIGlzPHN0aWxsIG9jY3VwaWVkLmBtYWtlX2luc3RhbmNlX3N1ZmZpY2llbnQEASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAGCjoU3dpdGNoIGEgc3BvbnNvcmVkIGluc3RhbmNlIHRvIGBJbnN0YW5jZU1vZGU6OlN1ZmZpY2llbnRgLgAdAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdOiB0aGlzIGlzIGFkbWluIGJsZXNzaW5nUQFhbiBpbnN0YW5jZSBpbnRvIHRoZSBzdHJhbmRlZC12YWx1ZSBlY29ub21pY3MuIEV2ZXJ5IGxvYWQgZGVwb3NpdCBpcyByZWxlYXNlZCB0byB0aGUVAXBvdCdzIGZyZWUgYmFsYW5jZSwgd2hlcmUgZnVuZGVycyByZWNsYWltIHRoZWlyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaDkBW2BQYWxsZXQ6OndpdGhkcmF3X3BvdF9mdW5kc2BdICh3aXRoZHJhd2FsIGRvZXMgbm90IHJlcXVpcmUgdGhlIGluc3RhbmNlIHRvIGJlRQFzcG9uc29yZWQpOyBvbmx5IGRvbmF0aW9ucyBzdGF5IHN0cmFuZGVkLiBUaGUgbGVkZ2VyIGlzIHJlbW92ZWQsIGFuZCBmcm9tIGhlcmUgb268bG9hZHMgdGFrZSBubyBkZXBvc2l0IGFuZCB1bmxvYWRzIHJlbGVhc2Ugbm9uZS4AyFRoZSBpbnN0YW5jZSBjcmVhdGlvbiBkZXBvc2l0IGlzIHJlbGVhc2VkIGlmIHNvbWUuXG1ha2VfaW5zdGFuY2Vfc3BvbnNvcmVkBAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkABlA6FN3aXRjaCBhIHN1ZmZpY2llbnQgaW5zdGFuY2UgdG8gYEluc3RhbmNlTW9kZTo6U3BvbnNvcmVkYC4AMQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4gVGhlIGRlcG9zaXQgbGVkZ2VyIHJlc3RhcnRzTQFmcm9tIHplcm86IGtleXMgbG9hZGVkIHdoaWxlIHRoZSBpbnN0YW5jZSB3YXMgc3VmZmljaWVudCBjYXJyeSBubyBkZXBvc2l0LCBzbyB0aGVpckEBdW5sb2FkcyBzZXR0bGUgYWdhaW5zdCB3aGF0ZXZlciB0aGUgbGVkZ2VyIGhvbGRzIGF0IHRoZSB0aW1lLCBwb3NzaWJseSByZWxlYXNpbmc5AWRlcG9zaXRzIHRha2VuIGZvciBrZXlzIGxvYWRlZCBhZnRlciB0aGUgc3dpdGNoLCBvciBub3RoaW5nIG9uY2UgdGhlIGxlZGdlciBpc00BZHJhaW5lZC4gVGhlIGluc3RhbmNlIHRoZXJlZm9yZSBydW5zIHVuZGVyLWNvbGxhdGVyYWxpemVkIHVudGlsIGl0cyBwcmUtc3dpdGNoIGtleXPkc3RvcCByZXNvbHZpbmcsIHdoaWNoIGFkbWluIGFjY2VwdHMgYnkgbWFraW5nIHRoZSBzd2l0Y2guAFUBTG9hZHMgc3RheSBpbnZhbGlkIHVudGlsIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdIGlzIHNldCBhbmQgdGhlIHBvdCBpcyBmdW5kZWQgdGhyb3VnaFRbYFBhbGxldDo6ZnVuZF9wb3RgXS4A0E5vIFtgQ29uZmlnOjpJbnN0YW5jZUNyZWF0aW9uRGVwb3NpdGBdIGlzIHRha2VuLCBhbmQxAVtgSW5zdGFuY2VSZWNvcmQ6OmNyZWF0b3JgXSBzdGF5cyBhcyBpdCBpcywgc28gYW4gaW5zdGFuY2UgdGhhdCB3ZW50IHRocm91Z2hNAVtgUGFsbGV0OjptYWtlX2luc3RhbmNlX3N1ZmZpY2llbnRgXSBjb21lcyBiYWNrIHdpdGggbm8gY3JlYXRvciBhbmQgbm8gZGVwb3NpdCwgdGhlaHNhbWUgYXMgb25lIGFkbWluIGNyZWF0ZWQuOGNsZWFuX3JlY3ljbGVyCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAGUsdENsZWFuIHVwIGFuIGV4cGlyZWQgcmVjeWNsZXIuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4ADQFUaGlzIHJlbW92ZXMgYW4gb2xkIHJlY3ljbGVyIHRoYXQgaGFzIGV4Y2VlZGVkIGl0cyBleHBpcmF0aW9uIHRpbWUuYQFBbnkgcmVtYWluaW5nIChub3QteWV0LXVubG9hZGVkKSBjb2lucyBhcmUgbm90IGRlc3Ryb3llZDogdGhlIHJpbmcgaXMgYXJjaGl2ZWQgYW5kIHRoZWly/GJhY2tpbmcgYXNzZXQgc3RheXMgaGVsZCBpbiB0aGUgcGFsbGV0IGFjY291bnQsIHJlY292ZXJhYmxlIHZpYeRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS4ATQFPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSB0aGlzIHNldHRsZXMgdGhlIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdIG9mIGV2ZXJ5IHJlbWFpbmluZxBrZXkuZGNsZWFuX2NvbnN1bWVkX2ZyZWVfdG9rZW4EARhwZXJpb2Q4ARhQZXJpb2QAZgz8Q2xlYW51cCBzdG9yYWdlIGZvciBjb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgb2Ygb2xkIHBlcmlvZHMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZwgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaBgJAUNsZWFuIHVwIGEgc2luZ2xlIHJpbmcgaW4gYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuKQFSaW5ncyBtdXN0IGJlIGNsZWFuZWQgc2VxdWVudGlhbGx5IChyaW5nIDAgZmlyc3QsIHRoZW4gMSwgZXRjLikgYmVmb3JlIHRoZXRjb2xsZWN0aW9uIGNhbiBiZSBkZWxldGVkIHZpYY0BW2BkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uYF0oU2VsZjo6ZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbikuTGNsZWFuX3JlY3ljbGVyX2R1c3QAaRRwQ2xlYW4gdXAgZHVzdCBmb3IgcmVjeWNsZXJzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuUQFSZW1vdmVzIHVwIHRvIERVU1RfQ0xFQU5VUF9CQVRDSF9TSVpFIGVudHJpZXMgZnJvbSBbUmVjeWNsZXJBbGlhc1N0YXRlc10gcGVyIGNhbGwgdG9QYm91bmQgdGhlIG9wZXJhdGlvbi5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fZHVzdABqDJRDbGVhbiB1cCBkdXN0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6sZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbgQBGHBlcmlvZDgBGFBlcmlvZABrGEUBRGVsZXRlIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBhZnRlciBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6QQWxsIHJpbmdzIG11c3QgaGF2ZSBiZWVuIGNsZWFuZWQgdmlhQQFbYGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmdgXShTZWxmOjpjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nKSBiZWZvcmUgdGhpczhjYW4gYmUgY2FsbGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUFBFMAAAQAbQUBGFZlYzxUPgAAZQUAAAQIDQRpBQBpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABVAQEYVmVjPFQ+AABtBQAAAmUFAHEFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXREQ29kZWNQcmVzZXJ2YXRpb24AAQwoRXhwZW5kYWJsZQAAABxQcm90ZWN0AAEAIFByZXNlcnZlAAIAAHUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBeQUEUwAABAB9BQEYVmVjPFQ+AAB5BQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0PFVucGFpZExvYWRJbnB1dAQEVAAAEAEwcHJlc2VydmF0aW9ucQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwaQQBOFNpZ25hdHVyZU9mPFQ+AAB9BQAAAnkFAIEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAEkEARhWZWM8VD4AAIUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBiQUEUwAABACNBQEYVmVjPFQ+AACJBQAABAgNBAgAjQUAAAKJBQCRBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0TFVubG9hZFJlY3ljbGVySW5wdXQEMEFsaWFzZXNCb3VuZAAAEAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARxhbGlhc2VzgQUBfEJvdW5kZWRWZWM8QWxpYXMsIEFsaWFzZXNCb3VuZD4AAJUFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQsRmVlQ3VycmVuY3kAAQgYTmF0aXZlAAAANEV4dGVybmFsQXNzZXQAAQAAmQUAAAKRBQCdBQwodmVyaWZpYWJsZRByaW5nRE1lbWJlcnNDb21taXRtZW50AAMgAQAADAChBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUFBFMAAAQAqQUBGFZlYzxUPgAApQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACpBQAAAqUFAK0FBBhPcHRpb24EBFQBsQUBCBBOb25lAAAAEFNvbWUEALEFAAABAACxBQAABAhpAUUBALUFDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQQQ2FsbAQEVAABICRzdWJzY3JpYmUMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABTG1lbWJlcnNfY29sbGVjdGlvbnO5BQEdAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlciw+AAEwcGFsbGV0X2luZGV4DAEIdTgAACygUmVnaXN0ZXJzIHRoZSBwYXJhY2hhaW4gYXMgYSBzdWJzY3JpYmVyLtBUaGUgaW5pdGlhbCBzdGF0ZSB3aWxsIGJlIHNlbnQgb3ZlciBzaG9ydGx5IHZpYSBYQ00uACQjIyBPcmlnaW6oUmVxdWlyZXMgYE1hbmFnZU9yaWdpbmAgKGdvdmVybmFuY2Uvcm9vdCkuADQjIyBQYXJhbWV0ZXJzFQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliaW5nIHBhcmFjaGFpbi5FAS0gYG1lbWJlcnNfY29sbGVjdGlvbnNgOiBMaXN0IG9mIGNvbGxlY3Rpb24gaWRlbnRpZmllcnMgdG8gc3Vic2NyaWJlIHRvIGFuZCB0aGVpcnAgIHJlc3BlY3RpdmUgcmluZyBleHBvbmVudHMuNQEtIGBwYWxsZXRfaW5kZXhgOiBQYWxsZXQgaW5kZXggb2YgbWVtYmVycy1zdWJzY3JpYmVyIG9uIHRoZSBzdWJzY3JpYmVyIGNoYWluLix1bnN1YnNjcmliZQQBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lkxQUBOE9wdGlvbjxQYXJhSWQ+AAEkZFVuc3Vic2NyaWJlcyBhIHBhcmFjaGFpbi4AJCMjIE9yaWdpbj0BLSAqKlNlbGYtdW5zdWJzY3JpYmUqKjogU3Vic2NyaWJlciBwYXJhY2hhaW4gdmlhIFhDTSAoYEVuc3VyZVN1YnNjcmliZXJPcmlnaW5gKdQtICoqR292ZXJuYW5jZSB1bnN1YnNjcmliZSoqOiBSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYAA0IyMgUGFyYW1ldGVyc2EBLSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgOiBUaGUgUGFyYUlkIHRvIHVuc3Vic2NyaWJlLiBSZXF1aXJlZCBmb3IgZ292ZXJuYW5jZSwgaWdub3JlZMQgIGZvciBzZWxmLXVuc3Vic2NyaWJlIChkZXJpdmVkIGZyb20gWENNIG9yaWdpbikuOHJlcXVlc3RfcmVwbGF5DAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABRHJpbmdfcm9vdF9pbmRpY2VzyQUBsEJvdW5kZWRWZWM8UmluZ0luZGV4LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAIknFJlcXVlc3RzIHJlcGxheSBvZiBzcGVjaWZpYyByaW5nIHJvb3RzLgA1AVBlcm1pc3Npb25sZXNzIOKAlCBhbnkgc2lnbmVkIG9yaWdpbiBjYW4gcmVxdWVzdCBhIHJlcGxheSBmb3IgYW55IHN1YnNjcmliZXIuSQFUaGUgc3Vic2NyaWJlciBwYXJhY2hhaW4gaXMgaWRlbnRpZmllZCBieSB0aGUgYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYCBwYXJhbWV0ZXIuACxQYXJhbWV0ZXJzOugtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliZXIumC0gYGlkZW50aWZpZXJgOiBDb2xsZWN0aW9uIGlkZW50aWZpZXIuWQEtIGByaW5nX3Jvb3RfaW5kaWNlc2A6IExpc3Qgb2YgcmluZyByb290IGluZGljZXMsIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLjxlbnF1ZXVlX3VwZGF0ZXMIASRzZW5kX3BhZ2XFAwEMdTE2AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAMM+EVucXVldWVzIHBlbmRpbmcgdXBkYXRlcyBpbnRvIGEgc2VhbGVkIGJhdGNoIGZvciBkaXN0cmlidXRpb24uAMRBdXRob3JpemVkIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuKHNlbmRfYmF0Y2gMARxwYXJhX2lknAEYUGFyYUlkAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAEDMRTZW5kcyB0aGUgY3VycmVudCBiYXRjaCB0byBhIHNwZWNpZmljIHN1YnNjcmliZXIuAPRBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuOHNlbmRfaW5pdF9wYWdlEAEccGFyYV9pZJwBGFBhcmFJZAABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXjkAURPcHRpb248UmluZ0luZGV4PgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAFDNhTZW5kcyBvbmUgcGFnZSBvZiBpbml0aWFsaXphdGlvbiBkYXRhIHRvIGEgc3Vic2NyaWJlci4A9EF1dGhvcml6ZWQgbWFpbnRlbmFuY2UgY2FsbCBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci5MYWJhbmRvbl9zdHVja19iYXRjaAQBNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAGFORBYmFuZG9ucyBhIHN0dWNrIGJhdGNoIHRoYXQgZXhjZWVkZWQgYFN0dWNrQmF0Y2hUaW1lb3V0YC4xAVN1YnNjcmliZXJzIHRoYXQgZGlkIG5vdCByZWNlaXZlIHRoZSBiYXRjaCBjYW4gcmVjb3ZlciB2aWEgYHJlcXVlc3RfcmVwbGF5YC4ANQFBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIgd2hlbiBhIGJhdGNoIGhhc7BiZWVuIGFjdGl2ZSBsb25nZXIgdGhhbiBgU3R1Y2tCYXRjaFRpbWVvdXRgLlRzdWJzY3JpYmVfd2hpdGVsaXN0ZWQEAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAAHFE0BUmVnaXN0ZXJzIGEgd2hpdGVsaXN0ZWQgcGFyYWNoYWluIGFzIGEgc3Vic2NyaWJlciwgdXNpbmcgdGhlIGNvbGxlY3Rpb25zIGFuZCBwYWxsZXSAaW5kZXggcmVjb3JkZWQgaW4gdGhlIHdoaXRlbGlzdC4APQFUaGUgd2hpdGVsaXN0IGVudHJ5IGlzIGNvbnN1bWVkLCBzbyBhIHBhcmFjaGFpbiBjYW4gYmUgc3Vic2NyaWJlZCB0aGlzIHdheSBvbmx5JQFvbmNlLiBBZnRlciBhbiBgdW5zdWJzY3JpYmVgLCBvbmx5IGBNYW5hZ2VPcmlnaW5gIGNhbiBzdWJzY3JpYmUgaXQgYWdhaW4uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBvQUEUwAABADBBQEYVmVjPFQ+AAC9BQAABAgISQUAwQUAAAK9BQDFBQQYT3B0aW9uBARUAZwBCBBOb25lAAAAEFNvbWUEAJwAAAEAAMkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAM0FDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQQQ2FsbAQEVAABNDhzY2hlZHVsZV9ldmVudAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABEGluZm/RBQE4RXZlbnRJbmZvT2Y8VD4AABRVAVNjaGVkdWxlIGEgbmV3IGFpcmRyb3AgZXZlbnQuIE9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYC4gVGhlIHByaXplIGFsbG9jYXRpb24gaXMZAWhlbGQgaW4gdGhlIHBhbGxldCdzIHBvdCBhY2NvdW50LiBUaGUgcG90IGlzIGFzc3VtZWQgdG8gYmUgcHJlLWZ1bmRlZC4AUQFDcm9zcy1wYWxsZXQgY2FsbGVycyBzaG91bGQgdXNlIHRoZSBbYGNyYXRlOjp0eXBlczo6QWlyZHJvcDo6c2NoZWR1bGVgXSB0cmFpdCBtZXRob2TkaW5zdGVhZCwgd2hpY2ggZGViaXRzIGEgY2FsbGVyLXN1cHBsaWVkIGBzb3VyY2VgIGFjY291bnQuWHJlbW92ZV9zY2hlZHVsZWRfZXZlbnQEASBldmVudF9pZAgBHEV2ZW50SWQAAQgRAVJlbW92ZSBhIHByZXZpb3VzbHkgc2NoZWR1bGVkIGV2ZW50LiBUaGUgZXZlbnQgbXVzdCBub3QgaGF2ZSBhbHJlYWR5nHN0YXJ0ZWQsIG90aGVyd2lzZSB0aGlzIGNhbGwgd2lsbCBmYWlsLjBlbmFibGVfYXNzZXQIASBhc3NldF9pZGkBATBBc3NldElkT2Y8VD4AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAChBNAUVuYWJsZSBhbiBhc3NldCBmb3IgdXNlIGluIGFpcmRyb3AgZXZlbnRzLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAFkBVHJhbnNmZXJzIHRoZSBhc3NldCdzIGN1cnJlbnQgbWluaW11bSBiYWxhbmNlIGZyb20gYHNvdXJjZWAgdG8gdGhlIHBhbGxldCdzIHBvdCBzbyB0aGUlAXBvdCdzIGFzc2V0IGFjY291bnQgc3RheXMgYWxpdmUgd2hpbGUgZXZlbnRzIGhvbGQgcHJpemUgZnVuZHMgYWdhaW5zdCBpdC40ZGlzYWJsZV9hc3NldAgBIGFzc2V0X2lkaQEBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAsUWQFEaXNhYmxlIGFuIGFzc2V0IHByZXZpb3VzbHkgZW5hYmxlZCB3aXRoIGBlbmFibGVfYXNzZXRgLiBSZWZ1bmRzIHRoZSBvcmlnaW5hbGx5LWZ1bmRlZDkBYW1vdW50IGZyb20gdGhlIHBvdCB0byBgYmVuZWZpY2lhcnlgLiBUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9ubHkuAE0BVGhlIG1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIG5vIGV2ZW50cyBzdGlsbCByZWZlcmVuY2UgdGhpcyBhc3NldCBiZWZvcmUZAWRpc2FibGluZywgYnV0IHRoaXMgaXMgc2FmZSBzaW5jZSBzY2hlZHVsaW5nIGFuIGV2ZW50IGlzIHBlcm1pc3Npb25lZC50c3RhcnRfcmVnaXN0cmF0aW9uX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAIc3E9DVy1kcml2ZW46IHRyYW5zaXRpb24gYFNjaGVkdWxlZCDihpIgUmVnaXN0ZXJpbmdgIHdoZW6EYHJlZ2lzdHJhdGlvbl9zdGFydHNgIGlzIHJlYWNoZWQuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLnRjbG9zZV9yZWdpc3RyYXRpb25fYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIAAzRsT0NXLWRyaXZlbjogYXQgYGRyYXdfdGltZWA6UC0gY2xvc2UgcmVnaXN0cmF0aW9uhC0gY29tcHV0ZSB0aGUgdGFyZ2V0IHdpbm5lciBjb3VudMwtIHJlbGVhc2UgdGhlIHVudXNlZC1zbG90IHByaXplIGFsbG9jYXRpb24gdXAtZnJvbnT4LSByZWNvcmQgdGhlIHJhbmRvbW5lc3Mgc291cmNlJ3MgY3VycmVudCBtb21lbnQgYXMgYSB3YXRlcm1hcmu4LSB0cmFuc2l0aW9uIGBSZWdpc3RlcmluZyDihpIgQXdhaXRpbmdFbnRyb3B5YAAdAVRoZSBlbnRyb3B5IGNhcHR1cmUgYW5kIHRoZSB3aW5uZXIgZHJhd3MgYXJlIHBlcmZvcm1lZCBpbiBsYXRlciBzdGFnZXMuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmhjYXB0dXJlX2VudHJvcHlfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIADCxZAU9DVy1kcml2ZW46IHNlZWQgdGhlIGRyYXcgd2l0aCBmcmVzaCByYW5kb21uZXNzIHByb2R1Y2VkIGFmdGVyIHJlZ2lzdHJhdGlvbiBjbG9zZWQgYW5ktHRyYW5zaXRpb24gYEF3YWl0aW5nRW50cm9weSDihpIgRHJhd1dpbm5lcnNgLgAtAVRoZSBgYXV0aG9yaXplYCBnYXRlIG9ubHkgbGV0cyB0aGlzIGNhbGwgdGhyb3VnaCBvbmNlIHRoZSByYW5kb21uZXNzIHNvdXJjZSkBcmVwb3J0cyBhIHZhbHVlIHdpdGggYSBtb21lbnQgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIHRoZSB3YXRlcm1hcmsgcmVjb3JkZWQBAXdoZW4gcmVnaXN0cmF0aW9uIGNsb3NlZDsgdW50aWwgdGhlbiB0aGUgdHJhbnNhY3Rpb24gaXMgaW52YWxpZC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVdAWFmdGVyIGEgcmUtb3JnLCBvciBpbnZhbGlkYXRlZCBiZWNhdXNlIHRoZSByYW5kb21uZXNzIGlzIG5vdCBmcmVzaCB5ZXQuIEFzIHRoZSBhY2NlcHRlZBUBdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvIHNwYW0gdGhlIHBvb2wuXGRyYXdfd2lubmVyc19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAEJNBPQ1ctZHJpdmVuOiBkcmF3IHVwIHRvIGBEcmF3TGltaXRgIHdpbm5lcnMgcGVyIGNhbGwuAEUBQWZ0ZXIgYWxsIHRoZSB3aW5uZXJzIGFyZSBkcmF3biwgdGhlIHRyYW5zaXRpb24gdG8gYENsYWltaW5nYCBpcyBwZXJmb3JtZWQgYnkgdGhlkHNlcGFyYXRlIGBjbG9zZV9kcmF3aW5nX2F1dGhvcml6ZWRgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5gY2xvc2VfZHJhd2luZ19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAFHFEBT0NXLWRyaXZlbjogb25jZSBgZHJhd193aW5uZXJzX2F1dGhvcml6ZWRgIGhhcyBmaWxsZWQgdGhlIHdpbm5lciBzZXQsIHRyYW5zaXRpb24gdGhlnGV2ZW50IGZyb20gYERyYXdXaW5uZXJzYCB0byBgQ2xhaW1pbmdgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5kY2xvc2VfY2xhaW1pbmdfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABhgxAU9DVy1kcml2ZW46IGF0IGBlbmRfdGltZWAgY2xvc2UgY2xhaW1pbmcgYW5kIGVudGVyIHRoZSBmaXJzdCBjbGVhbi11cCBwaGFzZS4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuhGNsZWFuX3VwX3JlZ2lzdHJhdGlvbnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABxw5AU9DVy1kcml2ZW46IEZpcnN0IHN0ZXAgb2YgY2xlYW4tdXAgaXMgdG8gY2xlYXIgdXAgdG8gYENsZWFyTGltaXRgIGVudHJpZXMgZnJvbVUBYFJlZ2lzdHJhdGlvbnNgLiBXaGVuIHRoZSBzdG9yYWdlIGlzIGZ1bGx5IGRyYWluZWQsIHRyYW5zaXRpb25zIHRvIGBDbGVhcmluZ1dpbm5lcnNgLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5sY2xlYW5fdXBfd2lubmVyc19hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAIHD0BT0NXLWRyaXZlbjogU2Vjb25kIHN0ZXAgb2YgY2xlYW4tdXAgaXMgdG8gY2xlYXIgdXAgdG8gYENsZWFyTGltaXRgIGVudHJpZXMgZnJvbSkBYFdpbm5lcnNgLiBXaGVuIHRoZSBzdG9yYWdlIGlzIGZ1bGx5IGRyYWluZWQsIHRyYW5zaXRpb25zIHRvIGBGaW5hbGl6aW5nYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuTGZpbmFsaXplX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAkcTQFPQ1ctZHJpdmVuOiBUaGlyZCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIHJlbGVhc2UgdGhlIHVuY2xhaW1lZCBwcml6ZSBhbGxvY2F0aW9uIGFuZERyZW1vdmUgdGhlIGV2ZW50LgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QUMUGluZGl2X3BhbGxldF9haXJkcm9wFHR5cGVzJEV2ZW50SW5mbwgcQXNzZXRJZAFpATBBc3NldEJhbGFuY2UBRQEAEAEUcHJpemXNBAGMQWlyZHJvcFByaXplPEFzc2V0SWQsIEFzc2V0QmFsYW5jZT4AAUxyZWdpc3RyYXRpb25fc3RhcnRzKAEMdTY0AAEkZHJhd190aW1lKAEMdTY0AAEgZW5kX3RpbWUoAQx1NjQAANUFDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBBDYWxsBARUAAEEGGJlc3RvdwgBEHZvdGXZBQEgVm90ZURhdGEAATxjYWxsX3ZhbGlkX2Zyb20oARxTZWNvbmRzAAAQOEJlc3RvdyBhIHZvdGUuAFUBQWNjZXB0cyBvbmx5IHRoZSBbYE9yaWdpbjo6Vm90ZXJgXSBvcmlnaW4sIHdoaWNoIGlzIGNyZWF0ZWQgYnkgdmVyaWZ5aW5nIGEgcmluZyBwcm9vZgUBaW4gdGhlIFtgVm90ZXJBdXRoYF0oZXh0ZW5zaW9uOjpWb3RlckF1dGgpIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QUMTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMgVm90ZURhdGEAAAwBHHN1YmplY3QIASRTdWJqZWN0SWQAARRwb2ludAwBHFBvaW50SWQAASRkaXJlY3Rpb27dBQEkRGlyZWN0aW9uAADdBQxMaW5kaXZfcGFsbGV0X2hvbm91chR0eXBlcyREaXJlY3Rpb24AAQgoSG9ub3VyYWJsZQAAADREaXNob25vdXJhYmxlAAEAAOEFDHBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzGHBhbGxldBBDYWxsBARUAAEYOHNjaGVkdWxlX2RyYXdzBAEUZHJhd3PlBQHYQm91bmRlZFZlYzxBaXJkcm9wRXZlbnRJbmZvT2Y8VD4sIFQ6Ok1heFNjaGVkdWxlQmF0Y2g+AAAUSQFTY2hlZHVsZSBhIGJhdGNoIG9mIGRyYXdzLCBpbiBvcmRlciwgYXNzaWduaW5nIGVhY2ggdGhlIG5leHQgZHJhdyBpbmRleC4gVGhlIHByaXplVQFhbGxvY2F0aW9uIG9mIGV2ZXJ5IGRyYXcgaXMgdHJhbnNmZXJyZWQgZnJvbSBbYENvbmZpZzo6UHJpemVTb3VyY2VgXSBpbnRvIHRoZSBhaXJkcm9wEHBvdC4AVQFJZiBhbnkgZXZlbnQgZmFpbHMgdG8gYmUgc2NoZWR1bGVkLCB0aGUgd2hvbGUgY2FsbCBmYWlscyBhbmQgbm8gZXZlbnRzIGFyZSBzY2hlZHVsZWQuVHJlbW92ZV9zY2hlZHVsZWRfZHJhdwQBIGV2ZW50X2lkCAEcRXZlbnRJZAABDEkBUmVtb3ZlIGEgc2NoZWR1bGVkIGRyYXcgdGhhdCBoYXMgbm90IG9wZW5lZCB5ZXQsIHJlZnVuZGluZyBpdHMgcHJpemUgYWxsb2NhdGlvbiB0b1EBW2BDb25maWc6OlByaXplU291cmNlYF0uIEJlc3QtZWZmb3J0OiBhIG5vLW9wIGZvciBhbiB1bmtub3duIG9yIGFscmVhZHktb3BlbmVkIGRyYXcuOQFUaGUgZHJhdydzIHNhbHQgaXMga2VwdCwgc2luY2UgdGhlIGRyYXcgbWF5IHN0aWxsIGJlIGxpdmUgKHNlZSBbYERyYXdTYWx0c2BdKS4sY2FuY2VsX2RyYXcEASBldmVudF9pZAgBHEV2ZW50SWQAAgw5AUNhbmNlbCBhIGRyYXcgaW4gYW55IHN0YXRlOiBwYXJ0aWNpcGF0aW9uIGFuZCBjbGFpbXMgY2xvc2UgaW1tZWRpYXRlbHkgYW5kIHRoZUUBc3RpbGwtaGVsZCBwcml6ZSBhbGxvY2F0aW9uIGlzIHJlZnVuZGVkIHRvIFtgQ29uZmlnOjpQcml6ZVNvdXJjZWBdIGJ5IHRoZSBhaXJkcm9wKQFjbGVhbi11cC4gQmVzdC1lZmZvcnQ6IGEgbm8tb3AgZm9yIGFuIHVua25vd24gb3IgYWxyZWFkeS10ZXJtaW5hdGluZyBkcmF3LiByZWdpc3RlcgQBJGV2ZW50X2lkc+0FAaBCb3VuZGVkVmVjPEV2ZW50SWQsIFQ6Ok1heFJlZ2lzdGVyQmF0Y2g+AAMUWQFSZWdpc3RlciB0aGUgY2FsbGluZyBwZXJzb24gZm9yIGV2ZXJ5IGRyYXcgaW4gYGV2ZW50X2lkc2AuIEFsbCBvciBub3RoaW5nOiBhbnkgZmFpbHVyZSkBKHVua25vd24gZHJhdywgZHJhdyBub3Qgb3BlbiwgYWxyZWFkeSByZWdpc3RlcmVkKSByZXZlcnRzIHRoZSB3aG9sZSBiYXRjaC4APQFGcmVlIG9uIHN1Y2Nlc3MuIFN1Y2Nlc3MgaXMgYm91bmRlZCB0byBvbmUgcmVnaXN0cmF0aW9uIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvcHJlcGVhdGVkIGNhbGxzIGZhaWwgYW5kIHBheS4UY2xhaW0IASBldmVudF9pZAgBHEV2ZW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAEGCUBQ2xhaW0gdGhlIGNhbGxpbmcgcGVyc29uJ3MgcHJpemUgaW4gdGhlIGRyYXcgYGV2ZW50X2lkYCwgcGF5aW5nIGl0IG91dCB0b00BYGRlc3RpbmF0aW9uYC4gT25seSBkcmF3biB3aW5uZXJzIGhvbGQgYSBjbGFpbWFibGUgcHJpemUsIGFuZCBvbmx5IHVudGlsIHRoZSBkcmF3J3NQY2xhaW0gd2luZG93IGNsb3Nlcy4AAQFTdWNjZXNzIGlzIGJvdW5kZWQgdG8gb25lIGNsYWltIHBlciBwZXJzb24gYW5kIGRyYXcsIHNvIHJlcGVhdGVkTGNhbGxzIGZhaWwgYW5kIHBheS5IY2xlYW5fdXBfZHJhd19zYWx0BAEgZXZlbnRfaWQIARxFdmVudElkAAUYYQFPQ1ctZHJpdmVuOiByZW1vdmUgYSBkcmF3J3MgW2BEcmF3U2FsdHNgXSBlbnRyeSBvbmNlIHRoZSBkcmF3J3MgZW5kIHRpbWUgaGFzIHBhc3NlZC4gVGhlUQFzYWx0IGlzIG9ubHkgcmVhZCBkdXJpbmcgcmVnaXN0cmF0aW9uLCB3aGljaCBjbG9zZXMgc3RyaWN0bHkgYmVmb3JlIHRoZSBlbmQgdGltZSwgc29odGhlIGVudHJ5IGlzIGRlYWQgYnkgdGhlbi4ARQFUaGUgdHJhbnNhY3Rpb24gaXMgb25seSBhY2NlcHRlZCBmcm9tIGEgbG9jYWwgb3IgaW4tYmxvY2sgc291cmNlLCBzbyBpdCBjYW5ub3QgYmVUc3VibWl0dGVkIGV4dGVybmFsbHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB0QUEUwAABADpBQEYVmVjPFQ+AADpBQAAAtEFAO0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAEkEARhWZWM8VD4AAPEFDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29y9QUBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcgUGAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOQBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3IJBgGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu9QUEGE9wdGlvbgQEVAH5BQEIEE5vbmUAAAAQU29tZQQA+QUAAAEAAPkFCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgH9BSxCbG9ja051bWJlcgE4AQgYQWN0aXZlBAABBgGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAP0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAAQYIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yAf0FLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3IFBgE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAAAUGBBhPcHRpb24EBFQB/QUBCBBOb25lAAAAEFNvbWUEAP0FAAABAAAJBghEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAQ0GAQggU3BlY2lmaWMEABEGARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTkASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvchUGATxPcHRpb248VmVjPHU4Pj4AAQAADQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAARBgAAAg0GABUGBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAGQYMXHBhbGxldF92ZXJpZnlfc2lnbmF0dXJlJGV4dGVuc2lvbjxWZXJpZnlTaWduYXR1cmUEBFQAAQggRGlzYWJsZWQAAAAYU2lnbmVkCAEkc2lnbmF0dXJlcQQBMFQ6OlNpZ25hdHVyZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQAAHQYMTGluZGl2X3BhbGxldF9wZW9wbGUkZXh0ZW5zaW9uIEFzUGVyc29uBARUAAAEACEGAVxPcHRpb248QXNQZXJzb25JbmZvPFQ+PgAAIQYEGE9wdGlvbgQEVAElBgEIEE5vbmUAAAAQU29tZQQAJQYAAAEAACUGDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbjBBc1BlcnNvbkluZm8EBFQAARRoQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAAAYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZhAAFQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAABAGxBc1BlcnNvbmFsSWRlbnRpdHlXaXRoUHJvb2YIAGkEAThTaWduYXR1cmVPZjxUPgAAKAEoUGVyc29uYWxJZAACAHRBc1BlcnNvbmFsSWRlbnRpdHlXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAwCEQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRSZXZpc2VkFAA4ASBUOjpOb25jZQAAFQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAAEAAApBgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luayRleHRlbnNpb25cQXNQcm9vZk9mSW5rUGFydGljaXBhbnQEBFQAAAQALQYBmE9wdGlvbjxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm88VD4+AAAtBgQYT3B0aW9uBARUATEGAQgQTm9uZQAAABBTb21lBAAxBgAAAQAAMQYMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9ubEFzUHJvb2ZPZklua1BhcnRpY2lwYW50SW5mbwQEVAABDDhBc0FwcGx5V2l0aFNpZwQAOAEgVDo6Tm9uY2UAAAAoQXNSZWZlcnJlZAQAOAEgVDo6Tm9uY2UAAQAkQXNJbnZpdGVkBAA4ASBUOjpOb25jZQACAAA1BgxIaW5kaXZfcGFsbGV0X3Njb3JlJGV4dGVuc2lvbkhTY29yZUFzUGFydGljaXBhbnQEBFQAAAQAOQYBoE9wdGlvbjxTY29yZUFzUGFydGljaXBhbnREYXRhPFQ6Ok5vbmNlPj4AADkGBBhPcHRpb24EBFQBPQYBCBBOb25lAAAAEFNvbWUEAD0GAAABAAA9BgxIaW5kaXZfcGFsbGV0X3Njb3JlJGV4dGVuc2lvblhTY29yZUFzUGFydGljaXBhbnREYXRhBBROb25jZQE4AAQBFG5vbmNlOAEUTm9uY2UAAEEGDERpbmRpdl9wYWxsZXRfZ2FtZSRleHRlbnNpb240R2FtZUFzSW52aXRlZAQEVAAABABFBgFwT3B0aW9uPEdhbWVBc0ludml0ZWREYXRhPFQ+PgAARQYEGE9wdGlvbgQEVAFJBgEIEE5vbmUAAAAQU29tZQQASQYAAAEAAEkGDERpbmRpdl9wYWxsZXRfZ2FtZSRleHRlbnNpb25ER2FtZUFzSW52aXRlZERhdGEEBFQAABABFG5vbmNlOAEgVDo6Tm9uY2UAARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AASRzaWduYXR1cmVxBAFIVDo6VGlja2V0U2lnbmF0dXJlAABNBgxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbjhQZW9wbGVMaXRlQXV0aAQEVAAABABRBgF8T3B0aW9uPFBlb3BsZUxpdGVBdXRoRGF0YU9mPFQ+PgAAUQYEGE9wdGlvbgQEVAFVBgEIEE5vbmUAAAAQU29tZQQAVQYAAAEAAFUGDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUkZXh0ZW5zaW9uSFBlb3BsZUxpdGVBdXRoRGF0YQgUTm9uY2UBOBRQcm9vZgEVBAEQMEFzTGl0ZVBlcnNvbgQAOAEUTm9uY2UAAABYQXNMaXRlQWxpYXNXaXRoQWNjb3VudAQAOAEUTm9uY2UAAQBQQXNMaXRlQWxpYXNXaXRoUHJvb2YQABUEARRQcm9vZgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAAIARxDb250ZXh0AAIAdEFzTGl0ZUFsaWFzV2l0aEFjY291bnRSZXZpc2VkFAA4ARROb25jZQAAFQQBFFByb29mAAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQAAwAAWQYMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbiBBc01lbWJlcgQEVAAABABdBgFcT3B0aW9uPEFzTWVtYmVySW5mbzxUPj4AAF0GBBhPcHRpb24EBFQBYQYBCBBOb25lAAAAEFNvbWUEAGEGAAABAABhBgxQaW5kaXZfcGFsbGV0X21lbWJlcnMkZXh0ZW5zaW9uMEFzTWVtYmVySW5mbwQEVAABBCxTZWxmSW5jbHVkZQQAaQQBOFNpZ25hdHVyZU9mPFQ+AAAAAGUGDFBpbmRpdl9wYWxsZXRfY29pbmFnZSRleHRlbnNpb24kQXNDb2luYWdlBARUAAAEAGkGAWBPcHRpb248QXNDb2luYWdlSW5mbzxUPj4AAGkGBBhPcHRpb24EBFQBbQYBCBBOb25lAAAAEFNvbWUEAG0GAAABAABtBgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uNEFzQ29pbmFnZUluZm8EBFQAARgYQXNDb2luAAAATEFzVW5sb2FkVG9rZW5QZW9wbGUQARRwcm9vZnEGAbA8VDo6TWVtYmVyc2hpcFByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnMRBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgABAFxBc1VubG9hZFRva2VuTGl0ZVBlb3BsZRABFHByb29mcQYBsDxUOjpNZW1iZXJzaGlwUHJvb2YgYXMgVmFsaWRhdGVQcm9vZj46OlByb29mAAEYcGVyaW9kOAEYUGVyaW9kAAEcY291bnRlcjgBDHUzMgABMGFsaWFzX3Byb29mcxEEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAIAREFzVW5sb2FkVG9rZW5QYWlkFAEUcHJvb2YVBAEoUHJvb2ZPZjxUPgABGHBlcmlvZDgBGFBlcmlvZAABVHBhaWRfdG9rZW5fcmluZ19pbmRleDgBDHUzMgABYHBhaWRfdG9rZW5fcmluZ19yZXZpc2lvbjgBDHUzMgABMGFsaWFzX3Byb29mcxEEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAMAXEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0FAFIZmVlX3JlY3ljbGVyX3ZhbHVlDQQBMERlbm9taW5hdGlvbgABSGZlZV9yZWN5Y2xlcl9pbmRleDgBJFJpbmdJbmRleAABVGZlZV9yZWN5Y2xlcl9yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATRyZXRyeV9jb3VudGVyDAEIdTgAATBhbGlhc19wcm9vZnMRBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgAEAFhJbmZhbGxpYmxlVW5wYWlkU2lnbmVkBAEUbm9uY2U4ASBUOjpOb25jZQAFAABxBgxMaW5kaXZfcGFsbGV0X3Blb3BsZRR0eXBlczxNZW1iZXJzaGlwUHJvb2YEBFQAAAwBFHByb29mFQQBKFByb29mT2Y8VD4AARByaW5nOAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAB1BgxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcyRleHRlbnNpb24sQXNSZXNvdXJjZXMEBFQAAAQAeQYBaE9wdGlvbjxBc1Jlc291cmNlc0luZm88VD4+AAB5BgQYT3B0aW9uBARUAX0GAQgQTm9uZQAAABBTb21lBAB9BgAAAQAAfQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uPEFzUmVzb3VyY2VzSW5mbwQEVAABEHRSZWdpc3Rlck5vdGlmaWNhdGlvbldpdGhQcm9vZgwAFQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAAIRSZWdpc3Rlck5vdGlmaWNhdGlvbkZvckNvbGxlY3Rpb24QABUEAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAPkDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgABAHxSZWdpc3RlclN0YXRlbWVudFN0b3JlQWxsb3dhbmNlEAAVBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAD5AwFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAgBQQ2xhaW1Mb25nVGVybVN0b3JhZ2UQABUEAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAPkDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgADAACBBgxMaW5kaXZfcGFsbGV0X2hvbm91ciRleHRlbnNpb24kVm90ZXJBdXRoBARUAAAEAIUGAWBPcHRpb248Vm90ZXJBdXRoRGF0YTxUPj4AAIUGBBhPcHRpb24EBFQBiQYBCBBOb25lAAAAEFNvbWUEAIkGAAABAACJBgxMaW5kaXZfcGFsbGV0X2hvbm91ciRleHRlbnNpb240Vm90ZXJBdXRoRGF0YQQEVAAADAEUcHJvb2YVBAE4UmluZ1Byb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AACNBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAACRBgh8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjhSZXN0cmljdE9yaWdpbgQEVAAABABRAQEQYm9vbAAAlQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAAmQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAAJ0GEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAAKEGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAAClBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAKkGAQxFcmEAAKkGEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAArQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAALEGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAAtQYIXHBhbGxldF9hc3NldF90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBNAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQ9AwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AALkGCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBvQYAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0Yb0GASxBY2NvdW50RGF0YQAAvQYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQFFAQAQARBmcmVlRQEBHEJhbGFuY2UAASByZXNlcnZlZEUBARxCYWxhbmNlAAEYZnJvemVuRQEBHEJhbGFuY2UAARRmbGFnc8EGAShFeHRyYUZsYWdzAADBBgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQARQEBEHUxMjgAAMUGDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBcQIADAEYbm9ybWFscQIBBFQAASxvcGVyYXRpb25hbHECAQRUAAEkbWFuZGF0b3J5cQIBBFQAAMkGAAACzQYAzQYIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQHRBgRUATwADAEUcGhhc2UxCAEUUGhhc2UAARRldmVudNEGAQRFAAEYdG9waWNzNQgBGFZlYzxUPgAA0QYIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAGgGFN5c3RlbQQA1QYBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAD9BgG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAoUGFyYW1ldGVycwQAAQcBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgBJACBCYWxhbmNlcwQAMQcBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BABlBwGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsASFNraXBGZWVsZXNzUGF5bWVudAQAaQcBrHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADABET3JpZ2luUmVzdHJpY3Rpb24EAG0HAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFdmVudDxSdW50aW1lPgANABhBc3NldHMEAHEHAXRwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEAHUHAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXZlbnQ8UnVudGltZT4ADwAkQXNzZXRSYXRlBAB5BwGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+ABAAOEFzc2V0VHhQYXltZW50BAB9BwGccGFsbGV0X2Fzc2V0X3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+ABEAPEFzc2V0Q29udmVyc2lvbgQAgQcBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFdmVudDxSdW50aW1lPgASAChQb29sQXNzZXRzBACNBwHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgATAERDb2xsYXRvclNlbGVjdGlvbgQAkQcBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EAJUHAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBACZBwGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAJ0HAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBACtBwGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEALEHAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIgAcVXRpbGl0eQQAuQcBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQAwQcBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAQU3VkbwQAxQcBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgAqABRQcm94eQQAyQcBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4ALAAYUGVvcGxlBADRBwGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXZlbnQ8UnVudGltZT4AMwAcTW9iUnVsZQQA1QcBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXZlbnQ8UnVudGltZT4ANAAoUHJvb2ZPZkluawQA3QcBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkV2ZW50PFJ1bnRpbWU+ADUAEEdhbWUEAOEHAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXZlbnQ8UnVudGltZT4ANwAUU2NvcmUEAOUHAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkV2ZW50PFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAOkHAaBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHM6OkV2ZW50PFJ1bnRpbWU+ADkAIER1bW15RGltBAD1BwGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXZlbnQ8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQA+QcBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXZlbnQ8UnVudGltZT4APgAkUmVzb3VyY2VzBAD9BwGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXZlbnQ8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAAQgBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXZlbnQ8UnVudGltZT4AQAAcTWVtYmVycwQABQgBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFdmVudDxSdW50aW1lPgBDABxDb2luYWdlBAAJCAGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkV2ZW50PFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAEQgBtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFdmVudDxSdW50aW1lPgBFABxBaXJkcm9wBAAVCAGQaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkV2ZW50PFJ1bnRpbWU+AEYAGEhvbm91cgQAIQgBjGluZGl2X3BhbGxldF9ob25vdXI6OkV2ZW50PFJ1bnRpbWU+AEcAOFBlb3BsZUFpcmRyb3BzBAApCAGwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wczo6RXZlbnQ8UnVudGltZT4ASABQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAC0IAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4AYgAA1QYMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm/ZBgFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9y5QYBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZv2QYBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uUQEBEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAEUZXJyb3LlBgE0RGlzcGF0Y2hFcnJvcgAHBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC7ZBggwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHRxAgEYV2VpZ2h0AAEUY2xhc3PdBgE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVl4QYBEFBheXMAAN0GDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAADhBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAADlBggoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBADpBgEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQA7QYBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQA8QYBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAD1BgFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAPkGASRUcmllRXJyb3IADgAA6QYIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnABjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAADtBggoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAADxBgg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAPUGCChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAD5Bgwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAA/QYMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkcQIBGFdlaWdodAABIGRtcV9oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2hZBQE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQBBwxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0FEV2ZW50BARUAAEEHFVwZGF0ZWQMAQxrZXkFBwHEPFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQRkVGhlIGtleSB0aGF0IHdhcyB1cGRhdGVkLgEkb2xkX3ZhbHVlGQcB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHxUaGUgb2xkIHZhbHVlIGJlZm9yZSB0aGlzIGNhbGwuASRuZXdfdmFsdWUZBwHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EeFRoZSBuZXcgdmFsdWUgYWZ0ZXIgdGhpcyBjYWxsLgAMUEEgUGFyYW1ldGVyIHdhcyBzZXQuALxJcyBhbHNvIGVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgd2FzIG5vdCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUHDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnNQUnVudGltZVBhcmFtZXRlcnNLZXkAARBAU3RhdGVtZW50U3RvcmFnZQQACQcByQE8ZHluYW1pY19wYXJhbXM6OnN0YXRlbWVudF9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAAA8QnVsbGV0aW5TdG9yYWdlBAANBwHFATxkeW5hbWljX3BhcmFtczo6YnVsbGV0aW5fc3RvcmFnZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAOFBlb3BsZUFpcmRyb3BzBAARBwHBATxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAgA4TGl0ZVBlcnNvbmhvb2QEABUHAcEBPGR5bmFtaWNfcGFyYW1zOjpsaXRlX3BlcnNvbmhvb2Q6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQADAAAJBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlNFBhcmFtZXRlcnNLZXkAATBQQWNjb3VudHNBcGlBbGxvd2FuY2UEAMgBUEFjY291bnRzQXBpQWxsb3dhbmNlAAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQQA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAAYAYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAQA2AFgTGl0ZVBlcnNvblN0YXRlbWVudExpbWl0AAoAUFBlcnNvblN0YXRlbWVudExpbWl0BADcAVBQZXJzb25TdGF0ZW1lbnRMaW1pdAALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAQA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAQBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBADoAWxMaXRlU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAgBUU3RtdFN0b3JlQ2xlYW51cExpbWl0BADsAVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgQA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAEAFBTdG10U3RvcmVHcmFjZVdpbmRvdwQA9AFQU3RtdFN0b3JlR3JhY2VXaW5kb3cABQBoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAPgBaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAcAeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAQAAQEBeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAIAGhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgQABQEBaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uAAkAAA0HFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZTRQYXJhbWV0ZXJzS2V5AAEYdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uBAANAQF0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb24AAABoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cEABEBAWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QEABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0BAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AAMAhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQQAHQEBhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAEAJRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlBAApAQGUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQAFAAARBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPHBlb3BsZV9haXJkcm9wczRQYXJhbWV0ZXJzS2V5AAEELFByaXplU291cmNlBAAxAQEsUHJpemVTb3VyY2UAAAAAFQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxsaXRlX3BlcnNvbmhvb2Q0UGFyYW1ldGVyc0tleQABBDxSZWdpc3RyYXRpb25GZWUEAD0BATxSZWdpc3RyYXRpb25GZWUAAAAAGQcEGE9wdGlvbgQEVAEdBwEIEE5vbmUAAAAQU29tZQQAHQcAAAEAAB0HDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnNYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABEEBTdGF0ZW1lbnRTdG9yYWdlBAAhBwHRATxkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAPEJ1bGxldGluU3RvcmFnZQQAJQcBzQE8ZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAOFBlb3BsZUFpcmRyb3BzBAApBwHJATxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQACADhMaXRlUGVyc29uaG9vZAQALQcByQE8ZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAwAAIQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZTxQYXJhbWV0ZXJzVmFsdWUAATBQQWNjb3VudHNBcGlBbGxvd2FuY2UEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAAAFROb3RpZmljYXRpb25BbGxvd2FuY2UEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAKAFBQZXJzb25TdGF0ZW1lbnRMaW1pdAQA0AFsU3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyAAsAXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBAA4AQx1MzIAAQBsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kBAA4AQx1MzIAAgBUU3RtdFN0b3JlQ2xlYW51cExpbWl0BAA4AQx1MzIAAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgQAOAEMdTMyAAQAUFN0bXRTdG9yZUdyYWNlV2luZG93BAA4AQx1MzIABQBoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAwBCHU4AAcAeExpdGVOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAQADAEIdTgACABoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24EADgBDHUzMgAJAAAlBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2U8UGFyYW1ldGVyc1ZhbHVlAAEYdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uBAA4AQx1MzIAAABoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cEADgBDHUzMgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QEAAwBCHU4AAIAbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAQAOAEMdTMyAAMAhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQQAJQEBZExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb24ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQQAJQEBZExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb24ABQAAKQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHM8UGFyYW1ldGVyc1ZhbHVlAAEELFByaXplU291cmNlBAAEAVxzcF9ydW50aW1lOjpBY2NvdW50SWQzMgAAAAAtBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxQYXJhbWV0ZXJzVmFsdWUAAQQ8UmVnaXN0cmF0aW9uRmVlBABFAQEcQmFsYW5jZQAAAAAxBww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZUUBAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZUUBAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXM1BwEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudEUBAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGRFAQEoVDo6QmFsYW5jZQABDG5ld0UBAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbjkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb245BwFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uOQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29uOQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVkRQEBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbjkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBABhBwE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1BxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAADkHCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEkHFNlc3Npb24EAD0HAWhwYWxsZXRfc2Vzc2lvbjo6SG9sZFJlYXNvbgAWACxQb2xrYWRvdFhjbQQAQQcBWHBhbGxldF94Y206OkhvbGRSZWFzb24AHwAcTW9iUnVsZQQARQcBhGluZGl2X3BhbGxldF9tb2JfcnVsZTo6SG9sZFJlYXNvbgA0AChQcm9vZk9mSW5rBABJBwGUaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6SG9sZFJlYXNvbgA1ABBHYW1lBABNBwF0aW5kaXZfcGFsbGV0X2dhbWU6OkhvbGRSZWFzb24ANwAUU2NvcmUEAFEHAXhpbmRpdl9wYWxsZXRfc2NvcmU6OkhvbGRSZWFzb24AOAAoTmZ0Q3JlZGl0cwQAVQcBkGluZGl2X3BhbGxldF9uZnRfY3JlZGl0czo6SG9sZFJlYXNvbgA5ABxDb2luYWdlBABZBwGAaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkhvbGRSZWFzb24ARAAcQWlyZHJvcAQAXQcBgGluZGl2X3BhbGxldF9haXJkcm9wOjpIb2xkUmVhc29uAEYAAD0HDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAEEHDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAEUHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAABJBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoSG9sZFJlYXNvbgABBChQcm9vZk9mSW5rAAAAAE0HDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQoSG9sZFJlYXNvbgABBCxQbGF5RGVwb3NpdAAAAABRBwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldChIb2xkUmVhc29uAAEIGFBheW91dAAAABhDcmVkaXQAAQAAVQcMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxhwYWxsZXQoSG9sZFJlYXNvbgABBCxQbGF5RGVwb3NpdAAAAABZBwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQwcV3JhcHBlZAAAACxMb2FkRGVwb3NpdAABAFxJbnN0YW5jZUNyZWF0aW9uRGVwb3NpdAACAABdBwxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0KEhvbGRSZWFzb24AAQQcQWlyZHJvcAAAAABhBww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAAZQcMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlRQEBMEJhbGFuY2VPZjxUPgABDHRpcEUBATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0aQcMbHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQoRmVlU2tpcHBlZAQBGG9yaWdpbskDAcA8VDo6UnVudGltZU9yaWdpbiBhcyBPcmlnaW5UcmFpdD46OlBhbGxldHNPcmlnaW4AAAR4QSB0cmFuc2FjdGlvbiBmZWUgd2FzIHNraXBwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0bQcMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEEMFVzYWdlQ2xlYW5lZAQBGGVudGl0eWEBAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VFAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZGkBAShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZGkBAShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuUQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZGkBAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZGkBAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlRQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABIHJlc2VydmVzrQEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkaQEBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0dQcMUHBhbGxldF9hc3NldHNfaG9sZGVyGHBhbGxldBRFdmVudAgEVAAESQABDBBIZWxkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRpAQEoVDo6QXNzZXRJZAABGHJlYXNvbjkHAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAAExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YC4gUmVsZWFzZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEYcmVhc29uOQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZGkBAShUOjpBc3NldElkAAEYcmVhc29uOQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAgS4YHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgYnVybmVkIGJ5IGBhbW91bnRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHkHDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmRpAQEwVDo6QXNzZXRLaW5kAAEQcmF0ZbUBASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmRpAQEwVDo6QXNzZXRLaW5kAAEAQEFzc2V0UmF0ZVVwZGF0ZWQMAShhc3NldF9raW5kaQEBMFQ6OkFzc2V0S2luZAABDG9sZLUBASRGaXhlZFUxMjgAAQxuZXe1AQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0fQcMXHBhbGxldF9hc3NldF90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVFAQFEQXNzZXRCYWxhbmNlT2Y8VD4AAQx0aXBFAQFEQXNzZXRCYWxhbmNlT2Y8VD4AASBhc3NldF9pZD0DAWhPcHRpb248Q2hhcmdlQXNzZXRJZE9mPFQ+PgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEHDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkhQcBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWSFBwEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZEUBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWRFAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWRFAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWSFBwEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDFFAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MkUBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWRFAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWXRBAEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW5FAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aIkHAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW5FAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aIkHAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWSFBwEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQcAAAQIaQFpAQCJBwAAArEFAI0HDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblEBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXPJAQFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQcMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzVQEBRFZlYzxUOjpBY2NvdW50SWQ+AAAEbE5ldyBJbnZ1bG5lcmFibGVzIHdlcmUgc2V0LkRJbnZ1bG5lcmFibGVBZGRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQR0QSBuZXcgSW52dWxuZXJhYmxlIHdhcyBhZGRlZC5MSW52dWxuZXJhYmxlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAgRwQW4gSW52dWxuZXJhYmxlIHdhcyByZW1vdmVkLlBOZXdEZXNpcmVkQ2FuZGlkYXRlcwQBSGRlc2lyZWRfY2FuZGlkYXRlczgBDHUzMgADBKRUaGUgbnVtYmVyIG9mIGRlc2lyZWQgY2FuZGlkYXRlcyB3YXMgc2V0LkBOZXdDYW5kaWRhY3lCb25kBAEsYm9uZF9hbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAGBHBCb25kIG9mIGEgY2FuZGlkYXRlIHVwZGF0ZWQuQENhbmRpZGF0ZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAcEYEEgY2FuZGlkYXRlIHdhcyByZW1vdmVkLkRDYW5kaWRhdGVSZXBsYWNlZAwBDG9sZAQBMFQ6OkFjY291bnRJZAABDG5ldwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lQcMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0mQcMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQcMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWWhBwFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW5pAQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbmkBASBMb2NhdGlvbgABHG1lc3NhZ2X5AgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2luaQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb25pAQEgTG9jYXRpb24AARRlcnJvcqkHASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2luaQEBIExvY2F0aW9uAAEUZXJyb3IpAwEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2luaQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZR0DASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0cQIBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHRxAgEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2luaQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb249AwFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2luaQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luaQEBIExvY2F0aW9uAAEYYXNzZXRzdQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9uaQEBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3QFAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb25pAQEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9uaQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3IpAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9u5QEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2luaQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbmkBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXJpAQEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcj0DAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbmkBASBMb2NhdGlvbgABEGNvc3QFAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb25pAQEgTG9jYXRpb24AARBjb3N0BQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9uaQEBIExvY2F0aW9uAAEQY29zdAUDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ2kBASBMb2NhdGlvbgABEGZlZXMFAwEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbmkBASBMb2NhdGlvbgABGGFzc2V0c3UDATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2VyaQEBIExvY2F0aW9uAAEYdGFyZ2V0aQEBIExvY2F0aW9uAAEYZXhwaXJ5rQMBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlcmkBASBMb2NhdGlvbgABGHRhcmdldGkBASBMb2NhdGlvbgAbBMxgdGFyZ2V0YCByZW1vdmVkIGFsaWFzIGF1dGhvcml6YXRpb24gZm9yIGBhbGlhc2VyYC5wQWxpYXNlc0F1dGhvcml6YXRpb25zUmVtb3ZlZAQBGHRhcmdldGkBASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShBxAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkcQIBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZHECARhXZWlnaHQAARRlcnJvcqUHAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBAClBwFASW5zdHJ1Y3Rpb25FcnJvcgACAAClBxAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yKQMBFEVycm9yAACpBxAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAACtBwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAAChBwEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQcMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW65AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcrUHAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW65AwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZHECARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc1EBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbrkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbrkDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0tQcQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAcQIBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAC5Bww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEV2ZW50AAEgQEJhdGNoSW50ZXJydXB0ZWQIARRpbmRleDgBDHUzMgABFGVycm9y5QYBNERpc3BhdGNoRXJyb3IAAAhVAUJhdGNoIG9mIGRpc3BhdGNoZXMgZGlkIG5vdCBjb21wbGV0ZSBmdWxseS4gSW5kZXggb2YgZmlyc3QgZmFpbGluZyBkaXNwYXRjaCBnaXZlbiwgYXNId2VsbCBhcyB0aGUgZXJyb3IuOEJhdGNoQ29tcGxldGVkAAEEyEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGZ1bGx5IHdpdGggbm8gZXJyb3IuYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwACBLRCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBidXQgaGFzIGVycm9ycy40SXRlbUNvbXBsZXRlZAADBB0BQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBubyBlcnJvci4oSXRlbUZhaWxlZAQBFGVycm9y5QYBNERpc3BhdGNoRXJyb3IABAQRAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggZXJyb3IuMERpc3BhdGNoZWRBcwQBGHJlc3VsdL0HAThEaXNwYXRjaFJlc3VsdAAFBFhBIGNhbGwgd2FzIGRpc3BhdGNoZWQuRElmRWxzZU1haW5TdWNjZXNzAAYEZE1haW4gY2FsbCB3YXMgZGlzcGF0Y2hlZC5QSWZFbHNlRmFsbGJhY2tDYWxsZWQEAShtYWluX2Vycm9y5QYBNERpc3BhdGNoRXJyb3IABwSEVGhlIGZhbGxiYWNrIGNhbGwgd2FzIGRpc3BhdGNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0vQcEGFJlc3VsdAgEVAEQBEUB5QYBCAhPawQAEAAAAAAMRXJyBADlBgAAAQAAwQcMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXZlbnQEBFQAARQsTmV3TXVsdGlzaWcMASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAAEjEEgbmV3IG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVndW4uQE11bHRpc2lnQXBwcm92YWwQASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQxBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAQTIQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQgYnkgc29tZW9uZS5ATXVsdGlzaWdFeGVjdXRlZBQBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABGHJlc3VsdL0HAThEaXNwYXRjaFJlc3VsdAACBJxBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBleGVjdXRlZC5ETXVsdGlzaWdDYW5jZWxsZWQQAShjYW5jZWxsaW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50MQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAMEoEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAASxvbGRfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABATwVGhlIGRlcG9zaXQgZm9yIGEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQvcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xQcMLHBhbGxldF9zdWRvGHBhbGxldBRFdmVudAQEVAABEBRTdWRpZAQBLHN1ZG9fcmVzdWx0vQcBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGQ1AQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3BAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx0vQcBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4DBMhBIFtzdWRvX2FzXShQYWxsZXQ6OnN1ZG9fYXMpIGNhbGwganVzdCB0b29rIHBsYWNlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMkHDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHS9BwE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUEEATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleMUDAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjFAwEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5kzQcBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNBwgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAADRBwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXZlbnQEBFQAAShQUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAT4QW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhbmQgaW5kZXhlZC5AUGVyc29uT25ib2FyZGluZwgBDHdobygBKFBlcnNvbmFsSWQAAQxrZXkIASxNZW1iZXJPZjxUPgABBBEBQW4gaW5kaXZpZHVhbCBoYXMgaGFkIHRoZWlyIHBlcnNvbmhvb2QgcmVjb2duaXNlZCBhZ2FpbiBhbmQgaW5kZXhlZC48QWxpYXNEaXNwYXRjaGVkCAEUYWxpYXPhAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJRBIGNhbGwgd2FzIGRpc3BhdGNoZWQgdW5kZXIgYW4gYWxpYXMuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFz4QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc+EDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5QUGVyc29uYWxJZEFjY291bnRTZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBNBBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuWFBlcnNvbmFsSWRBY2NvdW50VW5zZXQIAQx3aG8oAShQZXJzb25hbElkAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBLRBIHBlcnNvbmFsIElELXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwSIVGhlIHBlb3BsZSBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLmRGb3JjZVBlcnNvbmhvb2RSZWNvZ25pemVkBAEYcGVvcGxlSQQBQFZlYzxNZW1iZXJPZjxUPj4ACAS0UGVyc29uaG9vZCB3YXMgZm9yY2VmdWxseSByZWNvZ25pemVkIGJ5IHJvb3QuOEFsaWFzQ2xlYW5lZFVwCAEUYWxpYXPhAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAJBKxBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV01QcMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQURXZlbnQEBFQAAUQsQ2FzZUNyZWF0ZWQEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BIBUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjcmVhdGVkLgAEYEEgY2FzZSBoYXMgYmVlbiBjcmVhdGVkLiBDYWxsYmFjawQBGHJlc3VsdL0HAThEaXNwYXRjaFJlc3VsdARsVGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2suAQScQSBjYWxsYmFjayB3YXMgdHJpZ2dlcmVkIGZyb20gbW9iLXJ1bGUuNENhbGxiYWNrRXJyb3IIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BKRUaGUgY2FzZSB3aG9zZSBjYWxsYmFjayBmYWlsZWQgdG8gZGVjb2RlLgEcdHJpZ2dlctkHATxDYWxsYmFja1RyaWdnZXIEEQFUaGUgbW9iLXJ1bGUgZXh0cmluc2ljIGNhbGwgd2hpY2ggYXR0ZW1wdGVkIHRvIHRyaWdnZXIgdGhlIGNhbGxiYWNrLgIEAQFUaGVyZSB3YXMgYSBjb2RlYyBlcnJvciB3aGVuIHRyeWluZyB0byBkZWNvZGUgdGhlIGNhbGxiYWNrIGNhbGwuKENhc2VDbG9zZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BHxUaGUgY2FzZSBpbmRleCB0aGF0IHdhcyBjbG9zZWQuARx2ZXJkaWN0WQQBJEp1ZGdlbWVudAR8VGhlIHZlcmRpY3Qgb2YgdGhlIGNsb3NlZCBjYXNlLgMEzFRoZSBjYXNlIGhhcyBiZWVuIGNsb3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzdWx0LhRWb3RlZAwBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuARxvcGluaW9uWQQBJEp1ZGdlbWVudARkVGhlIG9waW5pb24gb2YgdGhlIHZvdGVyLgQEhEEgdm90ZSBoYXMgYmVlbiBwbGFjZWQgb24gYSBjYXNlLixWb3RlQ2xlYW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgEUdm90ZXIIARRBbGlhcwRUVGhlIGFsaWFzIHRoYXQgdm90ZWQuBQRgQSB2b3RlIGhhcyBiZWVuIGNsZWFuZWQuLENhc2VSZW1vdmVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARIVGhlIGNhc2Ugdm90ZWQgb24uBgRgQSBjYXNlIGhhcyBiZWVuIHJlbW92ZWQuOENhc2VJbnRlcnZlbmVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLgEcdmVyZGljdFkEASRKdWRnZW1lbnQEgFRoZSB2ZXJkaWN0IGFwcGxpZWQgdG8gdGhlIGNhc2UuBwRsQSBjYXNlIGhhcyBiZWVuIGludGVydmVuZWQuMFZvdGVzQ2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEwY2FzZV9pbmRpY2VzYQQBOFZlYzxDYXNlSW5kZXg+BIhUaGUgY2FzZSB0aGF0IGhhcyBiZWVuIGludGVydmVuZWQuCASQQ3JlZGl0cyBmb3Igdm90ZXMgaGF2ZSBiZWVuIGNsYWltZWQuMFJld2FyZFBheW91dAwBFHZvdGVyCAEUQWxpYXMEfFRoZSBhbGlhcyB0aGF0IGVhcm5lZCBhIHJld2FyZC4BLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkBJxUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHBheW91dC4BGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4EnFRoZSBwYXlvdXQgYW1vdW50IHRoYXQgd2FzIHRyYW5zZmVycmVkLgkEgEEgcmV3YXJkIHRoYXQgaGFzIGJlZW4gcGFpZCBvdXQuSFBheW91dFJvdW5kU3RhcnRlZAwBFHJvdW5kOAEoUm91bmRJbmRleASIVGhlIGluZGV4IG9mIHRoZSBuZXcgcGF5b3V0IHJvdW5kLgE8aW5pdGlhbF9iYWxhbmNlRQEBMEJhbGFuY2VPZjxUPgSwVGhlIGluaXRpYWwgYmFsYW5jZSBhbGxvY2F0ZWQgZm9yIHRoZSByb3VuZC4BMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudATEVG90YWwgYWNjdW11bGF0ZWQgcG9pbnRzIGNsYWltYWJsZSBpbiB0aGlzIHJvdW5kLgoEkEEgbmV3IHBheW91dCByb3VuZCBoYXMgYmVlbiBzdGFydGVkLlRQYXlvdXRSb3VuZHNTY2hlZHVsZWQMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BHhUaGUgYW1vdW50IG9mIGZ1bmRzIHBlciByb3VuZC4BFGNvdW50OAEMdTMyBHxUaGUgbnVtYmVyIG9mIHJvdW5kcyBzY2hlZHVsZWQuARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgS4VGhlIG1pbmltdW0gcGVyaW9kIChpbiBibG9ja3MpIGJldHdlZW4gcm91bmRzLgsEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4MBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLjRDcmVkaXRDbGFpbWVkCAEUdm90ZXIIARRBbGlhcwSMVGhlIGFsaWFzIG9mIHRoZSB2b3RlciB3aG8gY2xhaW1lZC4BGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4EdFRoZSBhbW91bnQgb2YgY3JlZGl0IGNsYWltZWQuDQTUQ3JlZGl0IGhhcyBiZWVuIGNsYWltZWQgZnJvbSB0aGUgcGF5b3V0IGRpc3RyaWJ1dGlvbi40UG9pbnRzQ2xlYW5lZAgBFHJvdW5kOAEoUm91bmRJbmRleAS8VGhlIHJvdW5kIGluZGV4IGZyb20gd2hpY2ggcG9pbnRzIHdlcmUgcmVtb3ZlZC4BFHZvdGVyCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwb2ludHMgd2VyZSByZW1vdmVkLg4EmFN0YWxlIHZvdGluZyBwb2ludHMgaGF2ZSBiZWVuIGNsZWFuZWQuLENhc2VUb3VjaGVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARoVGhlIGNhc2UgdGhhdCB3YXMgdG91Y2hlZC4BHHJpcGVuZWRRAQEQYm9vbASkV2hldGhlciB0aGUgY2FzZSB3YXMgcmlwZW5lZCBhcyBhIHJlc3VsdC4PBJxBIGNhc2UgaGFzIGJlZW4gdG91Y2hlZCAocmUtZXZhbHVhdGVkKS5QVm90aW5nUGVuYWx0eUNsZWFyZWQEAQx3aG8IARRBbGlhcwSQVGhlIGFsaWFzIHdob3NlIHBlbmFsdHkgd2FzIGNsZWFyZWQuEASIQSB2b3RpbmcgcGVuYWx0eSBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0PENhbGxiYWNrVHJpZ2dlcgABCCRDbG9zZUNhc2UAAAAkSW50ZXJ2ZW5lAAEAAN0HDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBRFdmVudAQEVAABXEBDYW5kaWRhdGVBcHBsaWVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAABIxDYW5kaWRhdGUgYXBwbGllZCBmb3IgdmVyaWZpY2F0aW9uLkhKdWRnZW1lbnRSZXF1ZXN0ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEBQFDYW5kaWRhdGUgb3BlbmVkIGEgTW9iIFJ1bGUgY2FzZSBmb3IgdGhlaXIgdmVyaWZpY2F0aW9uIGV2aWRlbmNlLkRKdWRnZW1lbnRQcm92aWRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAASRqdWRnZW1lbnRZBAEkSnVkZ2VtZW50AAIE2E9yYWNsZSBoYXMgcHJvdmlkZWQgdGhlIGp1ZGdlbWVudCBmb3IgYSBNb2IgUnVsZSBjYXNlLjBSZXRyeUdyYW50ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgZmFpbHVyZXM4AQx1MzIAAwhFAUEgY2FuZGlkYXRlIGhhcyBiZWVuIGdyYW50ZWQgYSBmcmVlIHJldHJ5IGF0dGVtcHQgYWZ0ZXIgYSBmYWlsdXJlIHRvIHZlcmlmeSB0aGVpciRldmlkZW5jZS5AUGVyc29uUmVnaXN0ZXJlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAASxwZXJzb25hbF9pZCgBKFBlcnNvbmFsSWQABASAUmVnaXN0ZXIgYW4gYWNjb3VudCBhcyBhIHBlcnNvbi5EQ2FuZGlkYXRlUmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAASByZWZlcnJlZAQBMFQ6OkFjY291bnRJZAAFBGxQZXJzb24gcmVmZXJyZWQgYW4gYWNjb3VudC4gUmVyb2xsZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAYEtEVudHJvcHkgZm9yIGEgY2FuZGlkYXRlIGNoYW5nZWQgYWZ0ZXIgZXhwaXJ5LjxEZXNpZ25Db21taXR0ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscmVzZXJ2ZWRfaWQoAShQZXJzb25hbElkAAcElENhbmRpZGF0ZSBjb21taXR0ZWQgdG8gYW4gaW5rIGRlc2lnbi44RnVsbHlBbGxvY2F0ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAgEvFN0b3JhZ2UgZnVsbHkgYWxsb2NhdGVkIGZvciBhIGNvbW1pdHRlZCBkZXNpZ24uIFRpbWVkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJBIBDYW5kaWRhdGUgcmVtb3ZlZCBhZnRlciB0aW1lb3V0LiRGbGFrZWRPdXQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAoEeFVuY29tbWl0dGVkIGNhbmRpZGF0ZSByZW1vdmVkLjhUaWNrZXRSZWZlcnJlZAgBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABGHRpY2tldAQBJFQ6OlRpY2tldAALBOxSZWZlcnJhbCB0aWNrZXQgY3JlYXRlZCBieSBzdG9yaW5nIHRoZSBwdWJsaWMga2V5IG9uIGNoYWluLjxUaWNrZXRDYW5jZWxsZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQADAQZAVJlZmVycmFsIHRpY2tldCByZW1vdmVkIGJ5IHJlbW92aW5nIHRoZSBwdWJsaWMga2V5IGZyb20gY2hhaW4gc3RvcmFnZS40VGlja2V0QXBwbGllZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAASByZWZlcnJlcigBKFBlcnNvbmFsSWQADQSoQ2FuZGlkYXRlIGFwcGxpZWQgdXNpbmcgYSByZWZlcnJhbCB0aWNrZXQuLEZhbWlseUFkZGVkDAEUaW5kZXjFAwEsRmFtaWx5SW5kZXgAARBraW5keQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAA4EUERlc2lnbiBmYW1pbHkgYWRkZWQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAPBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQAEAQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy5cSW52aXRlZENhbmRpZGF0ZUFwcGxpZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABEEmENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGFuIGludml0YXRpb24uZFJlZmVycmFsVm91Y2hlclJlZ2lzdGVyZWQEASByZWZlcnJlcigBKFBlcnNvbmFsSWQAEgTAQSByZWZlcnJlcidzIHJld2FyZCB2b3VjaGVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQuOEludml0ZXNHcmFudGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyABMEoEludml0ZXMgaGF2ZSBiZWVuIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0CAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBJFQ6OlRpY2tldAAUBHhBbiBpbnZpdGUgdGlja2V0IGhhcyBiZWVuIHNldC5USW52aXRlVGlja2V0Q2FuY2VsbGVkCAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBJFQ6OlRpY2tldAAVBJBBbiBpbnZpdGUgdGlja2V0IGhhcyBiZWVuIGNhbmNlbGxlZC5AQ29uZmlndXJhdGlvblNldAQBGGNvbmZpZ30EAXxDb25maWdSZWNvcmQ8QmxvY2tOdW1iZXJGb3I8VD4+ABYEqFRoZSBwYWxsZXQgY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOEHDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQURXZlbnQEBFQAAVAcTmV3R2FtZQwBRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAEkZ2FtZV9kYXRlOAEMdTMyAAEscmVwb3J0X2VuZHM4AQx1MzIAAARcQSBuZXcgZ2FtZSBpcyBzdGFydGluZy4kR2FtZUVuZGVkBAEUaW5kZXg4ARxHYW1lSWR4AAEEoFRoZSBnYW1lIGFuZCBpdHMgcG9zdC1wcm9jZXNzIGhhcyBlbmRlZC40R2FtZVBoYXNlc1NldAQBGHBoYXNlc9kEAUxQaGFzZUR1cmF0aW9uVmFsdWVzAAIEGQFUaGUgZ2FtZSBwaGFzZSBkdXJhdGlvbnMgd2VyZSBvdmVycmlkZGVuIGJ5IFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uIFNpZ25lZFVwBAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAMEgEEgcGxheWVyIHNpZ25lZCB1cCBmb3IgdGhlIGdhbWUuPFJlcG9ydFN1Ym1pdHRlZAgBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAQEgEEgcGxheWVyIHN1Ym1pdHRlZCB0aGVpciByZXBvcnQuKE9mZmJvYXJkZWQEAQx3aG8JBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4ABQSIQSBwbGF5ZXIgb2ZmYm9hcmRlZCBmcm9tIHRoZSBnYW1lLiRLaWNrZWRPdXQEARhwbGF5ZXIJBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4ABgSIQW4gYXJjaGl2ZWQgcGxheWVyIHdhcyBraWNrZWQgb3V0LjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAHBIxJbnZpdGVzIHdlcmUgZ3JhbnRlZCB0byBhbiBhY2NvdW50LjxJbnZpdGVUaWNrZXRTZXQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAgEZEFuIGludml0ZSB0aWNrZXQgd2FzIHNldC5USW52aXRlVGlja2V0Q2FuY2VsbGVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAJBHxBbiBpbnZpdGUgdGlja2V0IHdhcyBjYW5jZWxsZWQuLExpdGVJbnZpdGVkBAEYcGxheWVyBAEwVDo6QWNjb3VudElkAAoISQFBIGxpdGUgcGVyc29uIGludml0ZWQgdGhlIGFjY291bnQgYHBsYXllcmAgdG8gcGxheSBvbiB0aGVpciBiZWhhbGYsIHdoaWNoIGlzIG5vdyBhjHBsYXllciB3aXRoIGFuIGludml0ZWQgY3JlZGliaWxpdHkuOEdhbWVzU2NoZWR1bGVkBAEUY291bnQ4AQx1MzIACwRUR2FtZXMgd2VyZSBzY2hlZHVsZWQuUFNjaGVkdWxlZEdhbWVSZW1vdmVkBAE4Z2FtZV9wbGF5X3RpbWU4AQx1MzIADAR0QSBzY2hlZHVsZWQgZ2FtZSB3YXMgcmVtb3ZlZC5AU3RtdFVzYWdlUmVtb3ZlZAQBDHdobwgBIFt1ODsgMzJdAA0EuFN0YXRlbWVudCBzdG9yZSB1c2FnZSByZW1vdmVkIGZvciB0aGUgYWNjb3VudC5EQWxsSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAA4EuEFsbCBpbnZpdGVzIGhhdmUgYmVlbiByZW1vdmVkIGZvciB0aGUgaW52aXRlci5IU29tZUludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAPBA0BU29tZSBpbnZpdGVzIGhhdmUgYmVlbiByZW1vdmVkIGZvciB0aGUgaW52aXRlciwgc29tZSBhcmUgcmVtYWluaW5nLjhQbGF5RGVwb3NpdFNldAQBGGFtb3VudEUBAUhOYXRpdmVCYWxhbmNlT2Y8VD4AEASgVGhlIGNvbmZpZ3VyZWQgcGxheSBkZXBvc2l0IHdhcyB1cGRhdGVkLkBBaXJkcm9wU2NoZWR1bGVkDAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAATRhaXJkcm9wX2luZGV4DAEIdTgAASBldmVudF9pZAgBOEFpcmRyb3BFdmVudElkABEE0EFuIGFpcmRyb3AgZXZlbnQgd2FzIHNjaGVkdWxlZCBmb3IgdGhlIGN1cnJlbnQgZ2FtZS5UQWlyZHJvcFNjaGVkdWxlRmFpbGVkDAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAATRhaXJkcm9wX2luZGV4DAEIdTgAARRlcnJvcuUGATREaXNwYXRjaEVycm9yABIE5EFuIGFpcmRyb3AgZXZlbnQgZm9yIHRoZSBjdXJyZW50IGdhbWUgZmFpbGVkIHRvIHNjaGVkdWxlLjRHYW1lQ2FuY2VsbGVkBAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAEwSAR2FtZSBgZ2FtZV9pbmRleGAgd2FzIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTlBwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBRFdmVudAQEVAABJDRDcmVkaXRDbGFpbWVkDAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BHhUaGUgcGVyc29uIHdobyBjbGFpbWVkIGNyZWRpdC4BLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkBLxEZXN0aW5hdGlvbiBhY2NvdW50IHRoYXQgcmVjZWl2ZWQgdGhlIHRyYW5zZmVyLgEYYW1vdW50RQEBMEJhbGFuY2VPZjxUPgRMQW1vdW50IHRyYW5zZmVycmVkLgAEcEEgcGVyc29uIGhhcyBjbGFpbWVkIGNyZWRpdC5QUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8JBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EsFRoZSBhY2NvdW50IHdob3NlIHBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQuARxyZXN1bWVkUQEBEGJvb2wEEQFXaGV0aGVyIHRoaXMgd2FzIHJlc3VtaW5nIGZyb20gc3VzcGVuc2lvbiBvciBmaXJzdC10aW1lIHJlY29nbml0aW9uLgEEpFBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQgZm9yIGFuIGFjY291bnQuVFBheW91dFJvdW5kc1NjaGVkdWxlZAwBGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4EVFRoZSBhbW91bnQgcGVyIHJvdW5kLgEUY291bnQ4AQx1MzIEVFRoZSBudW1iZXIgb2Ygcm91bmRzLgEgZHVyYXRpb244AURCbG9ja051bWJlckZvcjxUPgSEVGhlIGR1cmF0aW9uIHBlciByb3VuZCBpbiBibG9ja3MuAgSIUGF5b3V0IHJvdW5kcyBoYXZlIGJlZW4gc2NoZWR1bGVkLlRQYXlvdXRTY2hlZHVsZVJlbW92ZWQEARRpbmRleDgBDHUzMgSIVGhlIGluZGV4IG9mIHRoZSByZW1vdmVkIHNjaGVkdWxlLgMEjEEgcGF5b3V0IHNjaGVkdWxlIGhhcyBiZWVuIHJlbW92ZWQuRFJvdW5kVHJhbnNpdGlvbmVkBAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4BJhUaGUgcm91bmQgaW5kZXggdGhhdCB3YXMgdHJhbnNpdGlvbmVkLgQEeEEgcm91bmQgaGFzIGJlZW4gdHJhbnNpdGlvbmVkLkxQYXlvdXRSb3VuZE9wZXJhdGVkBAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4BIhUaGUgcm91bmQgaW5kZXggdGhhdCB3YXMgb3BlcmF0ZWQuBQQZAUEgcGF5b3V0IHJvdW5kIGhhcyBiZWVuIG9wZXJhdGVkIChjcmVkaXQgZGlzdHJpYnV0ZWQgdG8gcGFydGljaXBhbnRzKS4kQ2FzaGVkT3V0BAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BHxUaGUgcGFydGljaXBhbnQgd2hvIGNhc2hlZCBvdXQuBgS4QSBwYXJ0aWNpcGFudCBoYXMgY2FzaGVkIG91dCBzY29yZSBmb3IgcG9pbnRzLnhQZXJzb25ob29kVGhyZXNob2xkU2NoZWR1bGVTZXQABwS8VGhlIHBlcnNvbmhvb2QtdGhyZXNob2xkIHNjaGVkdWxlIGhhcyBiZWVuIHNldC5cQWJzZW5jZUdyYWNlU2NoZWR1bGVTZXQACASgVGhlIGFic2VuY2UtZ3JhY2Ugc2NoZWR1bGUgaGFzIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkHDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEV2ZW50BARUAAEcVE5mdENsYWltQ3JlZGl0QXdhcmRlZAwBIGNsYWltYW50CQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShsZWFmX2luZGV4OAEMdTMyAAAcWQFBbiBORlQgY2xhaW0gY3JlZGl0IHdhcyBhd2FyZGVkIHRvIGBjbGFpbWFudGAgYW5kIHJlY29yZGVkIGFzIGxlYWYgYGxlYWZfaW5kZXhgIG9mIHRoZVRjdXJyZW50IGJsb2NrJ3MgdHJlZS4AVQFPbmUgZXZlbnQgcGVyIGF3YXJkZWQgY3JlZGl0LCBpbiBsZWFmIG9yZGVyLCBpcyB3aGF0IGxldHMgYW4gaW5jbHVzaW9uIHByb29mIHN0aWxsIGJl7GJ1aWx0IG9uY2UgdGhlIGJsb2NrJ3MgYXdhcmRzIGhhdmUgYmVlbiBwcnVuZWQ6IHRoZSBsZWFmIGlzVQFgYmxha2UyXzI1NihjbGFpbWFudCArKyBjcmVkaXQpYCBhbmQgdGhlIGJsb2NrJ3MgbGVhZiBzZXQgaXMgdGhlIGBsZWFmX2luZGV4YC1vcmRlcmVk3HNlcXVlbmNlIG9mIHRoZXNlIGV2ZW50cywgc28gbm8gYmxvY2sgcmVwbGF5IGlzIG5lZWRlZC5oTmZ0Q2xhaW1DcmVkaXRSb290UmVjb3JkZWQIARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEsY3JlZGl0X3Jvb3TtBwFITmZ0Q2xhaW1DcmVkaXRUcmVlAAEIUQFUaGUgY3JlZGl0cyBhd2FyZGVkIGluIGJsb2NrIGBibG9ja2AgY2FuIGJlIG1pbnRlZCBmcm9tIG5vdyBvbjogYGNyZWRpdF9yb290YCdzIHJvb3Q9AWlzIHdoYXQgYW4gaW5jbHVzaW9uIHByb29mIGZvciBhbnkgb2YgdGhlbSB2ZXJpZmllcyBhZ2FpbnN0LCBhbmQgbmV2ZXIgY2hhbmdlcy48Q3JlZGl0VHJlZXNTZW50BAEUdHJlZXMFBQHMQm91bmRlZFZlYzxBd2FyZEJsb2NrLCBUOjpNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2U+GDEBVGhlIGF3YXJkIGJsb2NrIG9mIGV2ZXJ5IHRyZWUgdGhlIG1lc3NhZ2UgY2FycmllcywgaW4gdGhlIG9yZGVyIHRoZXkgZ28gb3V0LjkBRW1wdHkgbWVhbnMgZXZlcnkgdHJlZSBvZiB0aGlzIG1lc3NhZ2UgaGFkIGxvc3QgaXRzIHJvb3QsIHNvIG5vdGhpbmcgd2FzIHNlbnQuADUBVGhlIHNlcXVlbmNlIGVhY2ggYmxvY2sgdHJhdmVscyB1bmRlciBpcyBub3Qgc3BlbGxlZCBvdXQ6IHRoZSBtZXNzYWdlIHRha2VzIGFNAWNvbnRpZ3VvdXMgcnVuIG9mIHNlcXVlbmNlcyBvZmYgdGhlIHF1ZXVlLCBzdGFydGluZyBhdCB0aGUgY2FsbCdzIGBmaXJzdF9zZXF1ZW5jZWAsHQFtaW51cyB0aGUgb25lcyB0aGlzIGJsb2NrJ3MgW2BFdmVudDo6Q3JlZGl0VHJlZURlbGl2ZXJ5U2tpcHBlZGBdIG5hbWVzLgIEQQFDcmVkaXQgdHJlZXMgd2VyZSBoYW5kZWQgdG8gdGhlIFhDTSByb3V0ZXIgZm9yIGRlbGl2ZXJ5IHRvIHRoZSBORlQgY2xhaW1zIGNoYWluLmRDcmVkaXRUcmVlRGVsaXZlcnlTa2lwcGVkCAEgc2VxdWVuY2UoATBUcmVlU2VxdWVuY2UAARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAMQJQFBIHF1ZXVlZCBjcmVkaXQgdHJlZSB3YXMgbm90IHNlbnQgYmVjYXVzZSBpdHMgcm9vdCBpcyBubyBsb25nZXIgcmVjb3JkZWQuAFkBSXRzIHNlcXVlbmNlIGlzIHNwZW50IHdpdGhvdXQgYSB0cmVlIGV2ZXIgYXJyaXZpbmcsIHNvIHRoZSBjbGFpbXMgY2hhaW4gcmVwb3J0cyBhIGdhcC5dAU5vIFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0gY2FuIGZpbGwgaXQ6IHRoZSByb290IHByb29mcyB2ZXJpZnkgYWdhaW5zdCBpcyBnb25lLlBDcmVkaXRUcmVlU2VuZEZhaWxlZAAECFUBRGVsaXZlcmluZyBjcmVkaXQgdHJlZXMgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4gZmFpbGVkLiBUaGUgdHJlZXMgc3RheSBxdWV1ZWQgYW5kIHRoZaBuZXh0IG9mZmNoYWluIHdvcmtlciBjeWNsZSByZXRyaWVzIHRoZW0uTENyZWRpdFRyZWVzUmVwbGF5ZWQEARRjb3VudDgBDHUzMgAFBPRDcmVkaXQgdHJlZXMgd2VyZSByZXNlbnQgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4gb3V0IG9mIGJhbmQuZENyZWRpdFRyZWVEZWxpdmVyeURyb3BwZWQEARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAYQEQFBIGZyZXNobHkgYnVpbHQgY3JlZGl0IHRyZWUgY291bGQgbm90IGJlIHF1ZXVlZCBmb3IgZGVsaXZlcnkgYmVjYXVzZTEBYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYCBpcyBmdWxsLCB3aGljaCBtZWFucyBkZWxpdmVyeSBoYXMgYmVlbiBmYWlsaW5nIGZvcgUBYE1heFF1ZXVlZENyZWRpdFRyZWVzYCB0cmVlcy4gSXRzIGNyZWRpdHMgc3RheSB1bm1pbnRhYmxlIHVudGlsIGG4W2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSBuYW1lcyBgYmxvY2tgLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldO0HDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hOZnRDbGFpbUNyZWRpdFRyZWUAABABKGdhbWVfaW5kZXg4AQx1MzIAARByb2908QcBPENyZWRpdFByb29mTm9kZQABKGxlYWZfY291bnQ4AQx1MzIAASR0aW1lc3RhbXA4AQx1MzIAAPEHDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlczxDcmVkaXRQcm9vZk5vZGUAAAQACAEgW3U4OyAzMl0AAPUHDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBRFdmVudAQEVAABICxJZHNSZXNlcnZlZAQBFGNvdW50OAEMdTMyAAAEdEEgbnVtYmVyIG9mIElEcyB3YXMgcmVzZXJ2ZWQuJElkUmVuZXdlZAQBCGlkKAEoUGVyc29uYWxJZAABBEhBbiBJRCB3YXMgcmVuZXdlZC4wSWRVbnJlc2VydmVkBAEIaWQoAShQZXJzb25hbElkAAIEaEEgcmVzZXJ2ZWQgSUQgd2FzIHJlbW92ZWQuQFBlb3BsZVJlZ2lzdGVyZWQEARRjb3VudDgBDHUzMgADBGRSZWdpc3RlciBtdWx0aXBsZSBwZW9wbGUuPFBlb3BsZVN1c3BlbmRlZAQBFGNvdW50OAEMdTMyAAQEbFN1c3BlbmQgYSBudW1iZXIgb2YgcGVvcGxlLkRQZXJzb25ob29kUmVzdW1lZAQBCGlkKAEoUGVyc29uYWxJZAAFBIRTb21lb25lJ3MgcGVyc29uaG9vZCB3YXMgcmVzdW1lZC5IU3VzcGVuc2lvbnNTdGFydGVkAAYEfFRoZSBwYWxsZXQgZW5hYmxlZCBzdXNwZW5zaW9ucy5AU3VzcGVuc2lvbnNFbmRlZAAHBIBUaGUgcGFsbGV0IGRpc2FibGVkIHN1c3BlbnNpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPkHDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUYcGFsbGV0FEV2ZW50BARUAAEgeEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAAE8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIHZlcmlmaWVyLnRBdHRlc3RhdGlvbkFsbG93YW5jZUluY3JlYXNlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgABBC0BQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQgYnkgYGNvdW50YCBhdHRlc3RhdGlvbnMuOFBlcnNvbkF0dGVzdGVkCAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEgdmVyaWZpZXIEATBUOjpBY2NvdW50SWQAAgTUQSBuZXcgbGl0ZSBwZXJzb24gd2FzIHJlZ2lzdGVyZWQgdGhyb3VnaCBhdHRlc3RhdGlvbi5cUGVyc29uUmVnaXN0ZXJlZFdpdGhGZWUEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAwQBAUEgbmV3IGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIGJ5IHBheWluZyB0aGUgcmVnaXN0cmF0aW9uIGZlZS5IQ29uc3VtZXJSZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKxBIGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuPEFsaWFzQWNjb3VudFNldAgBFGFsaWFz4QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQS8QW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQIARRhbGlhc+EDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgcmVtb3ZlZC5EQ29sbGVjdGlvbkNyZWF0ZWQABwS4VGhlIGxpdGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0HDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBRFdmVudAQEVAABOEBQZXJzb25SZWdpc3RlcmVkCAEUYWxpYXMIARRBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAASYQSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5QTGl0ZVBlcnNvblJlZ2lzdGVyZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEErEEgbGl0ZSBwZXJzb24gaGFzIHJlZ2lzdGVyZWQgYXMgYSBjb25zdW1lci5gTm90aWZpY2F0aW9uU3RtdFVzYWdlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcQwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBPhOb3RpZmljYXRpb24gc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIGFzc2lnbmVkIGZvciBhIHNlcXVlbmNlLnBOb3RpZmljYXRpb25TdG10VXNhZ2VSZW1vdmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBLhOb3RpZmljYXRpb24gc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIHJlbW92ZWQuaFBlcnNvbkF1dGhvcml6YXRpb25Ub3VjaGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBJRBIHBlcnNvbidzIGF1dGhvcml6YXRpb24gd2FzIHRvdWNoZWQuhEV4cGlyZWRVc2VybmFtZVJlc2VydmF0aW9uUmVtb3ZlZAgBIHVzZXJuYW1lMQUBIFVzZXJuYW1lAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBLBBbiBleHBpcmVkIHVzZXJuYW1lIHJlc2VydmF0aW9uIHdhcyByZW1vdmVkLlBJZGVudGlmaWVyS2V5VXBkYXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABgSgQSBjb25zdW1lcidzIGlkZW50aWZpZXIga2V5IHdhcyB1cGRhdGVkLnhVc2VybmFtZVJlc2VydmF0aW9uRHVyYXRpb25TZXQEASBkdXJhdGlvbigBDHU2NAAHBKhUaGUgdXNlcm5hbWUgcmVzZXJ2YXRpb24gZHVyYXRpb24gd2FzIHNldC5UU3RtdFN0b3JlQWxsb3dhbmNlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcTgBDHUzMgABHGFjY291bnQEATBUOjpBY2NvdW50SWQACATMQW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2Ugd2FzIGdyYW50ZWQuaFN0bXRTdG9yZUFsbG93YW5jZXNDbGVhcmVkDAEYcGVyaW9kOAEMdTMyAAEkZmlyc3Rfa2V5CAEUQWxpYXMAARRjb3VudDgBDHUzMgAJBMxFeHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIHdlcmUgY2xlYW5lZCB1cC40UGVyc29uRGVtb3RlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQACgTcQSBmdWxsIHBlcnNvbiB3YXMgZGVtb3RlZCBkdWUgdG8gZXhwaXJlZCBhdXRob3JpemF0aW9uLlhMb25nVGVybVN0b3JhZ2VDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9u+QMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAsEyExvbmctdGVybSBzdG9yYWdlIGhhcyBiZWVuIGNsYWltZWQgZm9yIGFuIGFjY291bnQufExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb25GYWlsZWQUARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABKGNvbGxlY3Rpb275AwFQTWVtYmVyc2hpcENvbGxlY3Rpb24ADAhZAUEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW0gd2FzIGFjY2VwdGVkIGJ1dCB0aGUgZG93bnN0cmVhbSBhbGxvY2F0aW9uIGZhaWxlZC4gVGhlIGFsaWFzlGlzIHN0aWxsIG1hcmtlZCBzcGVudCBmb3IgdGhlIHBlcmlvZC50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlc0NsZWFyZWQIARhwZXJpb2Q4AQx1MzIAARRjb3VudDgBDHUzMgANBAUBRXhwaXJlZCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGhhdmUgYmVlbiBjbGVhcmVkIGZvciBhIHBlcmlvZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQBCAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBRFdmVudAQEVAABCGhDaHVua1BhZ2VIYXNoZXNJbml0aWFsaXplZAgBNHJpbmdfZXhwb25lbnRJBQEwUmluZ0V4cG9uZW50AAEsdG90YWxfcGFnZXM4AQx1MzIAAAQZAUEgbmV3IGNodW5rIHBhZ2UgaGFzaCBzZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKGUuZy4sIGR1cmluZyBnZW5lc2lzKS4sQ2h1bmtzQWRkZWQMATRyaW5nX2V4cG9uZW50SQUBMFJpbmdFeHBvbmVudAABLHN0YXJ0X2luZGV4OAEMdTMyAAEUY291bnQ4AQx1MzIAAQQhAU5ldyBjaHVua3MgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byBhbiBleGlzdGluZyBvciBuZXcgY2h1bmsgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUIDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQURXZlbnQEBFQAASgsTWVtYmVyQWRkZWQEAQxrZXkIASxNZW1iZXJPZjxUPgAABOhBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuNE1lbWJlclJlbW92ZWQEAQxrZXkIASxNZW1iZXJPZjxUPgABBKxBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJldm9rZWQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAIEqEEgY29sbGVjdGlvbiBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLkRDb2xsZWN0aW9uRGVsZXRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAMEkEEgY29sbGVjdGlvbiBoYXMgYmVlbiBmdWxseSBkZWxldGVkLiRSaW5nQnVpbHQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgABARYQSByaW5nIHJvb3Qgd2FzIGJ1aWx0LkBNZW1iZXJzT25ib2FyZGVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIABQRcTWVtYmVycyB3ZXJlIG9uYm9hcmRlZC4sUmluZ3NNZXJnZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAYEWFR3byByaW5ncyB3ZXJlIG1lcmdlZC5ET25ib2FyZGluZ1NpemVTZXQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgAHBLRUaGUgb25ib2FyZGluZyBzaXplIHdhcyBzZXQgZm9yIGEgY29sbGVjdGlvbi5ITWVtYmVyU2VsZkluY2x1ZGVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAQxrZXkIASxNZW1iZXJPZjxUPgAIBIxBIG1lbWJlciBzZWxmLWluY2x1ZGVkIGludG8gYSByaW5nLkBPbGRSb290Q2xlYW5lZFVwDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244AQx1MzIACQSkQW4gb2xkIHJvb3QgcmV2aXNpb24gaGFzIGJlZW4gY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0FEV2ZW50BARUAAGEJENvaW5TcGxpdAgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMG91dHB1dF9jb3VudDgBDHUzMgAAADxDb2luVHJhbnNmZXJyZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABHG5ld19hZ2XFAwEMdTE2AAEAWFJlY3ljbGVyTG9hZGVkV2l0aENvaW4IASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AAgB8UmVjeWNsZXJMb2FkZWRXaXRoRXh0ZXJuYWxBc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAwBgUmVjeWNsZXJVbmxvYWRlZEludG9Db2luFAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF92YWx1ZQ0EATBEZW5vbWluYXRpb24AATBvdXRwdXRfdmFsdWUNBAEwRGVub21pbmF0aW9uAAEsaW5wdXRfY291bnQ4AQx1MzIABACEUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0FAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABQC8UmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0QW5kTG9hZGVkQ29pbnMYASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAAFUZXh0ZXJuYWxfYXNzZXRfYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABRGxvYWRlZF9jb2luX2NvdW50OAEMdTMyAAYAVFJlY3ljbGVyQWxpYXNVbmxvYWRlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRhbGlhcwgBFEFsaWFzAAcgGQFBbiBhbGlhcyB3YXMgcGVybWFuZW50bHkgbWFya2VkIGFzIHVubG9hZGVkIGZyb20gYSBsaXZlIHJlY3ljbGVyIHJpbmcuAC0BRW1pdHRlZCBvbmNlIHBlciBhbGlhcyBvbiBldmVyeSB1bmxvYWQgZnJvbSBhIGxpdmUgKG5vdCB5ZXQgYXJjaGl2ZWQpIHJpbmc7lHJlY292ZXJpZXMgZnJvbSBhbiBhcmNoaXZlZCByaW5nIGVtaXRRAVtgRXZlbnQ6OkFyY2hpdmVkUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0YF0gaW5zdGVhZC4gVG9nZXRoZXIsIHRoZXNlIGV2ZW50czUBbGV0IGFuIG9mZmNoYWluIHNlcnZpY2UgcmVjb25zdHJ1Y3QgdGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBjb21taXR0ZWQgdG8gYnkFAVtgRXZlbnQ6OlJlY3ljbGVyQXJjaGl2ZWRgXSwgYW5kIGhlbmNlIGJ1aWxkIHRoZSBwcm9vZnMgbmVlZGVkIGJ55FtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLoRQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aENvaW4MASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQxmZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEkZGVzdHJveWVkRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAIAIxQYWlkVW5sb2FkVG9rZW5SZWdpc3RlcmVkV2l0aE5hdGl2ZQgBDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZUUBAUhOYXRpdmVCYWxhbmNlT2Y8VD4ACQCoUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhFeHRlcm5hbEFzc2V0DAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEMZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAKAHRQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAALAIRMaXRlUGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QADABkUmVjeWNsZXJzVW5sb2FkZWRJbnRvQ29pbhABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEwb3V0cHV0X3ZhbHVlDQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAA0AiFJlY3ljbGVyc1VubG9hZGVkSW50b0V4dGVybmFsQXNzZXQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAOALhSZWN5Y2xlcnNVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0Tm9uQW5vbnltb3VzGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3mVBQEsRmVlQ3VycmVuY3kADwBkUmVjeWNsZXJVbmxvYWRlZEludG9Db2lucwgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMG91dHB1dF9jb3VudDgBDHUzMgAQAHxDb2luT2ZmYm9hcmRlZEludG9FeHRlcm5hbEFzc2V0EAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZQ0EATBEZW5vbWluYXRpb24AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABEAPFJlY3ljbGVyQ2xlYW5lZAwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABPHJlbWFpbmluZ19jb2luczgBDHUzMgASDF0BQSByZWN5Y2xlciByaW5nIHdhcyBjbGVhbmVkLiBgcmVtYWluaW5nX2NvaW5zYCBpcyB0aGUgbnVtYmVyIG9mIG5vdC15ZXQtdW5sb2FkZWQgY29pbnM7UQF3aGVuIG5vbi16ZXJvIHRoZSByaW5nIGlzIGFyY2hpdmVkIChzZWUgW0V2ZW50OjpSZWN5Y2xlckFyY2hpdmVkXSkgYW5kIHRoYXQgdmFsdWUgaXOwcmV0YWluZWQgZm9yIHJlY292ZXJ5IHJhdGhlciB0aGFuIGRlc3Ryb3llZC5AUmVjeWNsZXJBcmNoaXZlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABFHZhbHVlDQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyZWN5Y2xlcl9yb290nQUBME1lbWJlcnNPZjxUPgATHFEBQSBjbGVhbmVkIHJlY3ljbGVyIHJpbmcgd2l0aCByZWNvdmVyYWJsZSBjb2lucyB3YXMgYXJjaGl2ZWQ6IGl0cyBhcmNoaXZhbCBjb21taXRtZW50BQEoc2VlIFtgYXJjaGl2ZV9jb21taXRtZW50YF0pIHdhcyByZWNvcmRlZCBpbiBbUmVjeWNsZXJzQXJjaGl2ZXNdLgBVAVRoZSByaW5nLVZSRiBgcmVjeWNsZXJfcm9vdGAgaXMgZW1pdHRlZCBoZXJlIGJlY2F1c2UgdGhlIHJpbmcgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2VBAWluIHRoZSBzYW1lIG9wZXJhdGlvbjogdGhpcyBldmVudCBpcyB0aGUgbGFzdCBvbi1jaGFpbiBzb3VyY2Ugb2YgdGhlIHJvb3QsIHdoaWNo+G9mZmNoYWluIHNlcnZpY2VzIG11c3QgcmV0YWluIHRvIGJ1aWxkIHRoZSByZWNvdmVyeSBwcm9vZnMgZm9y5FtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLqRBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldCABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUNBAEwRGVub21pbmF0aW9uAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3mVBQEsRmVlQ3VycmVuY3kAARRhbGlhcwgBFEFsaWFzABQEMQFBIGNvaW4gd2FzIHJlY292ZXJlZCBmcm9tIGFuIGFyY2hpdmVkIHJlY3ljbGVyIHJpbmcgaW50byB0aGUgZXh0ZXJuYWwgYXNzZXQuZENvbnN1bWVkRnJlZVRva2Vuc0NsZWFuZWQEARhwZXJpb2Q4ARhQZXJpb2QAFQBoUGFpZFVubG9hZFRva2VuUmluZ0NsZWFuZWQIARhwZXJpb2Q4ARhQZXJpb2QAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4ABYATFJlY3ljbGVyRHVzdENsZWFuZWQAFwBoUGFpZFVubG9hZFRva2VuRHVzdENsZWFuZWQAGACcRXhwaXJlZFBhaWRVbmxvYWRUb2tlbkNvbGxlY3Rpb25EZWxldGVkBAEYcGVyaW9kOAEYUGVyaW9kABkAPEluc3RhbmNlQ3JlYXRlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGFzc2V0X2lkaQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEQbW9kZQ0IATBJbnN0YW5jZU1vZGUAGgTcQSBjb2luYWdlIGluc3RhbmNlIHdhcyBjcmVhdGVkIGZvciBhbiB1bmRlcmx5aW5nIGFzc2V0LiRQb3RGdW5kZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARhmdW5kZXIEATBUOjpBY2NvdW50SWQAASBjdXJyZW5jeWkBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABsE/EEgdHJhY2tlZCBjb250cmlidXRpb24gd2FzIGFkZGVkIHRvIGEgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90LkRQb3RGdW5kc1dpdGhkcmF3bhABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABGGZ1bmRlcgQBMFQ6OkFjY291bnRJZAABIGN1cnJlbmN5aQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AHATsQSBmdW5kZXIgdG9vayBiYWNrIHBhcnQgb2YgdGhlaXIgcmVjb3JkZWQgcG90IGNvbnRyaWJ1dGlvbi5ATG9hZERlcG9zaXRzSGVsZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5aQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABFHByaWNlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB0ERQFgY291bnRgIGxvYWQgZGVwb3NpdHMgb2YgYHByaWNlYCBlYWNoIHdlcmUgdGFrZW4gZnJvbSBhIHNwb25zb3JlZCBpbnN0YW5jZSdzIHBvdC5QTG9hZERlcG9zaXRzUmVsZWFzZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeWkBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAHgQ9AWBjb3VudGAgc2V0dGxlZCBrZXlzIHJlbGVhc2VkIGBhbW91bnRgIG9mIGBjdXJyZW5jeWAgdG8gdGhlIHBvdCdzIGZyZWUgYmFsYW5jZS5UTG9hZERlcG9zaXRzQ29sbGFwc2VkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lpAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEUcHJpY2VFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAHwgRAUV2ZXJ5IGxpdmUgbG9hZCBkZXBvc2l0IG9mIHRoZSBpbnN0YW5jZSB3YXMgcmUtcHJpY2VkIHRvIHRoZSBjdXJyZW50YFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLjxJbnN0YW5jZU1vZGVTZXQIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARBtb2RlDQgBMEluc3RhbmNlTW9kZQAgBKBHb3Zlcm5hbmNlIHN3aXRjaGVkIHRoZSBpbnN0YW5jZSdzIG1vZGUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQgMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldDBJbnN0YW5jZU1vZGUAAQgoU3VmZmljaWVudAAAACRTcG9uc29yZWQAAQAAEQgMdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyGHBhbGxldBRFdmVudAQEVAABGChTdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAAABFxBIHBhcmFjaGFpbiBzdWJzY3JpYmVkLjBVbnN1YnNjcmliZWQEARxwYXJhX2lknAEYUGFyYUlkAAEEZEEgcGFyYWNoYWluIHVuc3Vic2NyaWJlZC4sVXBkYXRlc1NlbnQIARxwYXJhX2lknAEYUGFyYUlkAAEwdXBkYXRlX2NvdW50OAEMdTMyAAIEgFVwZGF0ZSBiYXRjaCBzZW50IHRvIHN1YnNjcmliZXIuQFVwZGF0ZVNlbmRGYWlsZWQEARxwYXJhX2lknAEYUGFyYUlkAAMExFNlbmRpbmcgcmluZyByb290IHVwZGF0ZXMgdG8gYSBzdWJzY3JpYmVyIGZhaWxlZC48UmVwbGF5UmVxdWVzdGVkDAEccGFyYV9pZJwBGFBhcmFJZAABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE0aW5kaWNlc19jb3VudDgBDHUzMgAEBLxSZXBsYXkgb2YgcmluZyByb290cyByZXF1ZXN0ZWQgYnkgYSBzdWJzY3JpYmVyLjhCYXRjaEFiYW5kb25lZAQBIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIABQTMQSBzdHVjayBiYXRjaCB3YXMgYWJhbmRvbmVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQgMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBRFdmVudAQEVAABSDhFdmVudFNjaGVkdWxlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAAAFRTY2hlZHVsZWRFdmVudFJlbW92ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAQA4RXZlbnRDYW5jZWxsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAgBMUmVnaXN0cmF0aW9uU3RhcnRlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAADADxBbGlhc1JlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90GQgBNEJpZ0VuZGlhblUyNTYAAUhwYXJ0aWNpcGFudF9vcmlnaW4dCAFYUmVnaXN0cmF0aW9uRW50cnlPZjxUPgAEAERBY2NvdW50UmVnaXN0ZXJlZAwBIGV2ZW50X2lkCAEcRXZlbnRJZAABEHNsb3QZCAE0QmlnRW5kaWFuVTI1NgABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABQA4U2xvdFJlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90GQgBNEJpZ0VuZGlhblUyNTYAARRlbnRyeR0IAVhSZWdpc3RyYXRpb25FbnRyeU9mPFQ+AAYASFJlZ2lzdHJhdGlvbkNsb3NlZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAcAOERyYXdpbmdXaW5uZXJzCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIACAA8Q2xhaW1pbmdTdGFydGVkCAEgZXZlbnRfaWQIARxFdmVudElkAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIACQA0RXZlbnRDYW5jZWxlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAKADBQcml6ZUNsYWltZWQUASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90GQgBNEJpZ0VuZGlhblUyNTYAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkaQEBMEFzc2V0SWRPZjxUPgABGGFtb3VudEUBAURBc3NldEJhbGFuY2VPZjxUPgALAFRDbGVhcmluZ1JlZ2lzdHJhdGlvbnMIASBldmVudF9pZAgBHEV2ZW50SWQAASR1bmNsYWltZWQ4AQx1MzIADAA8Q2xlYXJpbmdXaW5uZXJzBAEgZXZlbnRfaWQIARxFdmVudElkAA0APEZpbmFsaXppbmdFdmVudAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAOADhFdmVudENvbXBsZXRlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAPADBBc3NldEVuYWJsZWQIASBhc3NldF9pZGkBATBBc3NldElkT2Y8VD4AARhmdW5kZWRFAQFEQXNzZXRCYWxhbmNlT2Y8VD4AEAA0QXNzZXREaXNhYmxlZAgBIGFzc2V0X2lkaQEBMEFzc2V0SWRPZjxUPgABIHJlZnVuZGVkRQEBREFzc2V0QmFsYW5jZU9mPFQ+ABEABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQgMNGluZGl2X3N1cHBvcnQUdXRpbHM0QmlnRW5kaWFuVTI1NgADIAAAAAwEHQFBIFUyNTYgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLh0IDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlc0RSZWdpc3RyYXRpb25FbnRyeQQkQWNjb3VudElkAQQBCBRBbGlhcwQBFGFsaWFzCAEUQWxpYXMAAAAcQWNjb3VudAQBKGFjY291bnRfaWQEASRBY2NvdW50SWQAAQAAIQgMTGluZGl2X3BhbGxldF9ob25vdXIYcGFsbGV0FEV2ZW50BARUAAEMIFZvdGVDYXN0CAEcc3ViamVjdAgBJFN1YmplY3RJZAR4VGhlIHN1YmplY3QgdGhhdCB3YXMgdm90ZWQgb24uASRkaXJlY3Rpb27dBQEkRGlyZWN0aW9uBGhUaGUgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgAE2EEgc3ViamVjdCB3YXMgdm90ZWQgb24gd2l0aCBhIHByZXZpb3VzbHkgdW51c2VkIHBvaW50LihWb3RlUmV1c2VkEAEsb2xkX3N1YmplY3QIASRTdWJqZWN0SWQE2FRoZSBzdWJqZWN0IHRoYXQgcHJldmlvdXNseSBoZWxkIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0b2xkX2RpcmVjdGlvbt0FASREaXJlY3Rpb24EkFRoZSBwcmV2aW91cyBkaXJlY3Rpb24gb2YgdGhlIHBvaW50LgEsbmV3X3N1YmplY3QIASRTdWJqZWN0SWQEwFRoZSBzdWJqZWN0IHRoYXQgbm93IGhvbGRzIHRoZSByZWRpcmVjdGVkIHBvaW50LgE0bmV3X2RpcmVjdGlvbt0FASREaXJlY3Rpb24EeFRoZSBuZXcgZGlyZWN0aW9uIG9mIHRoZSB2b3RlLgEEzEEgcG9pbnQgd2FzIHJlZGlyZWN0ZWQgZnJvbSBvbmUgc3ViamVjdCB0byBhbm90aGVyLjRIb25vdXJDaGFuZ2VkDAEcc3ViamVjdAgBJFN1YmplY3RJZAScVGhlIHN1YmplY3Qgd2hvc2UgaG9ub3VyIHNjb3JlIGNoYW5nZWQuASRvbGRfdmFsdWUlCAEYSG9ub3VyBIxUaGUgaG9ub3VyIHZhbHVlIGJlZm9yZSB0aGUgdXBkYXRlLgEkbmV3X3ZhbHVlJQgBGEhvbm91cgSIVGhlIGhvbm91ciB2YWx1ZSBhZnRlciB0aGUgdXBkYXRlLgIEqFRoZSBob25vdXIgc2NvcmUgb2YgYSBzdWJqZWN0IGhhcyBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCUIAAAFCwApCAxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQURXZlbnQEBFQAARA0RHJhd1NjaGVkdWxlZAgBKGRyYXdfaW5kZXgoAQx1NjQAASBldmVudF9pZAgBHEV2ZW50SWQAAAg5AUEgZHJhdyB3YXMgc2NoZWR1bGVkLiBSZWdpc3RyYXRpb24gYW5kIGNsYWltIGV2ZW50cyBhcmUgZW1pdHRlZCBieSB0aGUgYWlyZHJvcJRpbXBsZW1lbnRhdGlvbiB1bmRlciB0aGlzIGBldmVudF9pZGAuLERyYXdSZW1vdmVkBAEgZXZlbnRfaWQIARxFdmVudElkAAEE4EEgc2NoZWR1bGVkIGRyYXcgd2FzIGFza2VkIHRvIGJlIHJlbW92ZWQgYmVmb3JlIG9wZW5pbmcuNERyYXdDYW5jZWxsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAgSEQSBkcmF3IHdhcyBhc2tlZCB0byBiZSBjYW5jZWxsZWQuPERyYXdTYWx0UmVtb3ZlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAADBMxBIGRyYXcncyBzYWx0IGVudHJ5IHdhcyByZW1vdmVkIGFmdGVyIGl0cyBlbmQgdGltZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQtCAxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEV2ZW50BARUAAEgOFVwZ3JhZGVTdGFydGVkBAEobWlncmF0aW9uczgBDHUzMhDQVGhlIG51bWJlciBvZiBtaWdyYXRpb25zIHRoYXQgdGhpcyB1cGdyYWRlIGNvbnRhaW5zLgBBAVRoaXMgY2FuIGJlIHVzZWQgdG8gZGVzaWduIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yIGluIGNvbWJpbmF0aW9uIHdpdGggY291bnRpbmcgdGhlzGBNaWdyYXRpb25Db21wbGV0ZWRgIGFuZCBgTWlncmF0aW9uU2tpcHBlZGAgZXZlbnRzLgAMaEEgUnVudGltZSB1cGdyYWRlIHN0YXJ0ZWQuAPhJdHMgZW5kIGlzIGluZGljYXRlZCBieSBgVXBncmFkZUNvbXBsZXRlZGAgb3IgYFVwZ3JhZGVGYWlsZWRgLkBVcGdyYWRlQ29tcGxldGVkAAEMmFRoZSBjdXJyZW50IHJ1bnRpbWUgdXBncmFkZSBjb21wbGV0ZWQuAB0BVGhpcyBpbXBsaWVzIHRoYXQgYWxsIG9mIGl0cyBtaWdyYXRpb25zIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYXMgd2VsbC40VXBncmFkZUZhaWxlZAACDFxSdW50aW1lIHVwZ3JhZGUgZmFpbGVkLgDoVGhpcyBpcyB2ZXJ5IGJhZCBhbmQgd2lsbCByZXF1aXJlIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uLkBNaWdyYXRpb25Ta2lwcGVkBAEUaW5kZXg4AQx1MzIEKQFUaGUgaW5kZXggb2YgdGhlIHNraXBwZWQgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgMECQFBIG1pZ3JhdGlvbiB3YXMgc2tpcHBlZCBzaW5jZSBpdCB3YXMgYWxyZWFkeSBleGVjdXRlZCBpbiB0aGUgcGFzdC5ETWlncmF0aW9uQWR2YW5jZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgQEXEEgbWlncmF0aW9uIHByb2dyZXNzZWQuSE1pZ3JhdGlvbkNvbXBsZXRlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBQRYQSBNaWdyYXRpb24gY29tcGxldGVkLjxNaWdyYXRpb25GYWlsZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgYMTEEgTWlncmF0aW9uIGZhaWxlZC4ATQFUaGlzIGltcGxpZXMgdGhhdCB0aGUgd2hvbGUgdXBncmFkZSBmYWlsZWQgYW5kIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHJlcXVpcmVkLjxIaXN0b3JpY0NsZWFyZWQEASxuZXh0X2N1cnNvchUGATxPcHRpb248VmVjPHU4Pj4E6FNob3VsZCBiZSBwYXNzZWQgdG8gYGNsZWFyX2hpc3RvcmljYCBpbiBhIHN1Y2Nlc3NpdmUgY2FsbC4HBMhUaGUgc2V0IG9mIGhpc3RvcmljYWwgbWlncmF0aW9ucyBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEICDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAANQgAAAI8ADkIAAACPQgAPQgAAAQIODgAQQgIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lRQgBRENvdzwnc3RhdGljLCBzdHI+AABFCAQMQ293BARUAUkIAAQASQgAAABJCAAABQIATQgIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uUQEBEGJvb2wAAFEIDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja3ECARhXZWlnaHQAASRtYXhfYmxvY2txAgEYV2VpZ2h0AAEkcGVyX2NsYXNzVQgBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAVQgMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAFZCAAMARhub3JtYWxZCAEEVAABLG9wZXJhdGlvbmFsWQgBBFQAASRtYW5kYXRvcnlZCAEEVAAAWQgMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY3ECARhXZWlnaHQAATRtYXhfZXh0cmluc2ljQQMBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsQQMBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWRBAwE4T3B0aW9uPFdlaWdodD4AAF0IDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXhhCAFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXpl5AEsT3B0aW9uPHUzMj4AAGEIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAAZQgIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAGkICChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWVFCAFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWVFCAFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXNtCAEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AABtCAQMQ293BARUAXEIAAQAcQgAAABxCAAAAnUIAHUIAAAECFkCOAB5CAwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABJDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLkROb3RoaW5nQXV0aG9yaXplZAAHBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAIBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXR9CAwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAgQgQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAYUIAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3OVCAE4VmVjPEV4dHJpbnNpYz4AAIUIEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAXEEFEV4dHJhAYkIAAQAGAAAAIkICHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwGNCAAEAI0IAQRTAACNCAAABCiRCJEGlQaZBp0GoQalBq0GsQa1BgCRCAAABDAQGQYdBikGNQZBBk0GWQZlBnUGgQaNBgCVCAAAAoUIAJkIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOQBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodHECARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleOQBLE9wdGlvbjx1MzI+AAIAAJ0IAAAGxQMAoQgAAAKlCAClCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBPAAMATh1c2VkX2JhbmR3aWR0aKkIATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2i9CAEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFswQgBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AACpCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmetCAGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAK0IBCBCVHJlZU1hcAgESwGcBFYBsQgABAC1CAAAALEIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAALUIAAACuQgAuQgAAAQInLEIAL0IBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAAwQgEGE9wdGlvbgQEVAHFCAEIEE5vbmUAAAAQU29tZQQAxQgAAAEAAMUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAyQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGipCAE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr5AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzBCAGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAM0IBBhPcHRpb24EBFQB0QgBCBBOb25lAAAAEFNvbWUEANEIAAABAADRCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAADVCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0edkIAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHPdCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc90IAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AADZCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAN0IAAAC4QgA4QgAAAQInOUIAOUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZL0IATBPcHRpb248SGFzaD4AAOkIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1z7QgBSEFzeW5jQmFja2luZ1BhcmFtcwAA7QgQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAA8QgIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAD1CAQgQlRyZWVNYXAIBEsBnARWAfEIAAQA+QgAAAD5CAAAAv0IAP0IAAAECJzxCAABCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAAUJAAACCQkACQkIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAA0JCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50cxEJASxWZWM8UGFyYUlkPgAAEQkAAAKcABUJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkJCHRpbmRpdl9wYWxsZXRfcmVsYXlfcmFuZG9tbmVzc0BSYW5kb21uZXNzVmFsdWVzAAAIARRibG9jax0JAVxPcHRpb248UmFuZG9tbmVzc0VudHJ5PgABNG9uZV9lcG9jaF9hZ28dCQFcT3B0aW9uPFJhbmRvbW5lc3NFbnRyeT4AAB0JBBhPcHRpb24EBFQBIQkBCBBOb25lAAAAEFNvbWUEACEJAAABAAAhCQh0aW5kaXZfcGFsbGV0X3JlbGF5X3JhbmRvbW5lc3M8UmFuZG9tbmVzc0VudHJ5AAAIAShyYW5kb21uZXNzCAEgW3U4OyAzMl0AARhtb21lbnQ4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAACUJDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBKQkEUwAABAAxCQEYVmVjPFQ+AAApCQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAUUBAAwBCGlkWQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50RQEBHEJhbGFuY2UAARxyZWFzb25zLQkBHFJlYXNvbnMAAC0JDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAAMQkAAAIpCQA1CQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATkJBFMAAAQAPQkBGFZlYzxUPgAAOQkMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBWQIcQmFsYW5jZQFFAQAIAQhpZFkCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudEUBARxCYWxhbmNlAAA9CQAAAjkJAEEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBRQkEUwAABABJCQEYVmVjPFQ+AABFCRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkATkHHEJhbGFuY2UBRQEACAEIaWQ5BwEISWQAARhhbW91bnRFAQEcQmFsYW5jZQAASQkAAAJFCQBNCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVEJBFMAAAQAVQkBGFZlYzxUPgAAUQkUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEQHEJhbGFuY2UBRQEACAEIaWQQAQhJZAABGGFtb3VudEUBARxCYWxhbmNlAABVCQAAAlEJAFkJDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dCQhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAGEJEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAFlCQAEAGUJAQRUAABlCRg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBRQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50RQEBBEIAAGkJDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRVc2FnZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAgBEHVzZWRFAQEcQmFsYW5jZQABIGF0X2Jsb2NrOAEsQmxvY2tOdW1iZXIAAG0JDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFcnJvcgQEVAABCBxOb1VzYWdlAAAEgFRoZSBvcmlnaW4gaGFzIG5vIHVzYWdlIHRyYWNrZWQuHE5vdFplcm8AAQRYVGhlIHVzYWdlIGlzIG5vdCB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5xCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBRQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBRQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHlFAQEcQmFsYW5jZQABHGRlcG9zaXRFAQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZUUBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudFEBARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c3UJASxBc3NldFN0YXR1cwAAdQkMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAAB5CQAABAhpAQQAfQkMNHBhbGxldF9hc3NldHMUdHlwZXMwQXNzZXRBY2NvdW50EBxCYWxhbmNlAUUBOERlcG9zaXRCYWxhbmNlAUUBFEV4dHJhARAkQWNjb3VudElkAQQAEAEcYmFsYW5jZUUBARxCYWxhbmNlAAEYc3RhdHVzgQkBNEFjY291bnRTdGF0dXMAARhyZWFzb26FCQGoRXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlLCBBY2NvdW50SWQ+AAEUZXh0cmEQARRFeHRyYQAAgQkMNHBhbGxldF9hc3NldHMUdHlwZXM0QWNjb3VudFN0YXR1cwABDBhMaXF1aWQAAAAYRnJvemVuAAEAHEJsb2NrZWQAAgAAhQkMNHBhbGxldF9hc3NldHMUdHlwZXM8RXhpc3RlbmNlUmVhc29uCBxCYWxhbmNlAUUBJEFjY291bnRJZAEEARQgQ29uc3VtZXIAAAAoU3VmZmljaWVudAABACxEZXBvc2l0SGVsZAQARQEBHEJhbGFuY2UAAgA8RGVwb3NpdFJlZnVuZGVkAAMALERlcG9zaXRGcm9tCAAEASRBY2NvdW50SWQAAEUBARxCYWxhbmNlAAQAAIkJAAAEDGkBBAQAjQkMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBRQE4RGVwb3NpdEJhbGFuY2UBRQEACAEYYW1vdW50RQEBHEJhbGFuY2UAARxkZXBvc2l0RQEBOERlcG9zaXRCYWxhbmNlAACRCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFFATRCb3VuZGVkU3RyaW5nAZUJABQBHGRlcG9zaXRFAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1llQkBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2yVCQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5RAQEQYm9vbAAAlQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACZCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunQkEGE9wdGlvbgQEVAFxCQEIEE5vbmUAAAAQU29tZQQAcQkAAAEAAKEJBBhPcHRpb24EBFQBkQkBCBBOb25lAAAAEFNvbWUEAJEJAAABAAClCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6pCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQkMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uFHR5cGVzIFBvb2xJbmZvBCxQb29sQXNzZXRJZAE4AAQBIGxwX3Rva2VuOAEsUG9vbEFzc2V0SWQAALEJCDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAFkCARxbdTg7IDhdAAC1CQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrkJBBhSZXN1bHQIBFQBvQkERQG1CQEICE9rBAC9CQAAAAAMRXJyBAC1CQAAAQAAvQkAAAQIRQFFAQDBCQAABAg4BADFCQAABAw4BAQAyQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0JDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAFUBARhWZWM8VD4AANEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QkEUwAABADZCQEYVmVjPFQ+AADVCQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQFFAQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0RQEBHEJhbGFuY2UAANkJAAAC1QkA3QkMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QkAAALlCQDlCQAABAgE1QEA6QkAAALtCQDtCQAABAg48QkA8QkMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQA9QkBHFBlcmJpbGwAAPUJDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAPkJAAAECP0JGAD9CQwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAAEKDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuBQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZAQRTAAAEAAkKARhWZWM8VD4AAAkKAAAC2QEADQoISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAEQoAAAQIDQo4ABUKDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAGQoBLEJUcmVlU2V0PFQ+AAAZCgQgQlRyZWVTZXQEBFQBnAAEABEJAAAAHQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEhCgRTAAAEAC0KARhWZWM8VD4AACEKCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlJQoBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0UQEBEGJvb2wAASxmaXJzdF9pbmRleMUDAQx1MTYAAShsYXN0X2luZGV4xQMBDHUxNgABFGZsYWdzKQoBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAAlCghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAAApCghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAALQoAAAIhCgAxCgAABAicxQMANQoMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA5CghkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAAA9CgxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BCgwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVy5QEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllckUKAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5SQoBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2lu5QEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlUQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZVEKAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAARQoEGE9wdGlvbgQEVAHlAQEIEE5vbmUAAAAQU29tZQQA5QEAAAEAAEkKBBhPcHRpb24EBFQBTQoBCBBOb25lAAAAEFNvbWUEAE0KAAABAABNCgAABAgMDABRCggMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBABhAgEwdjM6OlJlc3BvbnNlAAMACFY0BADRAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAAdAwEwdjU6OlJlc3BvbnNlAAUAAFUKAAAECDjlAQBZCgAABAwocQI4AF0KDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBYQoEUwAABABlCgEYVmVjPFQ+AABhCgAABAjlATgAZQoAAAJhCgBpCgwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBAAVBgE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAG0KAAAEDDgEqQMAcQoMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudEUBARB1MTI4AAEUb3duZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnN1CgHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAdQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF5CgRTAAAEAH0KARhWZWM8VD4AAHkKAAAECBBFAQB9CgAAAnkKAIEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQoEUwAABACJCgEYVmVjPFQ+AACFCgAABAhFAeUBAIkKAAAChQoAjQoIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AZEKDE1BWAGVCgAIASBhbGlhc2Vyc5kKAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXSRCgEYVGlja2V0AACRChA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZSBEaXNhYmxlZAAAAACVCgwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAAmQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdCgRTAAAEAKEKARhWZWM8VD4AAJ0KDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbuUBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyea0DASxPcHRpb248dTY0PgAAoQoAAAKdCgClCgwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yqQoBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkKDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAK0KCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BuQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnOxCgGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAALEKBBhPcHRpb24EBFQBtQoBCBBOb25lAAAAEFNvbWUEALUKAAABAAC1CghQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgG5AwAIARBwcmV2uQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0uQMBNE1lc3NhZ2VPcmlnaW4AALkKAAAECLkDOAC9CghQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwwQoBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAwQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADFCgxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LskKDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0KAAAECAQIANEKCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQFFASRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW4xBAFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXRFAQEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc9UKAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAA1QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAVQEBGFZlYzxUPgAA2QoMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dCgwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0LuEKAAAECOUKRQEA5QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpCgRTAAAEAO0KARhWZWM8VD4AAOkKCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBQQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGVBBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAA7QoAAALpCgDxCgAABAj1CkUBAPUKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB+QoEUwAABAD9CgEYVmVjPFQ+AAD5CggwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAE8LEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaDwBEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAA/QoAAAL5CgABCwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuBQsMTGluZGl2X3BhbGxldF9wZW9wbGUUdHlwZXMwUGVyc29uUmVjb3JkCBhNZW1iZXIBCCRBY2NvdW50SWQBBAAIAQxrZXkIARhNZW1iZXIAARxhY2NvdW50NQEBRE9wdGlvbjxBY2NvdW50SWQ+AAAJCwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXJyb3IEBFQAAZQkTm90UGVyc29uAAAE0FRoZSBzdXBwbGllZCBpZGVudGlmaWVyIGRvZXMgbm90IHJlcHJlc2VudCBhIHBlcnNvbi4UTm9LZXkAAQScVGhlIGdpdmVuIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBrZXkuOEludmFsaWRDb250ZXh0AAIEKQFUaGUgY29udGV4dCBpcyBub3QgYSBtZW1iZXIgb2YgdGhvc2UgYWxsb3dlZCB0byBoYXZlIGFjY291bnQgYWxpYXNlcyBoZWxkLjhJbnZhbGlkQWNjb3VudAADBGRUaGUgYWNjb3VudCBpcyBub3Qga25vd24uMEFjY291bnRJblVzZQAEBMhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZSB1bmRlciBhbm90aGVyIGFsaWFzLjBJbnZhbGlkUHJvb2YABQRUVGhlIHByb29mIGlzIGludmFsaWQuQEludmFsaWRTaWduYXR1cmUABgRkVGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkLiROb01lbWJlcnMABwTQVGhlcmUgYXJlIG5vdCB5ZXQgYW55IG1lbWJlcnMgb2Ygb3VyIHBlcnNvbmhvb2Qgc2V0LihJbmNvbXBsZXRlAAgEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLihTdGlsbEZyZXNoAAkEYFRoZSByb290IGlzIHN0aWxsIGZyZXNoLjhUb29NYW55TWVtYmVycwAKBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQALBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBwZXJzb24uLEtleU5vdEZvdW5kAAwEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAA0EkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLhxTYW1lS2V5AA4ElFRoZSByZWNvcmQgaXMgYWxyZWFkeSB1c2luZyB0aGlzIGtleS5UUGVyc29uYWxJZE5vdFJlc2VydmVkAA8EdFBlcnNvbmFsIElkIHdhcyBub3QgcmVzZXJ2ZWQugFBlcnNvbmFsSWRSZXNlcnZhdGlvbkNhbm5vdFJlbmV3ABAEkFBlcnNvbmFsIElkIGhhcyBuZXZlciBiZWVuIHJlc2VydmVkLpBQZXJzb25hbElkTm90UmVzZXJ2ZWRPck5vdFJlY29nbml6ZWQAEQTcUGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZCBvciBub3QgYWxyZWFkeSByZWNvZ25pemVkLixJbnZhbGlkUmluZwASBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwATBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQAFATUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zABUEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ETm9NdXRhdGlvblNlc3Npb24AFgQ1AUFuIG11dGF0aW5nIGFjdGlvbiB3YXMgcXVldWVkIHdoZW4gdGhlcmUgd2FzIG5vIG11dGF0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3MucENvdWxkTm90U3RhcnRNdXRhdGlvblNlc3Npb24AFwSkQW4gbXV0YXRpbmcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5sU3VzcGVuc2lvblNlc3Npb25JblByb2dyZXNzABgE9ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHN1c3BlbnNpb24gc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy40QWxpYXNOb3RTdGFsZQAZBHxUaGUgYWxpYXMgbWFwcGluZyBpcyBub3Qgc3RhbGUuOFRpbWVPdXRPZlJhbmdlABoEeENhbGwgaXMgdG9vIGxhdGUgb3IgdG9vIGVhcmx5LlhBbGlhc0FjY291bnRBbHJlYWR5U2V0ABsEwEFsaWFzIDwtPiBBY2NvdW50IGlzIGFscmVhZHkgc2V0IGFuZCB1cCB0byBkYXRlLjBOb3RTdXNwZW5kZWQAHATQUGVyc29uaG9vZCBjYW5ub3QgYmUgcmVzdW1lZCBpZiBpdCBpcyBub3Qgc3VzcGVuZGVkLiRTdXNwZW5kZWQAHQRgUGVyc29uaG9vZCBpcyBzdXNwZW5kZWQuTEludmFsaWRLZXlNaWdyYXRpb24AHgSoSW52YWxpZCBzdGF0ZSBmb3IgYXR0ZW1wdGVkIGtleSBtaWdyYXRpb24uTEtleUFscmVhZHlTdXNwZW5kZWQAHwhVAUludmFsaWQgc3VzcGVuc2lvbiBvZiBhIGtleSBiZWxvbmdpbmcgdG8gYSBwZXJzb24gd2hvc2UgaW5kZXggaW4gdGhlIHJpbmcgaGFzIGFscmVhZHm4YmVlbiBpbmNsdWRlZCBpbiB0aGUgcGVuZGluZyBzdXNwZW5zaW9ucyBsaXN0LlRJbnZhbGlkT25ib2FyZGluZ1NpemUAIAToVGhlIG9uYm9hcmRpbmcgc2l6ZSBtdXN0IG5vdCBleGNlZWQgdGhlIG1heGltdW0gcmluZyBzaXplLkBJbnZhbGlkTWVtYmVyS2V5ACEErFRoZSBtZW1iZXIga2V5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIGNyeXB0by50UGVvcGxlQ29sbGVjdGlvbkFscmVhZHlFeGlzdHMAIgS8VGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC40QWxpYXNNaXNtYXRjaAAjBBkBVGhlIHByb3ZpZGVkIGFsaWFzIGRvZXMgbm90IG1hdGNoIHRoZSBhY2NvdW50J3MgY3VycmVudCBhbGlhcyBtYXBwaW5nLjhOb1N0YWxlQWxpYXNlcwAkBKBOb25lIG9mIHRoZSBzdXBwbGllZCBhbGlhc2VzIHdlcmUgc3RhbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0JE1vYkNyZWRpdAQcQmFsYW5jZQFFAQAQARR2b3RlZDgBDHUzMgABHGNsZWFuZWQ4AQx1MzIAARxjb3JyZWN0OAEMdTMyAAEYY3JlZGl0RQEBHEJhbGFuY2UAABELAAAECDgIABULDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0IE9wZW5DYXNlBCxSdW50aW1lQ2FsbAEgAAwBFHNpbmNlKAFAU2Vjc1NpbmNlR2VuZXNpcwABHGRldGFpbHMZCwFgQ2FzZURldGFpbHM8UnVudGltZUNhbGw+AAEUdGFsbHktCwEkVm90ZVRhbGx5AAAZCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCxDYXNlRGV0YWlscwQsUnVudGltZUNhbGwBIAAMASRzdGF0ZW1lbnQdCwEkU3RhdGVtZW50AAEcY29udGV4dHgBQEp1ZGdlbWVudENvbnRleHQAASBjYWxsYmFjaykLAfxDYWxsYmFjazwoQ2FzZUluZGV4LCBKdWRnZW1lbnRDb250ZXh0LCBKdWRnZW1lbnQpLCBSdW50aW1lQ2FsbD4AAB0LEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5JFN0YXRlbWVudAABDChQcm9vZk9mSW5rDAEYZGVzaWduIQsBVHByb29mX29mX2luazo6SW5rU3BlYwABIGV2aWRlbmNlCAEwRXZpZGVuY2VIYXNoAAFMcHJvYmFibGVfYWNjZXB0YWJsZVEBARBib29sAAAASElkZW50aXR5Q3JlZGVudGlhbAgBIHBsYXRmb3JtJQsBQGlkZW50aXR5OjpTb2NpYWwAASBldmlkZW5jZTEFAThpZGVudGl0eTo6RGF0YQABADRVc2VybmFtZVZhbGlkBAEgdXNlcm5hbWUxBQE4aWRlbnRpdHk6OkRhdGEAAgAAIQsUNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwcHJvb2Zfb2ZfaW5rHElua1NwZWMAARBARGVzaWduZWRFbGVjdGl2ZQgAxQMBLEZhbWlseUluZGV4AADFAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQIAMUDASxGYW1pbHlJbmRleAAACAEkQWNjb3VudElkAAEASFByb2NlZHVyYWxQZXJzb25hbAgAxQMBLEZhbWlseUluZGV4AAAoAShQZXJzb25hbElkAAIAKFByb2NlZHVyYWwIAMUDASxGYW1pbHlJbmRleAAAcAE4UHJvY2VkdXJhbFNlZWQAAwAAJQsUNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgaWRlbnRpdHkYU29jaWFsAAEMHFR3aXR0ZXIEASB1c2VybmFtZTEFARBEYXRhAAAAGEdpdGh1YgQBIHVzZXJuYW1lMQUBEERhdGEAAQAcRGlzY29yZAQBPGRpc3BsYXlfYW5kX3RhZzEFARBEYXRhAAIAACkLEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IENhbGxiYWNrCBhQYXJhbXMALFJ1bnRpbWVDYWxsAAAIATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAALQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQkVm90ZVRhbGx5AAAMAQxheWU4AQx1MzIAAQxuYXk4AQx1MzIAASBjb250ZW1wdDgBDHUzMgAAMQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgUmlwZUNhc2UELFJ1bnRpbWVDYWxsASAACAEcZGV0YWlscxkLAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARx2ZXJkaWN0WQQBJEp1ZGdlbWVudAAANQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgRG9uZUNhc2UAAAgBFHNpbmNlKAFAU2Vjc1NpbmNlR2VuZXNpcwABHHZlcmRpY3RZBAEkSnVkZ2VtZW50AAA5CwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldEhDcmVkaXREaXN0cmlidXRpb24IHEJhbGFuY2UBRQEsQmxvY2tOdW1iZXIBOAAUARRyb3VuZDgBKFJvdW5kSW5kZXgAATxpbml0aWFsX2JhbGFuY2VFAQEcQmFsYW5jZQABRHJlbWFpbmluZ19iYWxhbmNlRQEBHEJhbGFuY2UAATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQAARRzdGFydDgBLEJsb2NrTnVtYmVyAAA9CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUELBFMAAAQARQsBGFZlYzxUPgAAQQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQ4UGF5b3V0U2NoZWR1bGUIHEJhbGFuY2UBRQEsQmxvY2tOdW1iZXIBOAAMASRyZW1haW5pbmc4AShSb3VuZEluZGV4AAFAYW1vdW50X3Blcl9yb3VuZEUBARxCYWxhbmNlAAEYcGVyaW9kOAEsQmxvY2tOdW1iZXIAAEULAAACQQsASQsMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJjZW50AAAEAAwBCHU4AABNCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBRFcnJvcgQEVAABVChOb1N1Y2hDYXNlAAAEYFRoZSBjYXNlIGRvZXMgbm90IGV4aXN0LihOb1N1Y2hWb3RlAAEEYFRoZSB2b3RlIGRvZXMgbm90IGV4aXN0LhxOb3RPcGVuAAIEVFRoZSBjYXNlIGlzIG5vdCBvcGVuLhxOb3RSaXBlAAMEVFRoZSBjYXNlIGlzIG5vdCByaXBlLhxOb3REb25lAAQEZFRoZSBjYXNlIGlzIG5vdCB5ZXQgZG9uZS4oQ29kZWNFcnJvcgAFBFUBVGhlIGRlY29kZSBvZiB0aGUgY2FsbCBmYWlsZWQuIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPzREaXNwYXRjaEVycm9yAAYETQFUaGUgY2FsbCBmYWlsZWQgdG8gZGlzcGF0Y2guIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPxhSZWNlbnQABwSQVGhlIGNhc2UgaXMgdG9vIHJlY2VudCB0byBiZSByZWFwZWQuIE5vQ3JlZGl0AAgEoE5vdCBlbm91Z2ggY3JlZGl0IHRvIHBheW91dCB0aGUgcmV3YXJkcy4gTm9SZXdhcmQACQTUTm8gbW9iIGNyZWRpdCBkaXN0cmlidXRpb24gaW4gcGxhY2UgdG8gcmV3YXJkIHZvdGVycy4gTm9Qb2ludHMACgSgTm8gcG9pbnRzIHRvIGJlIGNvbnZlcnRlZCB0byBtb2IgY3JlZGl0LjRUb29NYW55Q2xhaW1zAAsEVFRvbyBtYW55IHZvdGUgY2xhaW1zLiBOb1BheW91dAAMBFhObyBwYXlvdXQgaW4gcHJvZ3Jlc3MuSEFyaXRobWV0aWNPdmVyZmxvdwANBLRUaGUgcG9pbnQgYW5kL29yIGNyZWRpdCBhcml0aG1ldGljIG92ZXJmbG93cy5AVG9vTWFueVNjaGVkdWxlcwAOBIBUb28gbWFueSBwYXlvdXQgcm91bmQgc2NoZWR1bGVzLihOb1NjaGVkdWxlAA8EfE5vIHBheW91dCByb3VuZCBzY2hlZHVsZSBmb3VuZC4kTm9QZW5hbHR5ABAEWE5vIHZvdGUgcGVuYWx0eSBmb3VuZC4URWFybHkAEQSUVGhlIHZvdGUgcGVuYWx0eSBoYXMgbm90IGV4cGlyZWQgeWV0LjBVbmRlclBlbmFsdHkAEgToVGhlIHZvdGUgY2Fubm90IGJlIGNhc3QgZHVlIHRvIGEgdm90aW5nIHBlbmFsdHkgaW4gZWZmZWN0LlhDYXNlRXhwaXJhdGlvbkRpc2FibGVkABMEHQFUaGUgb3BlbiBjYXNlIGV4cGlyYXRpb24gaXMgZGlzYWJsZWQgZHVlIHRvIGluc3VmZmljaWVudCBhY3RpdmUgdm90ZXJzLlBDYWxsYmFja1dlaWdodFRvb0xvdwAUCEUBVGhlIGRpc3BhdGNoZWQgY2FsbGJhY2sncyB3ZWlnaHQgZXhjZWVkcyB0aGUgZGVjbGFyZWQgYG1heF9jYWxsYmFja193ZWlnaHRgIHVwcGVyGGJvdW5kLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5RCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQkQ2FuZGlkYXRlECxKdWRnZW1lbnRJZAE4HERlcG9zaXQBVQssQmxvY2tOdW1iZXIBOCRBY2NvdW50SWQBBAEMHEFwcGxpZWQMARBjcmVkWQsBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AARxlbnRyb3B5CAEcRW50cm9weQABNGVudHJvcHlfc2luY2U4ASxCbG9ja051bWJlcgAAACBTZWxlY3RlZCABFHNpbmNlOAEsQmxvY2tOdW1iZXIAARBjcmVkWQsBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAARxlbnRyb3B5CAEcRW50cm9weQABGGRlc2lnbiELARxJbmtTcGVjAAEoYWxsb2NhdGlvbl0LAShBbGxvY2F0aW9uAAEcanVkZ2luZ+QBTE9wdGlvbjxKdWRnZW1lbnRJZD4AARhmYWlsZWQ4ARxDb3VudGVyAAEAGFByb3ZlbhABGGRlc2lnbiELARxJbmtTcGVjAAEgcmVzZXJ2ZWQoAShQZXJzb25hbElkAAEwd2FzX3JlZmVycmVkUQEBEGJvb2wAASx3YXNfaW52aXRlZFEBARBib29sAAIAAFULFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAABZCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQsQ3JlZGliaWxpdHkMHERlcG9zaXQBVQsoUGVyc29uYWxJZAEoJEFjY291bnRJZAEEAQwgUmVmZXJyZWQEACgBKFBlcnNvbmFsSWQAAAAcRGVwb3NpdAQAVQsBHERlcG9zaXQAAQAcSW52aXRlZAQABAEkQWNjb3VudElkAAIAAF0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChBbGxvY2F0aW9uAAEMHEluaXRpYWwAAAAgSW5pdERvbmUAAQAQRnVsbAACAABhCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQYUGVyc29uBDxCb3VuZGVkQWNjb3VudHMBZQsAJAEYZGVzaWduaQsBPE9wdGlvbjxJbmtTcGVjPgABQGFjdGl2ZV9yZWZlcnJhbHNlCwE8Qm91bmRlZEFjY291bnRzAAFgYWxsb3dlZF9yZWZlcnJhbF90aWNrZXRzOAEcQ291bnRlcgABNGJhZF9yZWZlcnJhbHM4ARxDb3VudGVyAAFQc3VjY2Vzc2Z1bF9yZWZlcnJhbHM4ARxDb3VudGVyAAEkcmVmZXJyYWxzOAEcQ291bnRlcgABLGRlcml2YXRpdmVzOAEcQ291bnRlcgABGGJhbm5lZFEBARBib29sAAFgcGVuZGluZ19yZWZlcnJhbF9yZXdhcmRzOAEcQ291bnRlcgAAZQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAVQEBGFZlYzxUPgAAaQsEGE9wdGlvbgQEVAEhCwEIEE5vbmUAAAAQU29tZQQAIQsAAAEAAG0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBcQsEUwAABAB1CwEYVmVjPFQ+AABxCwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQ4UmVmZXJyYWxUaWNrZXQEGFRpY2tldAEEAAQBGHRpY2tldAQBGFRpY2tldAAAdQsAAAJxCwB5CwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQYRmFtaWx5AAAIARBraW5keQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAB9CwAABAjFA8UDAIELDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDBEZXNpZ25TdGF0dXMAAQggUmVzZXJ2ZWQAAAAkQ29tbWl0dGVkAAEAAIULAAAECAQEAIkLDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBRFcnJvcgQEVAABoChJblByb2dyZXNzAAAEzEFjY291bnQgaXMgYWxyZWFkeSBhcHBseWluZyB0byBtYWtlIGEgcHJvb2Ytb2YtaW5rLihOb1JlZmVycmFsAAEEeEFjY291bnQgaGFzIG5vdCBiZWVuIHJlZmVycmVkLihCYWRDb250ZXh0AAIE6FRoZSBjYWxsYmFjayBjb250ZXh0IGlzIGludmFsaWQ7IHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi5MVW5leHBlY3RlZEp1ZGdlbWVudAADBCEBVGhlIGluY29taW5nIGp1ZGdlbWVudCBJRCBpcyBub3Qgd2hhdCB3ZSB3ZXJlIGV4cGVjdGluZyBmb3IgdGhlIGFjY291bnQuGE5vQXJncwAEBLhObyBhcmd1bWVudHMgd2VyZSBzdXBwbGllZCB3aXRoIHRoZSBqdWRnZW1lbnQuKE5vdEFwcGxpZWQABQTMVGhlIGFjY291bnQgaGFzIG5vdCBhcHBsaWVkIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuLE5vdFNlbGVjdGVkAAYEsFRoZSBjYW5kaWRhdGUgaGFzIG5vdCBjb21taXR0ZWQgdG8gYSBkZXNpZ24uJE5vdFByb3ZlbgAHBKxUaGUgY2FuZGlkYXRlIGRpZCBub3QgcHJvdmUgdGhlbXNlbHZlcyB5ZXQuOEFscmVhZHlTdGFydGVkAAgEyFRoZSBjYW5kaWRhdGUgaGFzIGFscmVhZHkgc3RhcnRlZCB0aGVpciBqdWRnZW1lbnQuKE91dE9mUmFuZ2UACQSAVGhlIHBlcnNvbmFsIElEIGlzIG5vdCBpbiByYW5nZS4wQWxyZWFkeVRha2VuAAoEnFRoZSBwZXJzb25hbCBJRCBoYXMgYWxyZWFkeSBiZWVuIHRha2VuLjxOb01vcmVSZWZlcnJhbHMACwS4VGhlIHBlcnNvbiBoYXMgbm8gbW9yZSByZWZlcnJhbHMgbGVmdCB0byBnaXZlLiBUb29FYXJseQAMBGBUaGUgcmVyb2xsIGlzIHRvbyBlYXJseS40RGVzaWduSW52YWxpZAANBKBUaGUgcmVmZXJyZXIncyBkZXNpZ24gaXMgbm90IHByb2NlZHVyYWwuLERlc2lnblRha2VuAA4EnFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBhbHJlYWR5IHRha2VuLiRCYWRQYXJlbnQADwQVAVRoZSByZWZlcnJlciBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHBlcnNvbi4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiRCYWRGYW1pbHkAEASAVGhlIGRlc2lnbiBmYW1pbHkgZG9lc24ndCBleGlzdC4sV3JvbmdGYW1pbHkAEQS0VGhlIGRlc2lnbiBmYW1pbHkgaXMgaW52YWxpZCBmb3IgdGhpcyBjaG9pY2UuLEluZGV4VG9vQmlnABIEQQFUaGUgaW5kZXggb2YgdGhlIGRlc2lnbiBvciB2YXJpYW50IGlzIGJleW9uZCB0aGUgYWxsb3dlZCBtYXhpbXVtIGZvciB0aGUgZmFtaWx5LhBCdXN5ABME+FRoZSBzeXN0ZW0gaXMgYnVzeSB3aXRoIHRvbyBtYW55IGNvbW1pdG1lbnRzOyB0cnkgYWdhaW4gbGF0ZXIuGEJhbm5lZAAUBKhUaGUgcGVyc29uIGhhcyBiZWVuIGJhbm5lZCBmcm9tIHJlZmVycmluZy4oSW1wcm9iYWJsZQAVBCUBVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGRlbW9uc3RyYXRlZCBwcm9iYWJseSB0aHJvdWdoIHRoZSBpbml0aWFsIGV2aWRlbmNlLihJZFJlc2VydmVkABYEwFRoZSBwZXJzb25hbCBpZGVudGl0eSBoYXMgYWxyZWFkeSBiZWVuIHJlc2VydmVkLhhJZFVzZWQAFwToVGhlIHBlcnNvbmFsIGlkZW50aXR5IGlzIGFscmVhZHkgdGFrZW4gYnkgYSBwcm92ZW4gcGVyc29uLjRJbnZhbGlkVGlja2V0ABgEfFRoZSB0aWNrZXQgcHJvdmlkZWQgaXMgaW52YWxpZC4gTm9UaWNrZXQAGQTwVGhlIGNhbGxlciBoYXMgbm90IHByb3ZpZGVkIGEgcmVmZXJyYWwgb3IgaW52aXRhdGlvbiB0aWNrZXQuNE5vdEF1dGhvcml6ZWQAGgSkVGhlIGFjY291bnQgaXMgbm90IGF1dGhvcml6ZWQgdG8gZG8gdGhpcy4kTm90UGVyc29uABsEkFRoZSBwZXJzb25hbCBpZGVudGl0eSBkb2Vzbid0IGV4aXN0LkRSZWZlcnJlZENhbmRpZGF0ZQAcBF0BVGhlIGNhbmRpZGF0ZSBpcyByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBub3QgYmUgcmVmZXJyZWQuUE5vdFJlZmVycmVkQ2FuZGlkYXRlAB0EXQFUaGUgY2FuZGlkYXRlIGlzIG5vdCByZWZlcnJlZC4gQnV0IHRoZSBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIGNhbmRpZGF0ZSB0byBiZSByZWZlcnJlZC5ITm9SZXdhcmRUb1JlZ2lzdGVyAB4EoFRoZXJlIGlzIG5vIHJlZmVycmFsIHJld2FyZCB0byByZWdpc3Rlci5AUmV3YXJkVG9SZWdpc3RlcgAfBAUBVGhlcmUgaXMgYSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZCB0aGF0IG11c3QgYmUgcmVnaXN0ZXJlZCBmaXJzdC4kTm9JbnZpdGVyACAERE5vIGludml0ZXIgZm91bmQuQEludmFsaWRTaWduYXR1cmUAIQRISW52YWxpZCBzaWduYXR1cmUuJE5vSW52aXRlcwAiBFBObyBpbnZpdGUgYXZhaWxhYmxlLjhBbHJlYWR5SW52aXRlZAAjBFhJbnZpdGUgaXMgYWxyZWFkeSBzZXQuKE5vUmVmZXJyZXIAJAR0VGhlIHJlZmVycmVyIGlzIG5vdCBhIHBlcnNvbi4wTm90UG9pUGVyc29uACUE6FRoZSBpbmRpdmlkdWFsIGlzIG5vdCBhIHBlcnNvbiByZWNvZ25pemVkIGJ5IHByb29mIG9mIGluay5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAJgSIVGhlIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLmhJbnZhbGlkUmVpbWJ1cnNlbWVudFZhbHVlcwAnBJRUaGUgcmVpbWJ1cnNlbWVudCB2YWx1ZXMgYXJlIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lo0LDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhBcmNoaXZlZFBsYXllcgQsQmxvY2tOdW1iZXIBOAEIIEtpY2thYmxlCAEoZmlyc3RfZ2FtZTgBHEdhbWVJZHgAAThhcmNoaXZlZF9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAKFVua2lja2FibGUEAShmaXJzdF9nYW1lOAEcR2FtZUlkeAABAACRCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMYUGxheWVyBCxQbGF5RGVwb3NpdAGVCwAkAShmaXJzdF9nYW1lOAEcR2FtZUlkeAABKHJlZ2lzdGVyZWRRAQEQYm9vbAABLHNlbnRfcmVwb3J0UQEBEGJvb2wAAWhlYXJseV9hdHRlbmRhbmNlX2VuYWN0bWVudJkLAYBPcHRpb248RWFybHlBdHRlbmRhbmNlRW5hY3RtZW50PgABKHllc19wZXJzb24MAQh1OAABNG5vX25vdF9wZXJzb24MAQh1OAABYGV4cGVjdGVkX21heF92b3RlX3dlaWdodMUDAQx1MTYAASx2b3RlX3dlaWdodAwBCHU4AAEsY3JlZGliaWxpdHmlCwF4UGxheWVyQ3JlZGliaWxpdHk8UGxheURlcG9zaXQ+AACVCxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABFAQEoRjo6QmFsYW5jZQAAmQsEGE9wdGlvbgQEVAGdCwEIEE5vbmUAAAAQU29tZQQAnQsAAAEAAJ0LDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc2BFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQAAAgBKGF0dGVuZGFuY2VRAQEQYm9vbAABLGRpc3Bvc2l0aW9uoQsBRFBsYXllckRpc3Bvc2l0aW9uAAChCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyRGlzcG9zaXRpb24AAQwQS2VlcAAAADxBcmNoaXZlS2lja2FibGUAAQBEQXJjaGl2ZVVua2lja2FibGUAAgAApQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllckNyZWRpYmlsaXR5BCxQbGF5RGVwb3NpdAGVCwEMHEludml0ZWQAAAAoUmVjb2duaXplZAABABxEZXBvc2l0BACVCwEsUGxheURlcG9zaXQAAgAAqQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzIEdhbWVJbmZvBCRBY2NvdW50SWQBBAAoARRpbmRleDgBHEdhbWVJZHgAAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABQHNodWZmbGVfZGVhZGxpbmU4AQx1MzIAASRnYW1lX2RhdGU4AQx1MzIAASxyZXBvcnRfZW5kczgBDHUzMgABFHN0YXRlrQsBUEdhbWVTdGF0ZTxBY2NvdW50SWQ+AAE4bWF4X2dyb3VwX3NpemU4AQx1MzIAARhyb3VuZHMMAQh1OAABSHBlbmRpbmdfYXR0ZW5kYW5jZTgBDHUzMgABSGFpcmRyb3BzX3NjaGVkdWxlZAwBCHU4AACtCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMkR2FtZVN0YXRlBCRBY2NvdW50SWQBBAEUMFJlZ2lzdHJhdGlvbgQBRG5leHRfcGxheWVyX2luZGV4OAEsUGxheWVySW5kZXgAAAAcU2h1ZmZsZQQBEHN0ZXCxCwFYU2h1ZmZsZVN0ZXA8QWNjb3VudElkPgABACRSZXBvcnRpbmcEATBwbGF5ZXJfY291bnQ4AQx1MzIAAgA0UGxheWVyUHJvY2VzcwQBEHN0ZXC9CwFwUGxheWVyUHJvY2Vzc1N0ZXA8QWNjb3VudElkPgADAChDYW5jZWxsaW5nBAEQc3RlcMELAWRDYW5jZWxsaW5nU3RlcDxBY2NvdW50SWQ+AAQAALELDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyxTaHVmZmxlU3RlcAQkQWNjb3VudElkAQQBECxTdGVwMUluc2VydAQBOGxhc3RfaXRlcmF0aW9utQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AAAA0U3RlcDJSZXRyaWV2ZQgBRG5leHRfcGxheWVyX2luZGV4OAEsUGxheWVySW5kZXgAARRwaGFzZbkLAVBTaHVmZmxlUmV0cmlldmVQaGFzZQABAExTdGVwM0NvbXB1dGVXZWlnaHRzDAE4bGFzdF9pdGVyYXRpb261CwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgABMHBsYXllcl9jb3VudDgBDHUzMgABQHJlY29nbml6ZWRfY291bnQ4AQx1MzIAAgBEU3RlcDRBd2FpdFNlc3Npb24EATBwbGF5ZXJfY291bnQ4AQx1MzIAAwAAtQsEGE9wdGlvbgQEVAEJBQEIEE5vbmUAAAAQU29tZQQACQUAAAEAALkLDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc1BTaHVmZmxlUmV0cmlldmVQaGFzZQABCChSZWNvZ25pemVkAAAANE5vdFJlY29nbml6ZWQEAUByZWNvZ25pemVkX2NvdW50OAEMdTMyAAEAAL0LDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0RQbGF5ZXJQcm9jZXNzU3RlcAQkQWNjb3VudElkAQQBCExTdGVwMVByb2Nlc3NQbGF5ZXJzCAE4bGFzdF9pdGVyYXRpb261CwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgABMHBsYXllcl9jb3VudDgBDHUzMgAAAERTdGVwMkNsZWFySW5kaWNlcwABAADBCwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXM4Q2FuY2VsbGluZ1N0ZXAEJEFjY291bnRJZAEEAQhEU3RlcDFEcmFpblNodWZmbGUAAABEU3RlcDJEcmFpblBsYXllcnMEAThsYXN0X2l0ZXJhdGlvbrULAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEAAMULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAMkLAAAECAw4AM0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AANELAAAECAwIANULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBwQQEUwAABAC9BAEYVmVjPFQ+AADZCwAAAxsAAAAMAN0LDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQURXJyb3IEBFQAAYQsR2FtZU9uZ29pbmcAAAQ0R2FtZSBvbmdvaW5nLjhOb1JlZ2lzdHJhdGlvbgABBHhObyByZWdpc3RyYXRpb24gcGhhc2Ugb25nb2luZy5ET3V0ZGF0ZWRHYW1lU2V0dXAAAgRYVGhlIHNldHVwIGlzIG91dGRhdGVkLkBJbnZhbGlkR2FtZVNldHVwAAMEOEludmFsaWQgc2V0dXAuNEludmFsaWRSZXBvcnQABAQ8SW52YWxpZCByZXBvcnQuGE5vR2FtZQAFBEBObyBnYW1lIG9uZ29pbmcuLE5vUmVwb3J0aW5nAAYEYE5vIHJlcG9ydCBwaGFzZSBvbmdvaW5nLjROb3RSZWdpc3RlcmVkAAcEPE5vdCByZWdpc3RlcmVkLkRBbHJlYWR5UmVnaXN0ZXJlZAAIBGhQbGF5ZXIgYWxyZWFkeSByZWdpc3RlcmVkLkRSZXBvcnRBbHJlYWR5U2VudAAJBFBSZXBvcnQgYWxyZWFkeSBzZW50LhRFYXJseQAKBGxPcGVyYXRpb24gaXMgbm90IHZhbGlkIHlldC5ETm90S2lja2FibGVQbGF5ZXIACwSYVGhlIG9wZXJhdGlvbiBleHBlY3QgYSBwbGF5ZXIgYWNjb3VudC5ATm9BcmNoaXZlZFBsYXllcgAMBGRObyBhcmNoaXZlZCBwbGF5ZXIgZm91bmQuIE5vVGlja2V0AA0EQE5vIHRpY2tldCBmb3VuZC4kTm9JbnZpdGVzAA4EUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkAA8EWEludml0ZSBpcyBhbHJlYWR5IHNldC5ATm90QWNjb3VudFBsYXllcgAQBPhOb3QgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIsIGV4cGVjdGVkIGFuIGFjY291bnQgYmFzZWQgcGxheWVyLmhVc2VJbnZpdGVCdXRBbHJlYWR5UGxheWluZwARBMhUaGUgcGxheWVyIGNhbid0IHVzZSBhbiBpbnZpdGUgaWYgYWxyZWFkeSBwbGF5aW5nLlRBbm90aGVyQWNjb3VudEludml0ZWQAEgRNAVRoZSBsaXRlIHBlcnNvbiBhbHJlYWR5IGludml0ZWQgYW5vdGhlciBhY2NvdW50LCBhbmQgaW52aXRlcyBvbmx5IG9uZSBhY2NvdW50IGV2ZXIuUFRvb01hbnlHYW1lU2NoZWR1bGVzABMEQQFUaGUgbnVtYmVyIG9mIGV4aXN0aW5nIHNjaGVkdWxlcyBhbmQgbmV3IHNjaGVkdWxlcyBleGNlZWRzIHRoZSBjb25maWd1cmVkIGxpbWl0LkxOb1N1Y2hHYW1lU2NoZWR1bGVkABQEKQFUaGUgZ2FtZSB0aGF0IHdhcyBzdXBwb3NlZCB0byBiZSByZW1vdmVkIHdhcyBub3QgZm91bmQgaW4gc2NoZWR1bGVkIGdhbWVzLoBJbnZhbGlkU3RhdGVtZW50QWNjb3VudFNpZ25hdHVyZQAVBKxUaGUgc3RhdGVtZW50IGFjY291bnQgc2lnbmF0dXJlIGlzIGludmFsaWQucFN0YXRlbWVudEFjY291bnRBbHJlYWR5SW5Vc2UAFgTsVGhlIHN0YXRlbWVudCBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlZCBieSBhbm90aGVyIHBsYXllci5kSW50ZXJuYWxFcnJvckludmFsaWRTdGF0ZQAXBHRJbnRlcm5hbCBlcnJvciBpbnZhbGlkIHN0YXRlLkBJbnZhbGlkR2FtZVN0YXRlABgE8FRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBpbiB0aGUgY3VycmVudCBnYW1lIHN0YXRlLiBOb1BsYXllcgAZBEBObyBwbGF5ZXIgZm91bmQukENhbm5vdE9mZmJvYXJkV2hpbGVSZWdpc3RlcmVkRm9yR2FtZQAaBNxUaGUgcGxheWVyIGNhbm5vdCBvZmZib2FyZCB3aGlsZSByZWdpc3RlcmVkIGZvciBhIGdhbWUuMEludmFsaWRTdGF0ZQAbBDRJbnZhbGlkIHN0YXRlSEludmFsaWRQbGF5RGVwb3NpdAAcBORgc2V0X3BsYXlfZGVwb3NpdGA6IHRoZSBzdXBwbGllZCBhbW91bnQgbXVzdCBiZSBub24temVyby6ISW52YWxpZEFpcmRyb3BWcmZWYXJpYW50Rm9yQWNjb3VudAAdAJhJbnZhbGlkQWlyZHJvcFZyZlZhcmlhbnRGb3JSZWNvZ25pdGlvbgAeAFhJbnZhbGlkQWlyZHJvcFZyZkNvdW50AB8IRQFUaGUgbnVtYmVyIG9mIHN1cHBsaWVkIGFpcmRyb3AgVlJGIGVudHJpZXMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzY2hlZHVsZWQ8YWlyZHJvcCBldmVudHMuVE5vdEVsaWdpYmxlRm9yQWlyZHJvcAAgCFUBYGNsYWltX2FpcmRyb3BgOiB0aGUgY2xhaW1hbnQgaXMgbm90IHJlY29nbml6ZWQgaW4gcGFsbGV0LXNjb3JlLCBvciB0aGVpciBtb3N0IHJlY2VudPRhdHRlbmRlZCBnYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBgZ2FtZV9pbmRleGAgb2YgdGhlIGFpcmRyb3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuELDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBRQEAJAEUc2NvcmUMAQh1OAABGHN0cmVha+ULARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3RvcnnpCwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXRFAQEcQmFsYW5jZQABKGNhc2hlZF9vdXRRAQEQYm9vbAABSHJlYWNoZWRfcGVyc29uaG9vZFEBARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kUQEBEGJvb2wAASxyZWNvZ25pdGlvbu0LASxSZWNvZ25pdGlvbgABSGxhc3RfYXR0ZW5kZWRfZ2FtZeQBLE9wdGlvbjx1MzI+AADlCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQADAEIdTgAAAAYQWJzZW50BAAMAQh1OAABAADpCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzREF0dGVuZGFuY2VIaXN0b3J5AAAEAAwBCHU4AADtCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzLFJlY29nbml0aW9uAAEQUEV4dGVybmFsbHlSZWNvZ25pemVkAAAANE5vdFJlY29nbml6ZWQAAQAkU3VzcGVuZGVkBAAoAShQZXJzb25hbElkAAIAKFJlY29nbml6ZWQEACgBKFBlcnNvbmFsSWQAAwAA8QsAAAQIOAkFAPULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUm91bmRQYXlvdXQEHEJhbGFuY2UBRQEAEAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABLHBvaW50X3ByaWNlRQEBHEJhbGFuY2UAASRyZW1haW5kZXJFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50czgBDHUzMgAA+QsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyRSb3VuZEluZm8ILEJsb2NrTnVtYmVyATgcQmFsYW5jZQFFAQAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdEUBARxCYWxhbmNlAAD9CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEMBFMAAAQABQwBGFZlYzxUPgAAAQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlczhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBDHUzMgABQGFtb3VudF9wZXJfcm91bmRFAQEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAAAUMAAACAQwACQwMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAWwkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5gQWJzZW5jZVNjaGVkdWxlTm90U29ydGVkABQEMQFBYnNlbmNlLWdyYWNlIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuXFBlcnNvbmhvb2RTY2hlZHVsZUVtcHR5ABUEBQFUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB0aWVyLnBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRaZXJvABYE3EEgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBoYXMgYHNjb3JlX3RocmVzaG9sZCA9PSAwYC6AUGVyc29uaG9vZFNjb3JlVGhyZXNob2xkVG9vTGFyZ2UAFwT8QSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGV4Y2VlZHMgYE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAubFBlcnNvbmhvb2RTY2hlZHVsZU5vdFNvcnRlZAAYCNhQZXJzb25ob29kLXRocmVzaG9sZCB0aWVycyBtdXN0IGJlIHNvcnRlZCBieSBhc2NlbmRpbmdwYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLnhQZXJzb25ob29kU2NoZWR1bGVOb3RNb25vdG9uaWMAGQgRAVBlcnNvbmhvb2QtdGhyZXNob2xkIGBzY29yZV90aHJlc2hvbGRgIHZhbHVlcyBtdXN0IGJlIG5vbi1kZWNyZWFzaW5n9GFjcm9zcyB0aWVycyAoYSBsYXJnZXIgcG9wdWxhdGlvbiBtdXN0IG5vdCBoYXZlIGEgbG93ZXIgYmFyKS5oUGVyc29uaG9vZFNjaGVkdWxlTm90VG90YWwAGgj0VGhlIGxhc3QgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBtdXN0IGNvdmVyIGFsbCBwb3B1bGF0aW9uc6goYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuDQwMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlczhBd2FyZGVkQ3JlZGl0cwAABABFAQEQdTEyOAAAEQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEVDARTAAAEABkMARhWZWM8VD4AABUMDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNMTmZ0Q2xhaW1DcmVkaXRBd2FyZAQkQWNjb3VudElkAQQACAEgY2xhaW1hbnQJBQFoQWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4AARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAAAGQwAAAIVDAAdDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABhBAEYVmVjPFQ+AAAhDAxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzWE5mdENsYWltQ3JlZGl0Um9vdEluZm8AAAgBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAEkdGltZXN0YW1wOAEMdTMyAAAlDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASkMBFMAAAQALQwBGFZlYzxUPgAAKQwAAAQIKDgALQwAAAIpDAAxDAxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzGHBhbGxldBRFcnJvcgQEVAABHEBOb0Jsb2Nrc1RvUmVwbGF5AAAE/EEgY3JlZGl0IHRyZWUgcmVwbGF5IHdhcyByZXF1ZXN0ZWQgZm9yIGFuIGVtcHR5IGxpc3Qgb2YgYmxvY2tzLlBVbnNvcnRlZFJlcGxheUJsb2NrcwABBORUaGUgYmxvY2tzIHRvIHJlcGxheSBhcmUgbm90IGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlci5QTm9DcmVkaXRUcmVlRm9yQmxvY2sAAgS8Tm9uZSBvZiB0aGUgYmxvY2tzIHRvIHJlcGxheSBoYXMgYSBjcmVkaXQgdHJlZS5wRXhjZWVkc0NsYWltc0NoYW5uZWxDYXBhY2l0eQADCEkBVGhlIHJlcGxheSBkb2VzIG5vdCBmaXQgd2hhdCB0aGUgSFJNUCBjaGFubmVsIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIGNhbiBjYXJyeSBpbjBvbmUgbWVzc2FnZS5MQ3JlZGl0VHJlZVhjbUZhaWxlZAAEBAUBU2VuZGluZyB0aGUgY3JlZGl0IHRyZWVzIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIG92ZXIgWENNIGZhaWxlZC5UQ3JlZGl0U2xvdE91dE9mQm91bmRzAAUIVQFUaGUgcm91bmQgaXMgbm90IGJlbG93IGBNYXhSb3VuZHNgLCBvciB0aGUgYXR0ZXN0ZXIgc2xvdCBpcyBub3QgYmVsb3cgYE1heEdyb3VwU2l6ZWAsuHNvIHRoZSB0d28gbmFtZSBhIGNyZWRpdCBzbG90IG5vIGdhbWUgY2FuIHVzZS5AQ3JlZGl0Tm90QXdhcmRlZAAGCFUBTm8gY3JlZGl0IHdhcyBhd2FyZGVkOiB0aGUgY2xhaW1hbnQgYWxyZWFkeSBob2xkcyB0aGUgc2xvdCdzIGNyZWRpdCBmb3IgdGhhdCBnYW1lLCBvcqB0aGUgYmxvY2sgaGFzIG5vIHJvb20gZm9yIGFub3RoZXIgYXdhcmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjUMDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBhSZWNvcmQEDEtleQEIAAgBDGtleQgBDEtleQABJHN1c3BlbmRlZFEBARBib29sAAA5DAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXJyb3IEBFQAARAkTm90UGVyc29uAAAE3FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSByZWNvZ25pemVkIHBlcnNvbi4wTm90U3VzcGVuZGVkAAEE2FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzdXNwZW5kZWQgcGVyc29uLixOb3RSZXNlcnZlZAACBORUaGUgcGVyc29uYWwgSUQgaXMgbm90IHJlc2VydmVkIGFuZCBhd2FpdGluZyByZWNvZ25pdGlvbi40VG9vTWFueVBlb3BsZQADBMBUaGUgb3BlcmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtYW55IHBlb3BsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlczhMaXRlUGVyc29uSW5mbwgYTWVtYmVyAQgYTWV0aG9kAUEMAAgBMHJpbmdfdnJmX2tleQgBGE1lbWJlcgABGG1ldGhvZEEMARhNZXRob2QAAEEMDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXNEUmVjb2duaXRpb25NZXRob2QEHEFjY291bnQBBAEIMFVuaXF1ZURldmljZQQABAEcQWNjb3VudAAAAAxGZWUAAQAARQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAATBYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC6ISW52YWxpZENvbnN1bWVyUmVnaXN0cmF0aW9uQWNjb3VudAALBPxUaGUgY29uc3VtZXIgcmVnaXN0cmF0aW9uIGFjY291bnQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuSQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleXUEAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWU1BQFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWUxBQEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eU0MASxDcmVkaWJpbGl0eQAATQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkUQEBEGJvb2wAAQAAUQwAAAQIVQwIAFUMDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcuWQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNcU3RtdFN0b3JlQWxsb3dhbmNlRW50cnkEBFQAAAwBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQxzZXE4AQx1MzIAARRzaW5jZSgBDHU2NAAAXQwAAAQIBGEMAGEMAAAEDFUMOAgAZQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNgTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAASRyZWZlcmVuY2VBBQFUTm90aWZpY2F0aW9uUmVmZXJlbmNlAABpDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAW0MBFMAAAQAcQwBGFZlYzxUPgAAbQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNUUmVzZXJ2YXRpb25RdWV1ZUVudHJ5BBxBY2NvdW50AQQACAEcYWNjb3VudAQBHEFjY291bnQAASRqb2luZWRfYXQoAQx1NjQAAHEMAAACbQwAdQwISHNwX3N0YXRlbWVudF9zdG9yZUhTdGF0ZW1lbnRBbGxvd2FuY2UAAAgBJG1heF9jb3VudDgBDHUzMgABIG1heF9zaXplOAEMdTMyAAB5DAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQURXJyb3IEBFQAAWA8SW52YWxpZFVzZXJuYW1lAAAEnFVzZXJuYW1lIGRvZXMgbm90IGZpdCB0aGUgcmVxdWlyZW1lbnRzLjRVc2VybmFtZVRha2VuAAEEaFVzZXJuYW1lIGlzIGFscmVhZHkgdGFrZW4uREFscmVhZHlSZWdpc3RlcmVkAAIEfENvbnN1bWVyIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAwScUHJvdmlkZWQgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuNE5vdFJlZ2lzdGVyZWQABAScUGVyc29uIGlzIG5vdCByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuNE5vdEZ1bGxQZXJzb24ABQR4Q29uc3VtZXIgaXMgbm90IGEgZnVsbCBwZXJzb24uNFRvdWNoTm90UmVhZHkABgTMQXR0ZW1wdGVkIHRvIHVwZGF0ZSBwZXJzb24gYXV0aG9yaXphdGlvbiB0b28gZWFybHkuNE5vUmVzZXJ2YXRpb24ABwRoUmVzZXJ2YXRpb24gaXMgbm90IGFjdGl2ZS5QTm90UmVzZXJ2YXRpb25Ib2xkZXIACAQVAVRoZSBsaW5rZWQgbGl0ZSBpZGVudGl0eSBpcyBub3QgdGhlIGFjdGl2ZSBob2xkZXIgb2YgdGhlIHJlc2VydmF0aW9uLmBVc2VybmFtZVJlc2VydmF0aW9uVGFrZW4ACQTkVGhlIHVzZXJuYW1lIGluIHRoZSByZXNlcnZhdGlvbiByZXF1ZXN0IGlzIGFscmVhZHkgdGFrZW4uQFJlc2VydmF0aW9uRnJlc2gACgSAVGhlIHJlc2VydmF0aW9uIGhhcyBub3QgZXhwaXJlZC5ATm9MaW5rZWRJZGVudGl0eQALBJxUaGVyZSBpcyBubyBsaXRlIGNvbnN1bWVyIHRvIGJlIGxpbmtlZC40QWxyZWFkeUxpbmtlZAAMBPhUaGUgbGl0ZSBjb25zdW1lciBpcyBhbHJlYWR5IGxpbmtlZCB0byBhIGZ1bGwgcGVyc29uIGNvbnN1bWVyLlBQZXJzb25BdXRoTm90RXhwaXJlZAANBLxUaGUgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBoYXMgbm90IGV4cGlyZWQgeWV0LjhBbHJlYWR5RGVtb3RlZAAOBJBUaGUgcGVyc29uIGhhcyBhbHJlYWR5IGJlZW4gZGVtb3RlZC4kUXVldWVGdWxsAA8EgFF1ZXVlIGZvciB0aGlzIHVzZXJuYW1lIGlzIGZ1bGwuKE5vdEluUXVldWUAEAS4QWNjb3VudCBpcyBub3QgaW4gdGhlIHF1ZXVlIGZvciB0aGlzIHVzZXJuYW1lLlRBbHJlYWR5SGFzUmVzZXJ2YXRpb24AEQTcQWNjb3VudCBhbHJlYWR5IGhhcyBhIHJlc2VydmF0aW9uIGZvciBhbm90aGVyIHVzZXJuYW1lLmxJbnZhbGlkTm90aWZpY2F0aW9uU2VxdWVuY2UAEgTITm90aWZpY2F0aW9uIHNlcXVlbmNlIGlzIGludmFsaWQgZm9yIHRoZSBjb25zdW1lci5kSW52YWxpZE5vdGlmaWNhdGlvblBlcmlvZAATBOROb3RpZmljYXRpb24gcGVyaW9kIGlzIG91dHNpZGUgdGhlIGFjY2VwdGVkIGNsYWltIHdpbmRvdy6ITm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uTm90RXhwaXJlZAAUBLROb3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGlzIG5vdCBleHBpcmVkIHlldC6UTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uQWxyZWFkeUV4aXN0cwAVBPxOb3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgYWxpYXMvY29udGV4dC5wU3RtdFN0b3JlUmVwbGFjZW1lbnRUb29FYXJseQAWBBkBVGhlIHJlcGxhY2VtZW50IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBzaW5jZSB0aGUgZW50cnkgd2FzIGxhc3Qgc2V0LoxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRFeGNlZWRlZAAXBOxUaGUgcHJvdmlkZWQgYGxpbWl0YCBleGNlZWRzIGBMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59DAAABAhJBTgAgQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFDARTAAAEAI0MARhWZWM8VD4AAIUMDGxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXIYcGFsbGV0OFVuY2hlY2tlZENodW5rBARUAAAEAIkMASBUOjpDaHVuawAAiQwMKHZlcmlmaWFibGUQcmluZyxTdGF0aWNDaHVuawADYAAAAAwAjQwAAAKFDACRDAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBRFcnJvcgQEVAABDDRDaHVua05vdEZvdW5kAAAEoFRoZSByZXF1ZXN0ZWQgY2h1bmsgaW5kZXggZG9lc24ndCBleGlzdC40SW52YWxpZENodW5rcwABBLBUaGUgcHJvdmlkZWQgY2h1bmsgZGF0YSBjb3VsZG4ndCBiZSBkZWNvZGVkLkRJbnZhbGlkQ2h1bmtSYW5nZQACBNxUaGUgc3RhcnQgaW5kZXggaXNuJ3Qgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgaW5kZXguBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpUMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlczhDb2xsZWN0aW9uSW5mbwgcQWNjb3VudAEEIExvY2F0aW9uAWkBABABFG93bmVymQwBiENvbGxlY3Rpb25Pd25lcjxBY2NvdW50LCBMb2NhdGlvbj4AARBtb2RlnQwBIFJpbmdNb2RlAAEkcmluZ19zaXplSQUBMFJpbmdFeHBvbmVudAABUHNlbGZfaW5jbHVzaW9uX2RlbGF5rQMBLE9wdGlvbjx1NjQ+AACZDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM8Q29sbGVjdGlvbk93bmVyCBxBY2NvdW50AQQgTG9jYXRpb24BaQEBCCBFeHRlcm5hbAQAaQEBIExvY2F0aW9uAAAAFExvY2FsBAAEARxBY2NvdW50AAEAAJ0MEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5IFJpbmdNb2RlAAEIKEFwcGVuZE9ubHkAAAAgRmxleGlibGUAAQAAoQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQASQQBGFZlYzxUPgAApQwAAAQICDgAqQwMUGluZGl2X3BhbGxldF9tZW1iZXJzFHR5cGVzIFJpbmdSb290BARUAAAMARByb290nQUBME1lbWJlcnNPZjxUPgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABMGludGVybWVkaWF0Za0MAURJbnRlcm1lZGlhdGVPZjxUPgAArQwMKHZlcmlmaWFibGUQcmluZyhNZW1iZXJzU2V0AANQAwAADACxDAAABAwIOFUMALUMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcxxPbGRSb290BARUAAAIARByb290nQUBME1lbWJlcnNPZjxUPgABLGFyY2hpdmVkX2F0KAEMdTY0AAC5DAAABAwIODgAvQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQASQQBGFZlYzxUPgAAwQwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkoUmluZ1N0YXR1cwAADAEUdG90YWw4AQx1MzIAASBpbmNsdWRlZDgBDHUzMgABPGltbXV0YWJsZV9zaW5jZa0DASxPcHRpb248dTY0PgAAxQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAYQQBGFZlYzxUPgAAyQwAAAQICAgAzQwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwUmluZ1Bvc2l0aW9uAAEMKE9uYm9hcmRpbmcIAShxdWV1ZV9wYWdlOAEkUGFnZUluZGV4AAEkcXVldWVkX2F0KAEMdTY0AAAAIEluY2x1ZGVkDAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABJHJpbmdfcGFnZTgBJFBhZ2VJbmRleAABNHJpbmdfcG9zaXRpb244AQx1MzIAAQAkU3VzcGVuZGVkAAIAANEMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNZW1iZXJzU3RhdGUAAAQBEG1vZGXVDAFAUmluZ011dGF0aW9uTW9kZQAA1QwQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlAUmluZ011dGF0aW9uTW9kZQABCChBcHBlbmRPbmx5AAAAIE11dGF0aW5nBAAMAQh1OAABAADZDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABJBAEYVmVjPFQ+AADdDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEVycm9yBARUAAFwJE5vdE1lbWJlcgAABNBUaGUgc3VwcGxpZWQgaWRlbnRpZmllciBkb2VzIG5vdCByZXByZXNlbnQgYSBtZW1iZXIuGE5vUm9vdAABBERSaW5nIGhhcyBubyByb290LjBJbnZhbGlkUHJvb2YAAgRUVGhlIHByb29mIGlzIGludmFsaWQuKEluY29tcGxldGUAAwQFAVRoZSByb290IGNhbm5vdCBiZSBmaW5hbGl6ZWQgYXMgdGhlcmUgYXJlIHN0aWxsIHVucHVzaGVkIG1lbWJlcnMuOFRvb01hbnlNZW1iZXJzAAQEiFRvbyBtYW55IG1lbWJlcnMgaGF2ZSBiZWVuIHB1c2hlZC48S2V5QWxyZWFkeUluVXNlAAUElEtleSBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIG1lbWJlci4sS2V5Tm90Rm91bmQABgSgVGhlIG9sZCBrZXkgd2FzIG5vdCBmb3VuZCB3aGVuIGV4cGVjdGVkLjBDb3VsZE5vdFB1c2gABwSQQ291bGQgbm90IHB1c2ggbWVtYmVyIGludG8gdGhlIHJpbmcuLEludmFsaWRSaW5nAAgErFJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIHRoZSB0b3AgcmluZy5IU3VzcGVuc2lvbnNQZW5kaW5nAAkE5FJpbmcgY2Fubm90IGJlIGJ1aWx0IHdoaWxlIHRoZXJlIGFyZSBzdXNwZW5zaW9ucyBwZW5kaW5nLlxSaW5nQWJvdmVNZXJnZVRocmVzaG9sZAAKBNRSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyBub3QgYmVsb3cgMS8yIGNhcGFjaXR5LkhJbnZhbGlkU3VzcGVuc2lvbnMACwSgU3VzcGVuc2lvbiBpbmRpY2VzIHByb3ZpZGVkIGFyZSBpbnZhbGlkLkBOb1JlbW92YWxTZXNzaW9uAAwELQFBIG11dGF0aW5nIGFjdGlvbiB3YXMgcXVldWVkIHdoZW4gdGhlcmUgd2FzIG5vIHJlbW92YWwgc2Vzc2lvbiBpbiBwcm9ncmVzcy5sQ291bGROb3RTdGFydFJlbW92YWxTZXNzaW9uAA0EnEEgcmVtb3ZhbCBzZXNzaW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkLmBSZW1vdmFsU2Vzc2lvbkluUHJvZ3Jlc3MADgToQ2Fubm90IG1lcmdlIHJpbmdzIHdoaWxlIGEgcmVtb3ZhbCBzZXNzaW9uIGlzIGluIHByb2dyZXNzLkxLZXlBbHJlYWR5U3VzcGVuZGVkAA8IVQFJbnZhbGlkIHN1c3BlbnNpb24gb2YgYSBrZXkgYmVsb25naW5nIHRvIGEgbWVtYmVyIHdob3NlIGluZGV4IGluIHRoZSByaW5nIGhhcyBhbHJlYWR5uGJlZW4gaW5jbHVkZWQgaW4gdGhlIHBlbmRpbmcgc3VzcGVuc2lvbnMgbGlzdC5USW52YWxpZE9uYm9hcmRpbmdTaXplABAE6FRoZSBvbmJvYXJkaW5nIHNpemUgbXVzdCBub3QgZXhjZWVkIHRoZSBtYXhpbXVtIHJpbmcgc2l6ZS5ASW52YWxpZE1lbWJlcktleQARBKxUaGUgbWVtYmVyIGtleSBpcyBub3QgdmFsaWQgZm9yIHRoZSBjcnlwdG8uSENvbGxlY3Rpb25Ob3RGb3VuZAASBHhUaGUgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdC5cQ29sbGVjdGlvbkFscmVhZHlFeGlzdHMAEwR4VGhlIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlzdHMuSFRvb01hbnlDb2xsZWN0aW9ucwAUBJBUb28gbWFueSBjb2xsZWN0aW9ucyBmb3IgdGhpcyBvd25lci5oSW52YWxpZFJpbmdTaXplRm9yRmxleGlibGUAFQQRAUZsZXhpYmxlIGNvbGxlY3Rpb25zIG11c3QgdXNlIHRoZSBNYXhGbGV4aWJsZVJpbmdFeHBvbmVudCByaW5nIHNpemUuTEludmFsaWRSaW5nRXhwb25lbnQAFgSMVGhlIHJpbmcgZXhwb25lbnQgaXMgbm90IHN1cHBvcnRlZC5MUHJlbWF0dXJlT25ib2FyZGluZwAXBLRJbnN1ZmZpY2llbnQgbWVtYmVycyBpbiB0aGUgcXVldWUgdG8gb25ib2FyZC5sQ29sbGVjdGlvbk1hcmtlZEZvckRlbGV0aW9uABgE9FRoZSBjb2xsZWN0aW9uIGlzIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGNhbm5vdCBiZSBtb2RpZmllZC5ITm90Q29sbGVjdGlvbk93bmVyABkEuFRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgY29sbGVjdGlvbi40Tm90T25ib2FyZGluZwAaBKhUaGUgbWVtYmVyIGlzIG5vdCBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZS44Tm90aGluZ1RvQnVpbGQAGwR8VGhlcmUgaXMgbm8gcmluZyByb290IHRvIGJ1aWxkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7hDAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0IExvY2tJbmZvAAAIARhyZWFzb27lDAEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AADlDAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAA6QwAAAQIOA0EAO0MAAAEEDgNBDgIAPEMDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQoQWxpYXNTdGF0ZQABCBhMb2NrZWQEAOEMASBMb2NrSW5mbwAAACBVbmxvYWRlZAABAAD1DAAABAw4DQQ4APkMDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXRAQXJjaGl2ZWRSZWN5Y2xlcgAACAEoY29tbWl0bWVudDwBEEgyNTYAASRyZW1haW5pbmc4AQx1MzIAAP0MDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQ4SW5zdGFuY2VSZWNvcmQEBFQAABgBIGFzc2V0X2lkaQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEQbW9kZQ0IATBJbnN0YW5jZU1vZGUAAVBjdXJyZW50X2xvYWRfZGVwb3NpdAENAQUBT3B0aW9uPERlcG9zaXRUaWVyPEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPiwgRnVuZ2libGVzQmFsYW5jZU9mPFQ+Pj4AAUBvbGRfbG9hZF9kZXBvc2l0AQ0BBQFPcHRpb248RGVwb3NpdFRpZXI8RnVuZ2libGVzQXNzZXRJZE9mPFQ+LCBGdW5naWJsZXNCYWxhbmNlT2Y8VD4+PgABHGNyZWF0b3IJDQHIT3B0aW9uPChUOjpBY2NvdW50SWQsIFQ6Okluc3RhbmNlQ3JlYXRpb25EZXBvc2l0KT4AAAENBBhPcHRpb24EBFQBBQ0BCBBOb25lAAAAEFNvbWUEAAUNAAABAAAFDQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0LERlcG9zaXRUaWVyCBxBc3NldElkAWkBHEJhbGFuY2UBRQEADAEgYXNzZXRfaWRpAQEcQXNzZXRJZAABFHByaWNlRQEBHEJhbGFuY2UAARRjb3VudDgBDHUzMgAACQ0EGE9wdGlvbgQEVAENDQEIEE5vbmUAAAAQU29tZQQADQ0AAAEAAA0NAAAECAQRDQARDRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABFAQEoRjo6QmFsYW5jZQAAFQ0AAAQIaQE4ABkNAAAEDDgEaQEAHQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABwFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFAEhEZW5vbWluYXRpb25Ub29CaWcABgBQRGVub21pbmF0aW9uVG9vU21hbGwABwBIQ29pbkFtb3VudEJlbG93RmVlAAgAWERlbm9taW5hdGlvbk91dE9mQm91bmQACQBsTG9zc3lEZW5vbWluYXRpb25Db252ZXJzaW9uAAoIOQFUaGUgZGVub21pbmF0aW9uIGNhbm5vdCBiZSBsb3NzbGVzc2x5IGNvbnZlcnRlZCB0byBhbiBhc3NldCBhbW91bnQgYmVjYXVzZSB0aGX8aW5zdGFuY2UncyBgYXNzZXRfdW5pdGAgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgYDJefHZhbHVlfGAuREludmFsaWRBbGlhc1Byb29mAAsATE5vVW5sb2FkaW5nUmVjeWNsZXIADABUUHJvb2ZBbmRBbGlhc01pc21hdGNoAA0AOE5vdGhpbmdUb0J1aWxkAA4AMFRvb01hbnlSaW5ncwAPAFRBZGRyZXNzQWxyZWFkeUhhc0NvaW4AEABcSW52YWxpZFByb29mT2ZPd25lcnNoaXAAEQAsRW1wdHlJbnB1dHMAEgBAUmVjeWNsZXJNaXNtYXRjaAATBAkBVGhlIGZlZSByZWN5Y2xlciBpbiB0aGUgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSBjYWxsJ3MgcmVjeWNsZXIuYEluc3VmZmljaWVudFVubG9hZEZvckZlZQAUBLxUaGUgdG90YWwgdW5sb2FkZWQgYW1vdW50IGlzIGxlc3MgdGhhbiB0aGUgZmVlLkRBbGlhc05vdFByZW1hcmtlZAAVBDkBVGhlIGZpcnN0IGFsaWFzIHdhcyBub3QgcHJlLW1hcmtlZCBieSBleHRlbnNpb24gKHJlcXVpcmVkIGZvciBGcm9tT3V0cHV0IGZlZSkuXEludmFsaWRSZWN5Y2xlclJldmlzaW9uABYESQFUaGUgcmVjeWNsZXIgcmV2aXNpb24gZG9lcyBub3QgbWF0Y2ggKHJlY3ljbGVyIG1heSBub3QgZXhpc3Qgb3IgaGFzIGJlZW4gcmVidWlsdCkuMEludmFsaWRTcGxpdAAXAGhDYW5ub3RDb252ZXJ0QXNzZXRUb05hdGl2ZQAYBBkBVGhlIGFzc2V0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5IHRvIHBheSB0aGUgZmVlLlhBbGlhc1RlbXBvcmFyaWx5TG9ja2VkABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoIWQFbYENhbGw6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5zYF0gd2l0aCBbYFVubG9hZEZlZTo6UHJlcGFpZGBdIHJlcXVpcmVzIGBtYXhfZmVlYCB0bxRiZSAwLkhNYXhGZWVFeGNlZWRzSW5wdXQAGwSoVGhlIG1heF9mZWUgZXhjZWVkcyB0aGUgdG90YWwgaW5wdXQgdmFsdWUuNEludmFsaWRNYXhGZWUAHATYVGhlIG1heCBmZWUgYXJndW1lbnQgZG9lc24ndCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuMFVua25vd25Bc3NldAAdBAEBVGhlIHVuZGVybHlpbmcgYXNzZXQgaWQgZG9lcyBub3QgZXhpc3QgaW4gW2BDb25maWc6OkZ1bmdpYmxlc2BdLkBJbnN0YW5jZU5vdEZvdW5kAB4E4E5vIGNvaW5hZ2UgaW5zdGFuY2UgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gW2BJbnN0YW5jZUlkYF0uQEludmFsaWRBc3NldFVuaXQAHwgFAVRoZSBhc3NldCB1bml0IGlzIHplcm8sIG9yIGNhbm5vdCByZXByZXNlbnQgZXZlcnkgZGVub21pbmF0aW9uIGlu4GBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYCB3aXRob3V0IHRydW5jYXRpb24uYEFyY2hpdmVkUmVjeWNsZXJOb3RGb3VuZAAgBEUBTm8gYXJjaGl2ZWQgcmVjeWNsZXIgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gYChpbnN0YW5jZSwgZGVub21pbmF0aW9uLCByaW5nIGluZGV4KWAuUEludmFsaWRBcmNoaXZlZFJvb3RzACEINQFUaGUgc3VwcGxpZWQgYHJlY3ljbGVyX3Jvb3RgL2B1bmxvYWRlZF9yb290YCBkbyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBhcmNoaXZhbCxjb21taXRtZW50LkxJbnZhbGlkUmluZ0V4cG9uZW50ACIEHQFUaGUgcmVjeWNsZXIgcmluZyBleHBvbmVudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHRoZSBjcnlwdG8gY29uZmlnLnhBbGlhc1dhc1VubG9hZGVkT3JJbnZhbGlkUHJvb2YAIwQ9AVRoZSBhbGlhcyB3YXMgYWxyZWFkeSB1bmxvYWRlZCwgb3IgdGhlIHN1cHBsaWVkIG5vbi1pbmNsdXNpb24gcHJvb2YgaXMgaW52YWxpZC4oWmVyb0Ftb3VudAAkBNBBIGBmdW5kX3BvdGAgb3IgYHdpdGhkcmF3X3BvdF9mdW5kc2AgYW1vdW50IG9mIHplcm8uUEluc3RhbmNlTm90U3BvbnNvcmVkACUEwFRoZSBpbnN0YW5jZSBpcyBub3Qgc3BvbnNvcmVkLCBzbyBpdCBoYXMgbm8gcG90LmxXaXRoZHJhd0V4Y2VlZHNDb250cmlidXRpb24AJgQ9AVRoZSB3aXRoZHJhd2FsIGV4Y2VlZHMgdGhlIGNhbGxlcidzIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24gaW4gdGhhdCBjdXJyZW5jeS5kUG90Q2Fubm90Q292ZXJMb2FkRGVwb3NpdAAnBPRUaGUgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90IGNhbm5vdCBmdW5kIHRoaXMgbG9hZCdzIGRlcG9zaXQuaExvYWREZXBvc2l0T2xkVGllck9jY3VwaWVkACgIWQFUaGUgbG9hZCBkZXBvc2l0IGNoYW5nZWQgd2hpbGUgdGhlIHNwb25zb3JlZCBpbnN0YW5jZSdzIG9sZCB0aWVyIHN0aWxsIGhvbGRzIGRlcG9zaXRzLEkBc28gdGhlIGluc3RhbmNlIG5lZWRzIFtgUGFsbGV0Ojpjb2xsYXBzZV9sb2FkX2RlcG9zaXRzYF0gYmVmb3JlIGl0IGNhbiBsb2FkIGFnYWluLkROb3RoaW5nVG9Db2xsYXBzZQApCF0BVGhlIGxlZGdlciBpcyBhbHJlYWR5IGEgc2luZ2xlIHRpZXIgYXQgdGhlIGN1cnJlbnQgW2BDb25maWc6OkxvYWREZXBvc2l0YF0sIHNvIHRoZXJlIGlzUG5vdGhpbmcgdG8gY29sbGFwc2UuYEluc3RhbmNlQWxyZWFkeVNwb25zb3JlZAAqBIhUaGUgaW5zdGFuY2UgaXMgYWxyZWFkeSBzcG9uc29yZWQuaFNwb25zb3JlZEluc3RhbmNlc0Rpc2FibGVkACsETQFbYENvbmZpZzo6RW5hYmxlUGVybWlzc2lvbmxlc3NgXSBpcyBmYWxzZSwgc28gbm8gc3BvbnNvcmVkIGluc3RhbmNlIGNhbiBiZSBjcmVhdGVkLlxQYWxsZXRBY2NvdW50Tm90VG91Y2hlZAAsDDkBVGhlIHBhbGxldCBhY2NvdW50IGNhbm5vdCByZWNlaXZlIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuVQF0b3VjaGVkIGZvciBpdCwgd2hpY2ggW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gZXhwZWN0cyB0byBoYXZlIGhhcHBlbmVkIGFscmVhZHkugFBhbGxldEFjY291bnRCZWxvd01pbmltdW1CYWxhbmNlAC0MQQFUaGUgcGFsbGV0IGFjY291bnQgaG9sZHMgbGVzcyB0aGFuIHRoZSB1bmRlcmx5aW5nIGFzc2V0J3MgbWluaW11bSBiYWxhbmNlLCB3aGljaFEBW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gZXhwZWN0cyBhcyBhIGJ1ZmZlciBhZ2FpbnN0IHRoZSBhY2NvdW50IGJlaW5nHGR1c3RlZC5oRnVuZGluZ0JlbG93TWluaW11bUJhbGFuY2UALghJAUEgYGZ1bmRfcG90YCBhbW91bnQgYmVsb3cgdGhlIGN1cnJlbmN5J3MgbWluaW11bSBiYWxhbmNlLCB3aGljaCB0aGUgdHJhbnNmZXIgY291bGRAZHVzdCByaWdodCBhd2F5LkBGZWVFeGNlZWRzTWF4RmVlAC8EWQFQYXlpbmcgdGhlIGZlZSB3b3VsZCBjb3N0IG1vcmUgdGhhbiB0aGUgY2FsbGVyJ3MgYG1heF9mZWVgLCBpbiB0aGUgY3VycmVuY3kgcGF5aW5nIGl0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4hDQQYT3B0aW9uBARUASUNAQgQTm9uZQAAABBTb21lBAAlDQAAAQAAJQ0MUGluZGl2X3BhbGxldF9jb2luYWdlDHBvdBxQb3RWaWV3CBxBc3NldElkAWkBHEJhbGFuY2UBRQEAHAEwbG9hZF9kZXBvc2l0sQUBSChBc3NldElkLCBCYWxhbmNlKQABVGZyZWVfaW5fZGVwb3NpdF9hc3NldEUBARxCYWxhbmNlAAFAbG9hZHNfYWZmb3JkYWJsZTgBDHUzMgABPHJlZGVlbWFibGVfa2V5czgBDHUzMgABMGN1cnJlbnRfdGllcgENAZRPcHRpb248RGVwb3NpdFRpZXI8QXNzZXRJZCwgQmFsYW5jZT4+AAEgb2xkX3RpZXIBDQGUT3B0aW9uPERlcG9zaXRUaWVyPEFzc2V0SWQsIEJhbGFuY2U+PgABNGxvYWRzX2Jsb2NrZWQpDQFgT3B0aW9uPEN1c3RvbUludmFsaWRpdHk+AAApDQQYT3B0aW9uBARUAS0NAQgQTm9uZQAAABBTb21lBAAtDQAAAQAALQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldEBDdXN0b21JbnZhbGlkaXR5AAHUGE5vQ29pbgAjAChDb2luVG9vT2xkACQASFNwbGl0SW50b05vdFNvcnRlZAAlAFRTcGxpdEV4cG9uZW50VG9vU21hbGwAJgA0SW50ZXJuYWxFcnJvcgAnACxTcGxpdFRvb0JpZwAoADBJbnZhbGlkU3BsaXQAKQAoRW1wdHlTcGxpdAAqADRUb29NYW55U3BsaXRzACsAUE1lbWJlcktleUFscmVhZHlVc2VkAC0AXFJlY3ljbGVyQWxyZWFkeVVubG9hZGVkAC4ASERlbm9taW5hdGlvblRvb0JpZwAvAFBEZW5vbWluYXRpb25Ub29TbWFsbAAwAFhEZW5vbWluYXRpb25PdXRPZkJvdW5kADEATE5vVW5sb2FkaW5nUmVjeWNsZXIAMgBASW52YWxpZE1lbWJlcktleQAzACxJbnZhbGlkQ2FsbAA0AFRBZGRyZXNzQWxyZWFkeUhhc0NvaW4ANQBoT3JpZ2luVG9Bc0NvaW5NdXN0QmVTaWduZWQANgBcSW52YWxpZFVubG9hZFRva2VuUHJvb2YANwBgSW52YWxpZFVubG9hZFRva2VuUGVyaW9kADgAaFVubG9hZFRva2VuQWxyZWFkeUNvbnN1bWVkADkAcFVubG9hZFRva2VuQ291bnRlck91dE9mUmFuZ2UAOgBcSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AOwAoTm9SZWN5Y2xlcgA8AExUcmFuc2FjdGlvbk5vdExvY2FsAD0AOE5vdGhpbmdUb0J1aWxkAD4ATFNwbGl0RXhwb25lbnRUb29CaWcAPwCMSW52YWxpZFVubG9hZFRva2VuUGVyaW9kT3JSaW5nSW5kZXgAQABwRHVwbGljYXRlRGVzdGluYXRpb25zSW5TcGxpdABBAEhDb2luQW1vdW50QmVsb3dGZWUAQgBcSW52YWxpZFByb29mT2ZPd25lcnNoaXAAQwBMRmVlQ29pbkJlbG93TWluaW11bQBEAFxGcm9tT3V0cHV0RmVlTm90QWxsb3dlZABFAEBFbXB0eUFsaWFzUHJvb2ZzAEYAcEludmFsaWRQYWlkVG9rZW5SaW5nUmV2aXNpb24ARwBoQ2Fubm90Q29udmVydEFzc2V0VG9OYXRpdmUASQBUQ29pblRlbXBvcmFyaWx5TG9ja2VkAEoAREludmFsaWRBbGlhc1Byb29mAEsAbE1heEZlZUluc3VmZmljaWVudEZvclVubG9hZABMAGhNYXhGZWVOb3RBbGxvd2VkRm9yUHJlcGFpZABNAGxMb3NzeURlbm9taW5hdGlvbkNvbnZlcnNpb24ATgBYRmlyc3RDYWxsQWxpYXNNaXNtYXRjaABPAKBJbmZhbGxpYmxlVW5wYWlkU2lnbmVkT3JpZ2luTXVzdEJlU2lnbmVkAFAApEluZmFsbGlibGVVbnBhaWRTaWduZWRJbnN1ZmZpY2llbnRCYWxhbmNlAFEAQEVtcHR5TWl4ZWRPdXRwdXQAUwBQRW1wdHlVbnBhaWRMb2FkQmF0Y2gAVABASW5zdGFuY2VOb3RGb3VuZABVAFhBbGlhc1RlbXBvcmFyaWx5TG9ja2VkAFYAZFBvdENhbm5vdENvdmVyTG9hZERlcG9zaXQAVwBoTG9hZERlcG9zaXRPbGRUaWVyT2NjdXBpZWQAWAAsRW1wdHlJbnB1dHMAWQBUVW5sb2FkZWRWYWx1ZUJlbG93RmVlAFoAADENAAACNQ0ANQ0AAAQMaQFFAUUBADkNBBhPcHRpb24EBFQBwQwBCBBOb25lAAAAEFNvbWUEAMEMAAABAAA9DQQYT3B0aW9uBARUAQkEAQgQTm9uZQAAABBTb21lBAAJBAAAAQAAQQ0EGE9wdGlvbgQEVAHpDAEIEE5vbmUAAAAQU29tZQQA6QwAAAEAAEUNBBhPcHRpb24EBFQBnQUBCBBOb25lAAAAEFNvbWUEAJ0FAAABAABJDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXM4U3Vic2NyaWJlckluZm8EBFQAAAwBLGNvbGxlY3Rpb25zuQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAFIbGFzdF9pbml0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAATBwYWxsZXRfaW5kZXgMAQh1OAAATQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzXFdoaXRlbGlzdGVkU3Vic2NyaXB0aW9uBARUAAAIASxjb2xsZWN0aW9uc7kFARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABMHBhbGxldF9pbmRleAwBCHU4AABRDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXMsUGFnaW5nU3RhdGUELEJsb2NrTnVtYmVyATgADAEod3JpdGVfcGFnZcUDAQx1MTYAASRzZW5kX3BhZ2XFAwEMdTE2AAFEbGFzdF91cGRhdGVfYmxvY2s4ASxCbG9ja051bWJlcgAAVQ0AAAQMxQMIOABZDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNAUGVuZGluZ0luaXRTdGF0ZQQEVAAAGAEsY29sbGVjdGlvbnO5BQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAWBjdXJyZW50X2NvbGxlY3Rpb25faW5kZXg4AQx1MzIAAUBhZnRlcl9yaW5nX2luZGV45AFET3B0aW9uPFJpbmdJbmRleD4AASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAATBwYWxsZXRfaW5kZXgMAQh1OAAAXQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzWEJhdGNoRGlzdHJpYnV0aW9uU3RhdGUELEJsb2NrTnVtYmVyATgAEAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEkc2VhbGVkX2F0OAEsQmxvY2tOdW1iZXIAAVRyZW1haW5pbmdfc3Vic2NyaWJlcnM4AQx1MzIAAGENAAAECJwIAGUNDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXJyb3IEBFQAAThIU3Vic2NyaWJlck5vdEZvdW5kAAAEVFN1YnNjcmliZXIgbm90IGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAABBGhTdWJzY3JpYmVyIGFscmVhZHkgZXhpc3RzLkhUb29NYW55U3Vic2NyaWJlcnMAAgRwTWF4aW11bSBzdWJzY3JpYmVycyByZWFjaGVkLlhJbnZhbGlkQ29sbGVjdGlvbnNMaXN0AAMEPQFDb2xsZWN0aW9ucyBsaXN0IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlciB3aXRoIG5vIGR1cGxpY2F0ZXMuOFRvb01hbnlVcGRhdGVzAAQE0FRvbyBtYW55IHJpbmcgcm9vdCB1cGRhdGVzIHRvIGZpdCBpbiBhIHNpbmdsZSBiYXRjaC40WGNtU2VuZEZhaWxlZAAFBEBYQ00gc2VuZCBmYWlsZWQuZE5vdFN1YnNjcmliZWRUb0NvbGxlY3Rpb24ABgTkU3Vic2NyaWJlciBpcyBub3Qgc3Vic2NyaWJlZCB0byB0aGUgcmVxdWVzdGVkIGNvbGxlY3Rpb24uQEludmFsaWRSaW5nSW5kZXgABwSAUmluZyByb290IGluZGV4IGlzIG91dCBvZiByYW5nZS5YRXhjZWVkc0NoYW5uZWxDYXBhY2l0eQAIBAEBUmVxdWVzdGVkIHVwZGF0ZXMgZXhjZWVkIHRoZSBzdWJzY3JpYmVyJ3MgSFJNUCBjaGFubmVsIGNhcGFjaXR5LjROb0JhdGNoQWN0aXZlAAkEXE5vIGFjdGl2ZSBiYXRjaCBleGlzdHMuNE5vUGVuZGluZ0luaXQACgS4Tm8gcGVuZGluZyBpbml0aWFsaXphdGlvbiBmb3IgdGhpcyBzdWJzY3JpYmVyLlBSZXBsYXlDb29sZG93bkFjdGl2ZQALBA0BUmVwbGF5IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBmb3IgdGhpcyBzdWJzY3JpYmVyIGFuZCBjb2xsZWN0aW9uLkBFbXB0eVJpbmdJbmRpY2VzAAwE5FJlcGxheSByZXF1ZXN0ZWQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIHJpbmcgcm9vdCBpbmRpY2VzLjhOb3RXaGl0ZWxpc3RlZAANBOxQYXJhY2hhaW4gaGFzIG5vIHdoaXRlbGlzdGVkIHN1YnNjcmlwdGlvbiBsZWZ0IHRvIGFjdGl2YXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMsQWN0aXZlRXZlbnQMJEFjY291bnRJZAEEHEFzc2V0SWQBaQEwQXNzZXRCYWxhbmNlAUUBABABCGlkCAEcRXZlbnRJZAABEGluZm/RBQGARXZlbnRJbmZvPEFzc2V0SWQsIEFzc2V0QmFsYW5jZT4AARhzdGF0dXNtDQEYU3RhdHVzAAEYc291cmNlNQEBRE9wdGlvbjxBY2NvdW50SWQ+AABtDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMYU3RhdHVzAAEgJFNjaGVkdWxlZAAAACxSZWdpc3RlcmluZwQBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABADxBd2FpdGluZ0VudHJvcHkMAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABLGxhc3RfbW9tZW50OAEMdTMyAAIALERyYXdXaW5uZXJzEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAATR3aW5uZXJzX2FkZGVkOAEMdTMyAAE8ZnJvbV93aW5uZXJfa2V5GQgBNEJpZ0VuZGlhblUyNTYAAwAgQ2xhaW1pbmcMAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIABABUQ2xlYXJpbmdSZWdpc3RyYXRpb25zEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAFUY2xlYW5lZF9yZWdpc3RyYXRpb25zOAEMdTMyAAUAPENsZWFyaW5nV2lubmVycxABSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEcY2xhaW1lZDgBDHUzMgABPGNsZWFuZWRfd2lubmVyczgBDHUzMgAGAChGaW5hbGl6aW5nCAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAcAAHENAAAECHUNCAB1DQw0aW5kaXZfc3VwcG9ydBR1dGlsczBCaWdFbmRpYW5VNjQAAwgAAAAMBBkBQSB1NjQgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLnkNAAAECAgZCAB9DQAABAgIHQgAgQ0MUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBRFcnJvcgQEVAABVFBQcml6ZUJlbG93TWluQmFsYW5jZQAAAExOb1dpbm5lcnNDb25maWd1cmVkAAEAOFRvb01hbnlXaW5uZXJzAAIAREludmFsaWRFdmVudFRpbWVzAAMAQER1cGxpY2F0ZUV2ZW50SWQABABATm9TY2hlZHVsZWRFdmVudAAFADBVbmtub3duRXZlbnQABgAsV3JvbmdTdGF0dXMABwTgT3BlcmF0aW9uIHJlcXVpcmVzIGEgc3BlY2lmaWMgc3RhdHVzIHRoZSBldmVudCBpc24ndCBpbi5kTm90QWNjZXB0aW5nUmVnaXN0cmF0aW9ucwAIACxOb3RDbGFpbWluZwAJAFBDbGFpbWluZ1dpbmRvd0Nsb3NlZAAKBLRDbGFpbSBhdHRlbXB0ZWQgYWZ0ZXIgdGhlIGV2ZW50J3MgYGVuZF90aW1lYC5ARW50cm9weVNsb3RUYWtlbgALADxJbnZhbGlkVnJmUHJvb2YADABUVW5zdXBwb3J0ZWRBY2NvdW50S2V5AA0ECQFTdXBwbGllZCBhY2NvdW50IGlkIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW55IHNyMjU1MTkgcHVibGljIGtleS5YSW52YWxpZE1lbWJlcnNoaXBQcm9vZgAOADBOb1N1Y2hXaW5uZXIADwBMUGFydGljaXBhbnRPdmVyZmxvdwAQAFxQcml6ZUFsbG9jYXRpb25PdmVyZmxvdwARADxBc3NldE5vdEVuYWJsZWQAEgTgVGhlIHByaXplIGFzc2V0IGhhcyBub3QgYmVlbiBlbmFibGVkIHZpYSBgZW5hYmxlX2Fzc2V0YC5MQXNzZXRBbHJlYWR5RW5hYmxlZAATBPxgZW5hYmxlX2Fzc2V0YCB3YXMgY2FsbGVkIGZvciBhbiBhc3NldCB0aGF0IGlzIGFscmVhZHkgZW5hYmxlZC48RW50cm9weU5vdFJlYWR5ABQECQFObyByYW5kb21uZXNzIHByb2R1Y2VkIGFmdGVyIHJlZ2lzdHJhdGlvbiBjbG9zZWQgaXMgYXZhaWxhYmxlIHlldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuhQ0MTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMkUG9pbnRJbmZvAAAQARxzdWJqZWN0CAEkU3ViamVjdElkAAE0c3ViamVjdF9hbGlhcwgBMFN1YmplY3RBbGlhcwABJGRpcmVjdGlvbt0FASREaXJlY3Rpb24AATBsYXN0X3VzZWRfYXQoARxTZWNvbmRzAACJDQxMaW5kaXZfcGFsbGV0X2hvbm91chhwYWxsZXQURXJyb3IEBFQAAQwoQXJpdGhtZXRpYwAABAkBQXJpdGhtZXRpYyBlcnJvciBsaWtlIG92ZXIvdW5kZXJmbG93LCBkaXZpc2lvbiBieSB6ZXJvIG9yIHNpbWlsYXIuTFN1YmplY3RBbHJlYWR5Vm90ZWQAAQT8VGhlcmUgaXMgYWxyZWFkeSBhIHZvdGUgYnkgdGhlIHNhbWUgdm90ZXIgZm9yIHRoZSBzYW1lIHN1YmplY3QuMEludmFsaWRQcm9vZgACBLBUaGUgcHJvdmlkZWQgcmluZyBwcm9vZiBmYWlsZWQgdmVyaWZpY2F0aW9uLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6NDQAABAgIKACRDQxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQURXJyb3IEBFQAAQxUUmFuZG9tbmVzc1VuYXZhaWxhYmxlAAAEEQFUaGUgcmFuZG9tbmVzcyBzb3VyY2UgaGFzIG5vIHZhbHVlIHRvIHNhbHQgdGhlIHNjaGVkdWxlZCBkcmF3cyB3aXRoLixVbmtub3duRHJhdwABBOBObyBkcmF3IHdpdGggdGhpcyBldmVudCBpZCB3YXMgc2NoZWR1bGVkIGJ5IHRoaXMgcGFsbGV0LkRFbXB0eVJlZ2lzdHJhdGlvbgACBKhgcmVnaXN0ZXJgIHdhcyBjYWxsZWQgd2l0aCBhbiBlbXB0eSBiYXRjaC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQ0MRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQ0IRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAnQ0EGE9wdGlvbgQEVAGhDQEIEE5vbmUAAAAQU29tZQQAoQ0AAAEAAKENCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPkASxPcHRpb248dTMyPgAApQ0IRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ5kNATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc50NAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAKkNCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAArQ0QKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGFCAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzsQ0BUFZlYzxPcGFxdWVFeHRyaW5zaWM+AACxDQAAArUNALUNCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AAC5DQgoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAAC9DQgcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AADBDQQYT3B0aW9uBARUAb0NAQgQTm9uZQAAABBTb21lBAC9DQAAAQAAxQ0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnM4Vmlld0Z1bmN0aW9uSWQAAAgBGHByZWZpeF0CASBbdTg7IDE2XQABGHN1ZmZpeF0CASBbdTg7IDE2XQAAyQ0EGFJlc3VsdAgEVAEYBEUBzQ0BCAhPawQAGAAAAAAMRXJyBADNDQAAAQAAzQ0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnNkVmlld0Z1bmN0aW9uRGlzcGF0Y2hFcnJvcgABDDhOb3RJbXBsZW1lbnRlZAAAACBOb3RGb3VuZAQAxQ0BOFZpZXdGdW5jdGlvbklkAAEAFENvZGVjAAIAANENBBhSZXN1bHQIBFQBvQcERQHVDQEICE9rBAC9BwAAAAAMRXJyBADVDQAAAQAA1Q0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEANkNAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQA3Q0BSFVua25vd25UcmFuc2FjdGlvbgABAADZDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAADdDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAADhDQgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YeUNAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AADlDQQgQlRyZWVNYXAIBEsBWQIEVgEYAAQA6Q0AAADpDQAAAu0NAO0NAAAECFkCGADxDQgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5UQEBEGJvb2wAASxmYXRhbF9lcnJvclEBARBib29sAAEYZXJyb3Jz4Q0BMEluaGVyZW50RGF0YQAA9Q0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAD5DQQYUmVzdWx0CARUAf0NBEUB1Q0BCAhPawQA/Q0AAAAADEVycgQA1Q0AAAEAAP0NDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlUQEBEGJvb2wAAAEODChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAABQ4EGE9wdGlvbgQEVAEJDgEIEE5vbmUAAAAQU29tZQQACQ4AAAEAAAkOAAACDQ4ADQ4AAAQIGP0JABEODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAUUBGFdlaWdodAFxAgAMARh3ZWlnaHRxAgEYV2VpZ2h0AAEUY2xhc3PdBgE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlRQEBHEJhbGFuY2UAABUODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAUUBAAgBNGluY2x1c2lvbl9mZWUZDgF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXBFAQEcQmFsYW5jZQAAGQ4EGE9wdGlvbgQEVAEdDgEIEE5vbmUAAAAQU29tZQQAHQ4AAAEAAB0ODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBRQEADAEgYmFzZV9mZWVFAQEcQmFsYW5jZQABHGxlbl9mZWVFAQEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWVFAQEcQmFsYW5jZQAAIQ4EGFJlc3VsdAgEVAElDgRFASkOAQgIT2sEACUOAAAAAAxFcnIEACkOAAABAAAlDgAAAqkDACkODEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAALQ4EGFJlc3VsdAgEVAFxAgRFASkOAQgIT2sEAHECAAAAAAxFcnIEACkOAAABAAAxDgQYUmVzdWx0CARUAUUBBEUBKQ4BCAhPawQARQEAAAAADEVycgQAKQ4AAAEAADUOBBhSZXN1bHQIBFQBdQMERQEpDgEICE9rBAB1AwAAAAAMRXJyBAApDgAAAQAAOQ4EGFJlc3VsdAgEVAE9DgRFAWEOAQgIT2sEAD0OAAAAAAxFcnIEAGEOAAABAAA9DgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuRENhbGxEcnlSdW5FZmZlY3RzBBRFdmVudAHRBgAQAUBleGVjdXRpb25fcmVzdWx0QQ4BaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHNNDgEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbVEOAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtc1UOAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAQQ4EGFJlc3VsdAgEVAFFDgRFAUkOAQgIT2sEAEUOAAAAAAxFcnIEAEkOAAABAABFDgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0QQMBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWXhBgEQUGF5cwAASQ4IKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwFFDgAIASRwb3N0X2luZm9FDgEQSW5mbwABFGVycm9y5QYBNERpc3BhdGNoRXJyb3IAAE0OAAAC0QYAUQ4EGE9wdGlvbgQEVAExAgEIEE5vbmUAAAAQU29tZQQAMQIAAAEAAFUOAAACWQ4AWQ4AAAQI5QFdDgBdDgAAAjECAGEODEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAGUOBBhSZXN1bHQIBFQBaQ4ERQFhDgEICE9rBABpDgAAAAAMRXJyBABhDgAAAQAAaQ4MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHRBgAMAUBleGVjdXRpb25fcmVzdWx0oQcBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50c00OAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXNVDgG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAG0OBBhSZXN1bHQIBFQBBARFAXEOAQgIT2sEAAQAAAAADEVycgQAcQ4AAAEAAHEODEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAdQ4AAAJ5DgB5DgAABAg47QcAfQ4EGFJlc3VsdAgEVAGBDgRFAZEOAQgIT2sEAIEOAAAAAAxFcnIEAJEOAAABAACBDgAAAoUOAIUODGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNMTmZ0Q2xhaW1DcmVkaXRQcm9vZgAAGAEQcm9vdPEHATxDcmVkaXRQcm9vZk5vZGUAARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAABEGxlYWaJDgFITmZ0Q2xhaW1DcmVkaXRMZWFmAAEobGVhZl9pbmRleDgBDHUzMgABKGxlYWZfY291bnQ4AQx1MzIAARRwcm9vZo0OAVBWZWM8Q3JlZGl0UHJvb2ZOb2RlPgAAiQ4MNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzSE5mdENsYWltQ3JlZGl0TGVhZgAABAAIASBbdTg7IDMyXQAAjQ4AAALxBwCRDgxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzYE5mdENsYWltQ3JlZGl0UHJvb2ZFcnJvcgABFERVbmtub3duQXdhcmRCbG9jawAAADBBd2FyZHNQcnVuZWQAAQBETGVhZkNvdW50TWlzbWF0Y2gEASBleHBlY3RlZDgBDHUzMgACAFBMZWFmSW5kZXhPdXRPZkJvdW5kcwADADBSb290TWlzbWF0Y2gABAAAlQ4EGFJlc3VsdAgEVAGFDgRFAZEOAQgIT2sEAIUOAAAAAAxFcnIEAJEOAAABAACZDghcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzNAFIVmVjPFVwd2FyZE1lc3NhZ2U+AAFMaG9yaXpvbnRhbF9tZXNzYWdlcwUJAWBWZWM8T3V0Ym91bmRIcm1wTWVzc2FnZT4AAUxuZXdfdmFsaWRhdGlvbl9jb2RlnQ4BjE9wdGlvbjxyZWxheV9jaGFpbjo6VmFsaWRhdGlvbkNvZGU+AAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AWByZWxheV9jaGFpbjo6QmxvY2tOdW1iZXIAASRoZWFkX2RhdGFMASBIZWFkRGF0YQAAnQ4EGE9wdGlvbgQEVAGhDgEIEE5vbmUAAAAQU29tZQQAoQ4AAAEAAKEODHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzOFZhbGlkYXRpb25Db2RlAAAEABgBHFZlYzx1OD4AAKUOBBhSZXN1bHQIBFQBEARFAUkIAQgIT2sEABAAAAAADEVycgQASQgAAAEAAKkOBBhPcHRpb24EBFQBSQgBCBBOb25lAAAAEFNvbWUEAEkIAAABAACtDgAAAkkIALEOCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgABjBhTeXN0ZW0EAHkIAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAFQkBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAIEJhbGFuY2VzBABZCQF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKAERPcmlnaW5SZXN0cmljdGlvbgQAbQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AA0AGEFzc2V0cwQAmQkBdHBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWU+AA4AMEFzc2V0c0hvbGRlcgQApQkBkHBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lPgAPACRBc3NldFJhdGUEAKkJAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AEAA8QXNzZXRDb252ZXJzaW9uBAC1CQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ABIAKFBvb2xBc3NldHMEAMkJAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ABMARENvbGxhdG9yU2VsZWN0aW9uBADdCQGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAAQoBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAD0KAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQApQoBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAxQoBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BADJCgF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBADZCgF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABBTdWRvBADdCgFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+ACoAFFByb3h5BAABCwFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAsABhQZW9wbGUEAAkLAYxpbmRpdl9wYWxsZXRfcGVvcGxlOjpFcnJvcjxSdW50aW1lPgAzABxNb2JSdWxlBABNCwGUaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpFcnJvcjxSdW50aW1lPgA0AChQcm9vZk9mSW5rBACJCwGkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6RXJyb3I8UnVudGltZT4ANQAQR2FtZQQA3QsBhGluZGl2X3BhbGxldF9nYW1lOjpFcnJvcjxSdW50aW1lPgA3ABRTY29yZQQACQwBiGluZGl2X3BhbGxldF9zY29yZTo6RXJyb3I8UnVudGltZT4AOAAoTmZ0Q3JlZGl0cwQAMQwBoGluZGl2X3BhbGxldF9uZnRfY3JlZGl0czo6RXJyb3I8UnVudGltZT4AOQAgRHVtbXlEaW0EADkMAZhpbmRpdl9wYWxsZXRfZHVtbXlfZGltOjpFcnJvcjxSdW50aW1lPgA7AChQZW9wbGVMaXRlBABFDAGgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlOjpFcnJvcjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAHkMAZhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpFcnJvcjxSdW50aW1lPgA/ADRDaHVua3NNYW5hZ2VyBACRDAGsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyOjpFcnJvcjxSdW50aW1lPgBAABxNZW1iZXJzBADdDAGQaW5kaXZfcGFsbGV0X21lbWJlcnM6OkVycm9yPFJ1bnRpbWU+AEMAHENvaW5hZ2UEAB0NAZBpbmRpdl9wYWxsZXRfY29pbmFnZTo6RXJyb3I8UnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABlDQG0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXI6OkVycm9yPFJ1bnRpbWU+AEUAHEFpcmRyb3AEAIENAZBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6RXJyb3I8UnVudGltZT4ARgAYSG9ub3VyBACJDQGMaW5kaXZfcGFsbGV0X2hvbm91cjo6RXJyb3I8UnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAJENAbBpbmRpdl9wYWxsZXRfcGVvcGxlX2FpcmRyb3BzOjpFcnJvcjxSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAlQ0BhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgBiAADAGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgS5BkEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAFEBBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEAxQYYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDJBgQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPDkIBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAQQgEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAFEBBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBRAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAADEIBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAABNCAQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBAHECCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB1QYAGDBCbG9ja1dlaWdodHNRCIkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8BWDe9FAQIAwAEBCwCY9z5dAQIA4AEBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHAIhSanQCAKAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RoXQg0AAA8AAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h0ZQhAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbmkI+QREbmV4dC1wZW9wbGUtcGFzZW9EbmV4dC1wZW9wbGUtcGFzZW8BAAAAZEIPAAAAAABY3XGNXMUyYtQBAAAABOcFIaDT0vgBAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAzNneY5bImcoBAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAA0LrHvkprCSABAAAAkof7DgIbyFQBAAAAhDtvjOyAmMcBAAAAX00Hx2MP1rkBAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAABQAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpeMUDCCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABeQgAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmd9CAQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja4EICGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGG9BghhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW18PEJsb2NrV2VpZ2h0TW9kZQAAmQgEABh8IFRoZSBjdXJyZW50IGJsb2NrIHdlaWdodCBtb2RlLgB1ASBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBibG9jayB3ZWlnaHQsIGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZUggW2BibG9ja193ZWlnaHRgXS4AJQEgS2lsbGVkIGluIFtgU2VsZjo6b25faW5pdGlhbGl6ZWBdIGFuZCBzZXQgYnkgdGhlIFtgYmxvY2tfd2VpZ2h0YF0gbG9naWMuAERQcmV2aW91c0NvcmVDb3VudAAAnQgEAAwFASBUaGUgY29yZSBjb3VudCBhdmFpbGFibGUgdG8gdGhlIHBhcmFjaGFpbiBpbiB0aGUgcHJldmlvdXMgYmxvY2suAHUBIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIG9mZmNoYWluIGZ1bmN0aW9uYWxpdHkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRhcmdldCBibG9jayB3ZWlnaHQuAERVbmluY2x1ZGVkU2VnbWVudAEAoQgEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC4AbEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAAyQgEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLgBUUGVuZGluZ1ZhbGlkYXRpb25Db2RlAQAYBAAYWQEgSW4gY2FzZSBvZiBhIHNjaGVkdWxlZCB1cGdyYWRlLCB0aGlzIHN0b3JhZ2UgZmllbGQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gY29kZSB0byBiZSQgYXBwbGllZC4APQEgQXMgc29vbiBhcyB0aGUgcmVsYXkgY2hhaW4gZ2l2ZXMgdXMgdGhlIGdvLWFoZWFkIHNpZ25hbCwgd2Ugd2lsbCBvdmVyd3JpdGUgdGhlZQEgW2A6cGVuZGluZ19jb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpQRU5ESU5HX0NPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZXUBIG5leHQgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUuIFRoaXMgY29uY2x1ZGVzIHRoZSB1cGdyYWRlIHByb2Nlc3MuAEROZXdWYWxpZGF0aW9uQ29kZQAAGAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuADhWYWxpZGF0aW9uRGF0YQAASAQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suAHEBIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBieSB0aGUgW2BQYWxsZXQ6OnNldF92YWxpZGF0aW9uX2RhdGFgXSBpbmhlcmVudC4AUERpZFNldFZhbGlkYXRpb25Db2RlAQBRAQQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluPwBkTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAOBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC4AYFVwZ3JhZGVSZXN0cmljdGlvblNpZ25hbAEAzQgEABx1ASBBbiBvcHRpb24gd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSByZWxheS1jaGFpbiByZXN0cmljdHMgc2lnbmFsbGluZyBhIHZhbGlkYXRpb24gY29kZSB1cGdyYWRlLmEBIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGBTb21lYCBhbmQgW2BOZXdWYWxpZGF0aW9uQ29kZWBdIGlzIGBTb21lYCB0aGVuIHRoZSBwcm9kdWNlZGwgY2FuZGlkYXRlIHdpbGwgYmUgaW52YWxpZC4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4AOFVwZ3JhZGVHb0FoZWFkAQDBCAQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADxSZWxheVN0YXRlUHJvb2YAAFAEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAFhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAADVCAQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AREhvc3RDb25maWd1cmF0aW9uAADpCAQAGCkBIFRoZSBwYXJhY2hhaW4gaG9zdCBjb25maWd1cmF0aW9uIHRoYXQgd2FzIG9idGFpbmVkIGZyb20gdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgA4TGFzdERtcU1xY0hlYWQBAPEIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAEBMYXN0SHJtcE1xY0hlYWRzAQD1CAQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBkUHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlcwEAOBAAAAAADMggTnVtYmVyIG9mIGRvd253YXJkIG1lc3NhZ2VzIHByb2Nlc3NlZCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AcExhc3RQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2UAAAEJBAAMlCBUaGUgbGFzdCBwcm9jZXNzZWQgZG93bndhcmQgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4ANEhybXBXYXRlcm1hcmsBADgQAAAAAASgIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgBgTGFzdFByb2Nlc3NlZEhybXBNZXNzYWdlAAABCQQADIQgVGhlIGxhc3QgcHJvY2Vzc2VkIEhSTVAgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4AUEhybXBPdXRib3VuZE1lc3NhZ2VzAQAFCQQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AOFVwd2FyZE1lc3NhZ2VzAQA0BAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A8CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgZm9yIGVhY2ggbmV3IGJsb2NrLgBUUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQA0BAAEMQEgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uAFBQZW5kaW5nVXB3YXJkU2lnbmFscwEANAQADC0BIFVwd2FyZCBzaWduYWxzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uANggVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBmb3IgZWFjaCBibG9jay4ATFBlbmRpbmdBcHByb3ZlZFBlZXIAAHgEAAQ5ASBUaGUgYXBwcm92ZWQgcGVlciBpZCB0byBiZSBzZW50IGFzIGEgVU1QIHNpZ25hbCBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgUG9WLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBALUBQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAABxAgQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAAHECBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ASFBvVk1lc3NhZ2VzVHJhY2tlcgAADQkEAAxVASBUcmFja3MgY3VtdWxhdGl2ZSBgVU1QYCBhbmQgYEhSTVBgIG1lc3NhZ2VzIHNlbnQgYWNyb3NzIGJsb2NrcyBpbiB0aGUgY3VycmVudCBgUG9WYC4AdQEgQWNyb3NzIGRpZmZlcmVudCBjYW5kaWRhdGVzL1BvVnMgdGhlIGJ1ZGdldHMgYXJlIHRyYWNrZWQgYnkgW2BBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnRgXS4AAUAAAf0GAAQoU2VsZlBhcmFJZJwQ3gUAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABFQkAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQBRAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuADxSZWxheVJhbmRvbW5lc3MBPFJlbGF5UmFuZG9tbmVzcwQoUmFuZG9tbmVzcwEAGQkIAAAYQQEgVGhlIGxhc3QgZGlzdGluY3QgcmVsYXkgY2hhaW4gcmFuZG9tbmVzcyB2YWx1ZXMsIHJlZnJlc2hlZCBmcm9tIHRoZSByZWxheSBjaGFpbjQgc3RhdGUgcHJvb2YuADUBIFRoZSB2YWx1ZXMgcGVyc2lzdCBiZXR3ZWVuIGJsb2NrczogdGhleSByZWZsZWN0IHRoZSByZWxheSBwYXJlbnQgb2YgdGhlIGxhc3RJASBibG9jayB3aG9zZSBpbmhlcmVudCByYW4uIENvZGUgcnVubmluZyBiZWZvcmUgdGhlIGluaGVyZW50IChlLmcuIGBvbl9pbml0aWFsaXplYCmIIHNlZXMgdGhlIHByZXZpb3VzIGJsb2NrJ3MgdmFsdWVzLgAAAAAAAAAFAAAoUGFyYW1ldGVycwEoUGFyYW1ldGVycwQoUGFyYW1ldGVycwABBAIFBx0HBAAETCBTdG9yZWQgcGFyYW1ldGVycy4AAbwAAQEHAAAAAABJAAAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQBFAUAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEARQFAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEvQYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQlCQQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgQ1CQQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBEEJBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIETQkEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABSQEAATEHABBIRXhpc3RlbnRpYWxEZXBvc2l0RQFAAMqaOwAAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBAAAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgABWQkAEERSdW50aW1lSG9sZFJlYXNvbjkHBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNlRQEEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllclkCDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQC1AUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAF0JBAAAADxUeFBheW1lbnRDcmVkaXQAAGEJBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABZQcABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAEhTa2lwRmVlbGVzc1BheW1lbnQAAAFpBwAAAAAADAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAmEBaQkEAASMIFRoZSBjdXJyZW50IHVzYWdlIGZvciBlYWNoIGVudGl0eS4AAV0BAAFtBwAAAW0JAARAUmVzdHJpY3RlZEVudGl0eWEBJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9trCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0ZWRFbnRpdHlgXS4AHQEgVGhpcyBpcyB0aGUgY2Fub25pY2FsIG9yaWdpbiBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHVzYWdlIHRyYWNraW5nLowgRWFjaCBlbnRpdHkgaXMgdHJhY2tlZCBzZXBhcmF0ZWx5LgBJASBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIG9yaWdpbiBhcyBhIG11bHRpcGxlIG9yaWdpbiBjYW4gcmVwcmVzZW50IGEgc2luZ2xlIGVudGl0eS5hASBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIERBTyBvcmlnaW4gd2l0aCBhIHBlcmNlbnRhZ2Ugb2Ygdm90ZXJzLCB3ZSB3YW50IHRvIHRyYWNrIHRoZSBEQU+sIGVudGl0eSByZWdhcmRsZXNzIG9mIHRoZSB2b3RlciBwZXJjZW50YWdlLgANAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAmkBcQkEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgJ5CX0JBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICiQmNCQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCaQGRCVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCaQGlAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAABpAQQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFlAQABcQcAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdEUBQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlRQFAAKhb6QMAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZUUBQADh9QUAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdEUBQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABmQkAFBxCYWxhbmNlRQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkaQEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJpARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhqQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZGkBnQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkaQFBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWRpAaEJBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkaQGtAQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ADgAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICeQlBCQQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAnkJRQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAXUHAAABpQkABERSdW50aW1lSG9sZFJlYXNvbjkHBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uAA8AACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJpAbUBBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAGxAQABeQcAAAGpCQAEJEFzc2V0S2luZGkBBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuABAAADhBc3NldFR4UGF5bWVudAAAAX0HAAAAAAARAAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAoUHrQkEAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABuQEAAYEHABwUTFBGZWXRBBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZUUBQAAyfqcCAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0aQEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWXRBBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlFAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElksQkgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAbUJAAgkQXNzZXRLaW5kaQEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZIUHBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDFpARhhc3NldDJpAbkJCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxaQEYYXNzZXQyaQEYYW1vdW50RQEsaW5jbHVkZV9mZWVRAUEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MWkBGGFzc2V0MmkBGGFtb3VudEUBLGluY2x1ZGVfZmVlUQFBARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AEgAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjhxCQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAsEJfQkEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgLFCY0JBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4kQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjjFAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAcEBAAGNBwAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdEUBQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VFAUAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlRQFAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0RQFAAMqaOwAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAHJCQAUHEJhbGFuY2VFAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEE2wa6HKbxix7bBv8ILSRAmnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOJ0JBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAkuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4oQkEwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4yQEE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuABMAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDNCQQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBANEJBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAEUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABzQEAAZEHABgUUG90SWSxCSBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQMCoAAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB3QkABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBVAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBRAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDhCQQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDpCQQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBNUBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF+QkEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAHRAQABlQcABChLZXlEZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAQEKAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlz1QEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAFCgQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQANCiAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWTZAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQAFCgQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAEQoEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAFQoEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQAdCgQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBTEKNQoEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApw1CgQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAOQowIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAUQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWctQFAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgAB3QEAAZkHAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABPQoAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKEEKBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCVQo4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCVQooBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAlUKWQoEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAXQoEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAAaQoEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgJtCnEKBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgSBCgQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQBRAQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAUQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAD5AgQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAuUBjQoEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgAB4QEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAGdBwAQRFVuaXZlcnNhbExvY2F0aW9ubQEYAgkCAHkXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAaUKBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABsQMAAa0HAAAAAAAgAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAW5A60KdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAAC5AwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBbkKvQoEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgABtQMAAbEHABAgSGVhcFNpemU4EACcAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0QQMsAQcAWED7ogIA4AAYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHRBAywBBwBYQPuiAgDgABRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABxQoABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACIAABxVdGlsaXR5AAG9AwABuQcABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAckKAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbskDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQLNCtEKBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AASkEAAHBBwAMLERlcG9zaXRCYXNlRQFAADyRYAQAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3JFAUAAILy+AAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgAB2QoABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAQU3VkbwEQU3VkbwQMS2V5AAAEBAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgABNQQAAcUHAAAB3QoABCxSdW50aW1lQ2FsbCAESCBBIHN1ZG8tYWJsZSBjYWxsLgAqAAA8VmVyaWZ5U2lnbmF0dXJlAAAAAAAEJFNpZ25hdHVyZXEEBPQgU2lnbmF0dXJlIHR5cGUgdGhhdCB0aGUgZXh0ZW5zaW9uIG9mIHRoaXMgcGFsbGV0IGNhbiB2ZXJpZnkuACsAABRQcm94eQEUUHJveHkIHFByb3hpZXMBAQQFBOEKRAAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBzZXQgb2YgYWNjb3VudCBwcm94aWVzLiBNYXBzIHRoZSBhY2NvdW50IHdoaWNoIGhhcyBkZWxlZ2F0ZWQgdG8gdGhlIGFjY291bnRzIQEgd2hpY2ggYXJlIGJlaW5nIGRlbGVnYXRlZCB0bywgdG9nZXRoZXIgd2l0aCB0aGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdC4ANEFubm91bmNlbWVudHMBAQQFBPEKRAAAAAAAAAAAAAAAAAAAAAAABKwgVGhlIGFubm91bmNlbWVudHMgbWFkZSBieSB0aGUgcHJveHkgKGtleSkuAAE5BAAByQcAGEBQcm94eURlcG9zaXRCYXNlRQFAAAx3QgMAAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgBIUHJveHlEZXBvc2l0RmFjdG9yRQFAAAGyxAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlRQFAABQmcgMAAAAAAAAAAAAAABAxASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGFuIGFubm91bmNlbWVudC4ASQEgVGhpcyBpcyBoZWxkIHdoZW4gYSBuZXcgc3RvcmFnZSBpdGVtIGhvbGRpbmcgYSBgQmFsYW5jZWAgaXMgY3JlYXRlZCAodHlwaWNhbGx5IDE2ICBieXRlcykuAGRBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yRQFAAAJkiQEAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgABAQsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLiRQcm94eVR5cGVBBBBVASBBIGtpbmQgb2YgcHJveHk7IHNwZWNpZmllZCB3aXRoIHRoZSBwcm94eSBhbmQgcGFzc2VkIGluIHRvIHRoZSBgSXNQcm94eWFibGVgIGZpbHRlci5RASBUaGUgaW5zdGFuY2UgZmlsdGVyIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGNhbGwgbWF5IGJlIHByb3hpZWQgdW5kZXIgdGhpcyB0eXBlLgBNASBJTVBPUlRBTlQ6IGBEZWZhdWx0YCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBNVVNUIEJFIHRoZSB0aGUgKm1vc3QgcGVybWlzc2l2ZSogdmFsdWUuCBgJ14NGcnoO9YwPoDuvoyPLxRSI2SoapxN7A7+1DvwXRGNoZWNrX3Blcm1pc3Npb25zCBBjYWxsIChwcm94eV90eXBlQQRRAQT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2tBBBxhZ2FpbnN0QQRRAQT0IENoZWNrIGlmIG9uZSBgUHJveHlUeXBlYCBpcyBhIHN1YnNldCBvZiBhbm90aGVyIGBQcm94eVR5cGVgLgAsAAAYUGVvcGxlARhQZW9wbGUkEEtleXMAAQQCCCgEABRJASBUaGUgY3VycmVudCBpbmRpdmlkdWFscyB3ZSByZWNvZ25pc2UsIGJ1dCBub3QgbmVjZXNzYXJpbHkgeWV0IGluY2x1ZGVkIGluIGEgcmluZy4AdQEgTG9vay11cCBmcm9tIHRoZSBjcnlwdG8gKHB1YmxpYykga2V5IHRvIHRoZSBpbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkuIEFdASBwZXJzb24gY2FuIGhhdmUgdHdvIGRpZmZlcmVudCBlbnRyaWVzIGluIHRoaXMgbWFwIGlmIHRoZXkgcXVldWVkIGEga2V5IG1pZ3JhdGlvbiB3aGljaGQgaGFzbid0IGJlZW4gZW5hY3RlZCB5ZXQuADhDb3VudGVyRm9yS2V5cwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhQZW9wbGUAAQQCKAULBAAMSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAGUBIEltbXV0YWJsZSBJRCBvZiB0aGUgaW5kaXZpZHVhbCAoYFBlcnNvbmFsSWRgKSB0byBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBrZXkgYW5kIHN0YXR1cy4AOEFsaWFzVG9BY2NvdW50AAEEAuEDBAQABMwgQ29udmVyc2lvbiBvZiBhIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgTdAwQABMwgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgY29udGV4dHVhbCBhbGlhcy4ATEFjY291bnRUb1BlcnNvbmFsSWQAAQQCBCgEABC8IEFzc29jaWF0aW9uIG9mIGFuIGFjY291bnQgSUQgdG8gYSBwZXJzb25hbCBJRC4AIQEgTWFuYWdlZCB3aXRoIGBzZXRfcGVyc29uYWxfaWRfYWNjb3VudGAgYW5kIGB1bnNldF9wZXJzb25hbF9pZF9hY2NvdW50YC74IFJldmVyc2UgbG9va3VwIGlzIGluc2lkZSBgUGVvcGxlYCBzdG9yYWdlLCBpbnNpZGUgdGhlIHJlY29yZC4AOE5leHRQZXJzb25hbElkAQAoIAAAAAAAAAAABLggVGhlIG5leHQgZnJlZSBhbmQgbmV2ZXIgcmVzZXJ2ZWQgcGVyc29uYWwgSUQuAFxQZW9wbGVDb2xsZWN0aW9uQ3JlYXRlZAEAUQEEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFFBAAB0QcAEDBSaW5nRXhwb25lbnRJBQQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EJYAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABCQsAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIDQtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGAhELOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCAhELWQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAjgVCwQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI4MQsEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjg1CwQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAAOQsEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEAPQsEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAVUEAAHVBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZvaQEwAQMAcRcEMgV2yOsLBPQgVGhlIGxvY2F0aW9uIG9mIHRoZSB1c2VkIGN1cnJlbmN5LiBJdCBpcyBpbmZvcm1hdGlvbmFsIG9ubHkuAFBNYXhWb3RlQ2xhaW1EdXJhdGlvbigggFEBAAAAAAAEBQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBhIGNhc2UgdGltZXMgb3V0IGFuZCBjYW4gYmUgcmVhcGVkLgA8TWluQ2FzZUR1cmF0aW9uOBBYAgAABEEBIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhIGNhc2UgbXVzdCBzdGF5IG9wZW4gZm9yIHZvdGluZyBiZWZvcmUgaXQgY2FuIGJlIGNsb3NlZC4ARE1heFZvdGluZ0R1cmF0aW9uOBCwBAAABC0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIGZvciB3aGljaCBhIGNhc2UgY291bGQgc3RheSBvcGVuIGZvciB2b3RpbmcuAERNaW5UdXJub3V0Tm9taW5hbDgQAQAAAARFASBUaGUgbWluaW11bSBudW1iZXIgb2Ygdm90ZXMgYSBjYXNlIG11c3QgcmVjZWl2ZSBiZWZvcmUgYSB2ZXJkaWN0IGNhbiBiZSByZWFjaGVkLgBQTWluVHVybm91dFBlcmNlbnRhZ2VJCwQKCGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIHZvdGVyIGNvdW50IGEgY2FzZSBtdXN0IHJlY2VpdmWEIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFRWb3RpbmdQZW5hbHR5RHVyYXRpb244EMCoAAAE0CBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IGEgcGVuYWx0eSBpcyBhcHBsaWVkIGZvci4ARE1heFZvdGVzQ2xhaW1hYmxlOBAKAAAABPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGVzIGNsYWltYWJsZSBpbiBhIHNpbmdsZSBleHRyaW5zaWMuAFBPZmZjaGFpbldvcmtJbnRlcnZhbDgQlgAAAASwIFRoZSBpbnRlcnZhbCBhdCB3aGljaCBvZmZjaGFpbiB3b3JrZXIgcnVucy4ATENsZWFuVm90ZXNCYXRjaFNpemU4EOgDAAAEJQEgTWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3aWxsIGJlIGNsZWFuZWQgZHVyaW5nIG9mZmNoYWluIHdvcmtlciBydW4uAGhWb3Rlc09wZW5Gb3JDbGFpbXNEdXJhdGlvbjgQWAIAAAgVASBUaGUgdGltZSBpbiBzZWNvbmRzIGR1cmluZyB3aGljaCB2b3RlcyBjYW4gYmUgY2xhaW1lZCBvbiBkb25lIGNhc2VzLsAgTWVhc3VyZWQgZnJvbSB0aGUgdGltZSB0aGUgY2FzZSBiZWNvbWVzICdEb25lJy4AVE1pbmltdW1Wb3RlclRocmVzaG9sZDgQAwAAAAhlASBUaGUgbWluaW11bSBudW1iZXIgb2YgYWN0aXZlIHZvdGVycyByZXF1aXJlZCB0byBhbGxvdyB2b3RpbmcuIFdoZW4gdGhpcyB0aHJlc2hvbGQgaXMgbm90hCBtZXQsIG9wZW4gY2FzZXMgY2Fubm90IHRpbWUgb3V0LgA8bW9iX3J1bGVfcG90X2lkBIBtb2RsTW9iUndyZHMAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4AQG1vYl9ydWxlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL21vYi1ydWxlICAgCFEBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gbW9iGCBydWxlLgABTQsAAAA0AAAoUHJvb2ZPZkluawEoUHJvb2ZPZkluaywoQ2FuZGlkYXRlcwABBAIEUQsEAARJASBUaGUgY3VycmVudCBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIGFyZSBnb2luZyB0aHJvdWdoIHRoZSBwcm9vZi1vZi1pbmsgcHJvY2Vzcy4AGFBlb3BsZQABBAUoYQsEAAhxASBUaGUgcGVyc29uYWwgaWRlbnRpdGllcyB3aGljaCB3ZSB0cmFjazsgYWxsIHdoaWNoIGhhdmUgYmVlbiByZWNvZ25pemVkIHRocm91Z2ggcHJvb2Ytb2YtaW5rNCBhcmUgaW4gaGVyZS4APFJlZmVycmFsVGlja2V0cwABBAUobQsEAAQJASBUaGUgdGlja2V0cyBzdG9yZWQgb24tY2hhaW4gcmVhZHkgdG8gYmUgdXNlZCB0byByZWZlciBjYW5kaWRhdGVzLgA4RGVzaWduRmFtaWxpZXMAAQQCxQN5CwQABKggVGhlIGN1cnJlbnQgZGVzaWduIGZhbWlsaWVzIHdlIHJlY29nbmlzZS4AQENvbW1pdHRlZERlc2lnbnMAAQgCAn0LgQsEAATUIFRoZSBjb21taXR0ZWQgZGVzaWducyB3aGljaCBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZS4APEFsbG9jYXRpb25Db3VudAEAOBAAAAAABLAgVGhlIG51bWJlciBvZiBqdWRnZW1lbnRzIGN1cnJlbnRseSBvbmdvaW5nLgA0Q29uZmlndXJhdGlvbgEAfQSgQJ0EAAQAAADoAwAAAAAABAAAAAAgAAAAAAAgAAAAAAAIAAAAQJ0EAARMIFRoZSBjb25maWd1cmF0aW9uLgBAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABPggTnVtYmVyIG9mIGludml0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCAoULEAQADB0BIFBlbmRpbmcgaW52aXRhdGlvbnMgZm9yIGVhY2ggaW52aXRlciAoYW4gYWNjb3VudCB0aGF0IGludml0ZXMgb3RoZXJzKS4AWQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cywgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLgBsUmVmZXJyZXJSZWltYnVyc2VtZW50VmFsdWVzAACBBAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlcnMsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaCB2YWx1ZW0BIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdEEBIHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AbFJlZmVycmVkUmVpbWJ1cnNlbWVudFZhbHVlcwAAgQQEABRhASBUaGUgdmFsdWVzIG9mIHRoZSByZWltYnVyc2VtZW50IGF3YXJkZWQgdG8gcmVmZXJyZWQgcGVvcGxlLCBhbG9uZyB3aXRoIGhvdyBtYW55IG9mIGVhY2hxASB2YWx1ZSBzaG91bGQgYmUgYXdhcmRlZC4gVGhlc2UgdmFsdWVzIGFyZSBzdG9yZWQgaW4gcmV2ZXJzZSBvcmRlciBvZiB0aGVpciBwcmlvcml0eSwgc28gdGhlVQEgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmUgdG8gYmUgdXNlZCBieSB0aGUgcmVpbWJ1cnNlbWVudCBzeXN0ZW0uAEUBIFN0b3JhZ2UgaXRlbSBuYW1lIGtlZXBzIHRoZSBsZWdhY3kgcHJlZml4IGZvciBzdG9yYWdlIHJlYWRhYmlsaXR5IGNvbXBhdGliaWxpdHkuAAFlBAAB3QcADEhNYXhBY3RpdmVSZWZlcnJhbHM4EAoAAAAI9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIHJlZmVycmFscyBhIHVzZXIgY2FuIGhhdmUgb3Blbi5YIEl0IGNhbm5vdCBleGNlZWQgMjAwLgAUUG90SWSxCSBQb0lQb3RfXyDsIEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSByZXdhcmQgcG90IGlzIGdlbmVyYXRlZC4AKQEgVGhlIGFjY291bnQgbXVzdCBiZSBmdW5kZWQgc28gcmV3YXJkcyBjYW4gYmUgcGFpZCBkdXJpbmcgcmVnaXN0cmF0aW9uIGFuZGAgcmVmZXJyYWwgcmV3YXJkIGNsYWltcy4AEQEgVGhlIGBQYWxsZXRJZGAgbXVzdCBiZSBhIGNvbnN0YW50IGFzIGl0IGlzIGV4cG9zZWQgaW4gdGhlIG1ldGFkYXRhLmUBIENoYW5naW5nIHRoaXMgdmFsdWUgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZSBjYW4gYmUgZG9uZSBhdCBhbnkgdGltZSwgdGhlIG5ldyBhY2NvdW50IHdpbGyQIHRoZW4gbmVlZCB0byBiZSBmdW5kZWQgYWNjb3JkaW5nbHkuAExwcm9vZl9vZl9pbmtfcG90X2lkBIBtb2RsUG9JUG90X18AAAAAAAAAAAAAAAAAAAAAAAAAAATUIFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb3QgdXNlZCBmb3IgcmV3YXJkIHRyYW5zZmVycy4AAYkLAAg8VGlja2V0U2lnbmF0dXJlcQQMiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy4AAQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpUaWNrZXRQdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuGFRpY2tldAQEmCBUaWNrZXQgdHlwZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADUAABBHYW1lARBHYW1lUFBTdG9yZWRQaGFzZUR1cmF0aW9ucwAA2QQEAAz0IFBoYXNlLWR1cmF0aW9uIG92ZXJyaWRlIHNldCBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdIHZpYeAgYHNldF9nYW1lX3BoYXNlc2AuIGBOb25lYCBtZWFucyB0aGUgY2hhaW4gZmFsbHMgYmFjayB0b3AgYFQ6OkRlZmF1bHRQaGFzZUR1cmF0aW9uc2AuAERQbGF5RGVwb3NpdEFtb3VudAEARQFAAMgXqAQAAAAAAAAAAAAAABA9ASBUaGUgY29uZmlndXJlZCBuYXRpdmUgYmFsYW5jZSBoZWxkIGFzIGRlcG9zaXQgd2hlbiBhbiBhY2NvdW50IHBsYXllciBzaWducyB1cC4AMQEgVGhpcyB2YWx1ZSBpcyBvbmx5IHVzZWQgZm9yIG5ldyBkZXBvc2l0IGNyZWF0aW9uczsgZXhpc3RpbmcgYWN0aXZlIGRlcG9zaXRzqCByZXRhaW4gdGhlIGFtb3VudCB0aGV5IHdlcmUgY3JlYXRlZCB3aXRoLgA8QXJjaGl2ZWRQbGF5ZXJzAAEEAgkFjQsEAAQpASBBbGwgdGhlIHBsYXllciB3aXRoIHplcm8gc2NvcmUgYnV0IHN0aWxsIG9uYm9hcmRlZCBpbiBpbmRpdl9wYWxsZXRfc2NvcmUuABxQbGF5ZXJzAAEEAgkFkQsEABBwIEFsbCB0aGUgcGxheWVyIGluIHRoZSBnYW1lLgAhASBBY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiB0aGlzIHN0b3JhZ2UgYW5kIHN0YXRlbWVudCBhY2NvdW50cyBpbqQgW2BTdG10QWNjb3VudFRvQWxpYXNgXSBtdXN0IG5vdCBvdmVybGFwLgAkR2FtZUluZGV4AQA4EAAAAAAEYCBUaGUgY3VycmVudCBnYW1lIGluZGV4LgAQR2FtZQAAqQsEAATMIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG5leHQgZ2FtZSBvciBvbmdvaW5nIGdhbWUuACxHYW1lSGlzdG9yeQABBAU4OAQACGEBIFRoZSBtYXBwaW5nIGZyb20gcGFzdCBnYW1lcywgaWRlbnRpZmllZCBieSB0aGVpciBnYW1lIGluZGV4LCB0byB0aGUgc3RhcnQgdGltZXN0YW1wLCBpbnggc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4AXFBsYXllckF0dGVuZGFuY2VIaXN0b3J5AQEEAgkFxQsEAAgxASBFbnRyaWVzIG9mIHByZXZpb3VzbHkgYXR0ZW5kZWQgZ2FtZXMgb2YgZWFjaCBwbGF5ZXIuIFJldGFpbmVkIG9uIGBvZmZib2FyZGAJASBhbmQgYGtpY2tvdXRgLiBCb3VuZGVkIGJ5IGBNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoYCBwZXIgcGxheWVyLgBQR2FtZVBhcnRpY2lwYW50Q291bnQBAQQFODgQAAAAABDwIENvdW50IG9mIGNvbmZpcm1lZCBhdHRlbmRlZXMgcGVyIGdhbWUgaW5kZXguIEluY3JlbWVudGVkIGJ5GQEgW2BQYWxsZXQ6Om5vdGVfYXR0ZW5kYW5jZWBdIGZvciBldmVyeSBhdHRlbmRhbmNlIGVudHJ5LCByZWdhcmRsZXNzIG9m/CB3aGV0aGVyIHRoZSBwbGF5ZXIgaXMgcmVjb3JkZWQgYXMgYEFjY291bnRPclBlcnNvbjo6UGVyc29uYCBvcvQgYEFjY291bnRPclBlcnNvbjo6QWNjb3VudGAuIEV4cG9zZWQgZm9yIG9mZi1jaGFpbiBjb25zdW1lcnMuADRJbmRleFRvUGxheWVyAAEEBckLCQUEAATkIFRoZSBtYXBwaW5nIGZyb20gcm91bmQgaW5kZXggYW5kIHBsYXllciBpbmRleCB0byBwbGF5ZXIuADRQbGF5ZXJUb0luZGV4AAEEAgkFzQsEAATgIFRoZSBtYXBwaW5nIGZyb20gcGxheWVyIHRvIHRoZWlyIGluZGljZXMgaW4gZWFjaCByb3VuZC4ARFNodWZmbGVSZWNvZ25pemVkAAEIBQbRCwkFBAAEAQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2YgcmVjb2duaXplZCBwZW9wbGUuAFBTaHVmZmxlTm90UmVjb2duaXplZAABCAUG0QsJBQQABFUBIFN0b3JhZ2UgdXNlZCB0byBjb21wdXRlIHRoZSBzaHVmZmxlIG9yZGVyIG9mIG5vdCByZWNvZ25pemVkIHBlb3BsZSwgaS5lLiBjYW5kaWRhdGVzLgA0R2FtZVNjaGVkdWxlcwEA1QsEAAAAQEF2YWlsYWJsZUludml0ZXMBAQQCBDgQAAAAAAToIE51bWJlciBvZiBpbnZpdGVzIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCAoULEAQAEIggUGVuZGluZyBpbnZpdGVzIGZvciBlYWNoIGludml0ZXIuAGkBIElmIHRoZSBrZXkgYChpbnZpdGVyLCB0aWNrZXQpYCBleGlzdHMgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLCBmcm9tNCB0aGUgaW52aXRlci4ALExpdGVJbnZpdGVzAAEEAggEBAAIaQEgVGhlIGFjY291bnQgZWFjaCBsaXRlIHBlcnNvbiBkZXNpZ25hdGVkIHRvIHBsYXkgd2l0aCwga2V5ZWQgYnkgdGhlIGxpdGUgcGVyc29uJ3MgYWxpYXMgaW68IFtgaW5kaXZfcGFsbGV0X3Njb3JlOjpQYWxsZXQ6OnNjb3JlX2NvbnRleHRgXS4ASEFsaWFzVG9TdG10QWNjb3VudAABBAIIBAQAHFkBIE1hcHBpbmcgZnJvbSBhbGlhcyB0byB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN0YXRlbWVudCBzdG9yZS4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYFN0bXRBY2NvdW50VG9BbGlhc2BdLgDsIFRoaXMgaXMgcmVtb3ZlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgZ2V0cyBhcmNoaXZlZC5VASBUaGlzIGlzIHVwZGF0ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIHNpZ25zIHVwIHdpdGggYW5vdGhlciBzdGF0ZW1lbnQgYWNjb3VudC4ASFN0bXRBY2NvdW50VG9BbGlhcwABBAIECAQAJFkBIE1hcHBpbmcgZnJvbSB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggc3RhdGVtZW50IHN0b3JlIHRvIHRoZSBhbGlhcy4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYEFsaWFzVG9TdG10QWNjb3VudGBdLuwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBlASBTdGF0ZW1lbnQgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBhY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiBbYFBsYXllcnNgXSBtdXN0NCBub3Qgb3ZlcmxhcC4AYENvbW11bmljYXRpb25JZGVudGlmaWVycwABBAIEdQQEAAxpASBUaGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVycyB1c2VkIGJ5IHBsYXllcnMgdG8gZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBQMlAgY29ubmVjdGlvbiBpbm0BIG9yZGVyIHRvIHBsYXkgdGhlIGdhbWUuIFRoZSBhY2NvdW50IHVuZGVyIHdoaWNoIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIgaXMgcmVnaXN0ZXJlZBkBIHNob3VsZCBiZSB0aGUgc2FtZSBhY2NvdW50IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgABjQQAAeEHADQkTWF4Um91bmRzOBADAAAADKAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJvdW5kcyBpbiBhIGdhbWUuAOggTm90ZTogdGhlIGFjdHVhbCBudW1iZXIgb2Ygcm91bmRzIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUuADBNYXhHcm91cFNpemU4EAYAAAAMqCBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgAZASBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1pbkdyb3VwU2l6ZTgQAAAAACCoIFRoZSBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuAGUBIFdoZW4gc2NoZWR1bGluZyBhIGdhbWUgdGhlIHZhbHVlIGZvciBgbWF4X2dyb3VwX3NpemVgIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBtaW5pbXVtICsgMS4AJQEgSW4gb3JkZXIgdG8gaGF2ZSBubyBzaW5nbGUtcGxheWVyIGdyb3VwcywgdGhpcyB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDIuAFEBIE5vdGU6IHRoZSBhY3R1YWwgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUsIGl0IGlzWCBgbWF4X2dyb3VwX3NpemUgLSAxYC4AVE5vblBsYXlpbmdLaWNrb3V0VGltZTgQgFM7AAwVASBUaGUgdGltZSBhZnRlciB3aGljaCBhIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGNhbiBiZSBraWNrZWQgb3V0LgC8IFRoaXMgaXMgb25seSBmb3IgYWNjb3VudCBwbGF5ZXJzLCBub3QgcGVyc29ucy4ASERlZmF1bHRQbGF5RGVwb3NpdEUBQADIF6gEAAAAAAAAAAAAAAAIUQEgVGhlIGRlZmF1bHQgcGxheSBkZXBvc2l0IChuYXRpdmUgYmFsYW5jZSkgdXNlZCB3aGVuIFtgUGxheURlcG9zaXRBbW91bnRgXSBoYXMgbmV2ZXJwIGJlZW4gZXhwbGljaXRseSBjb25maWd1cmVkLgBURGVmYXVsdFBoYXNlRHVyYXRpb25z2QRQLAEAADwAAAAeAAAAWAIAADwAAAAQ7CBUaGUgZGVmYXVsdCBkdXJhdGlvbnMgb2YgZWFjaCBnYW1lIHBoYXNlLCBpbiBzZWNvbmRzLiBXaGVu/CBgU3RvcmVkUGhhc2VEdXJhdGlvbnNgIGlzIGBTb21lYCwgdGhvc2UgdmFsdWVzIHRha2UgcHJlY2VkZW5jZdggb3ZlciB0aGlzIGRlZmF1bHQ7IHRoZSBvdmVycmlkZSBpcyBzZXQgYXQgcnVudGltZSB2aWF0IFtgUGFsbGV0OjpzZXRfZ2FtZV9waGFzZXNgXS4AQE1heEdhbWVTY2hlZHVsZXM4EAwAAAAE7CBUaGUgTWF4aW11bSBudW1iZXIgb2YgZ2FtZSBzY2hlZHVsZXMgdGhlIHBhbGxldCBjYW4gc3RvcmUuAGRNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoOBAMAAAACF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXN0IGdhbWVzIGZvciB3aGljaCBwbGF5ZXIgYXR0ZW5kYW5jZSBpcyBzdG9yZWQuIEFueSBhdHRlbmRhbmNlAQEgZW50cmllcyBvbGRlciB0aGFuIHRoaXMgd2lsbCBiZSBpbW1pbmVudGx5IHB1cmdlZCBmcm9tIHN0b3JhZ2UuADRBaXJkcm9wU291cmNlBIBtb2RscG9wL2dhZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAjkIEFjY291bnQgdGhhdCBmdW5kcyB0aGUgcGVyLWdhbWUgYWlyZHJvcCBwcml6ZSBhbGxvY2F0aW9uDQEgKGBtYXhfd2lubmVycyDDlyBhc3NldF9hbW91bnRgIGlzIHRyYW5zZmVycmVkIHBlciBzY2hlZHVsZWQgZ2FtZSkuAGxwcm9vZl9vZl9vd25lcnNoaXBfbXNnX2Jhc2UIgHBvcDpnYW1lOnN0bXRfYWNjb3VudF9mb3JfYWxpYXM6EBkBIFRoZSBiYXNlIG1lc3NhZ2Ugb2YgdGhlIHByb29mIG9mIG93bmVyc2hpcCBvZiBhbiBhY2NvdW50IGJ5IGFuIGFsaWFzLgA1ASBUaGUgZnVsbCBtZXNzYWdlIGlzIHRoaXMgYmFzZSBjb25jYXRlbmF0ZWQgdG8gdGhlIGFsaWFzIGFuZCB0aGVuIGhhc2hlZCB3aXRorCBgYmxha2UyXzI1NmAgKGJsYWtlMiB3aXRoIDI1NiBiaXQgb3V0cHV0KS4AOG1heF9lbmFjdG1lbnRzOBAQAAAAEDkBIE1heGltdW0gbnVtYmVyIG9mIGZ1bGwgZWFybHktYXR0ZW5kYW5jZSBlbmFjdG1lbnRzIGEgc2luZ2xlIGByZXBvcnRgIGNhbGwgY2FuGQEgdHJpZ2dlcjogZXZlcnkgdW5pcXVlIGNvLXBsYXllciBhY3Jvc3MgYWxsIHJvdW5kcywgcGx1cyB0aGUgcmVwb3J0ZXIuANwgVXNlZCBhcyB0aGUgcHJlLWRpc3BhdGNoIG92ZXJjaGFyZ2UgYm91bmQgb24gYHJlcG9ydGAuAEhtYXhfcmVjZWl2ZWRfdm90ZXM4EA8AAAAIVQEgW2BTZWxmOjptYXhfYXR0ZXN0YXRpb25zYF0gb3ZlciBhbnkgZ2FtZSB0aGUgcnVudGltZSBhbGxvd3M6IHRoZSBtb3N0IHZvdGVzIGEgc2luZ2xlIQEgcGxheWVyIGNhbiByZWNlaXZlLCBhbmQgZXF1YWxseSB0aGUgbW9zdCBjby1wbGF5ZXJzIHRoZXkgY2FuIHJlcG9ydCBvbi4AVGFpcmRyb3BfZXZlbnRfaWRfYmFzZdkLbHBvcDpnYW1lOmFpcmRyb3A6ICAgICAgICAgIAxZASBUaGUgYmFzZSBzdHJpbmcgZm9yIHRoZSBhaXJkcm9wIGV2ZW50IGlkIGRlcml2YXRpb24uIFRoZSBhY3R1YWwgZXZlbnQgaWQgaXMgdGhpcyBiYXNlHQEgY29uY2F0ZW5hdGVkIHdpdGggdGhlIGFpcmRyb3AgaW5kZXggYW5kIHRoZSBnYW1lIGluZGV4IEJFIGVuY29kZWQgKHNlZXwgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSkuAAHdCwAQPFRpY2tldFNpZ25hdHVyZXEEBIggU2lnbmF0dXJlIHVzZWQgdG8gdmVyaWZ5IHRpY2tldHMuQEFjY291bnRTaWduYXR1cmVxBARgIFNpZ25hdHVyZSBmb3IgYWNjb3VudHMuOEFpcmRyb3BBc3NldElkaQEEkCBBc3NldCBpZCB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLkxBaXJkcm9wQXNzZXRCYWxhbmNlRQEEpCBBc3NldCBiYWxhbmNlIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uADcAABRTY29yZQEUU2NvcmUsMFBhcnRpY2lwYW50cwABBAIJBeELBAAEfCBUaGUgcGFydGljaXBhbnRzIGluZm9ybWF0aW9ucy4ATFBlcnNvbmhvb2RUaHJlc2hvbGQBAAwEAATIIFRoZSBzY29yZSB0aHJlc2hvbGQgcmVxdWlyZWQgdG8gcmVhY2ggcGVyc29uaG9vZC4AbFBlcnNvbmhvb2RUaHJlc2hvbGRTY2hlZHVsZQEA9QR8GIgTAAABECcAAAMgTgAABriIAAAKUMMAAA//////FSgdASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVycywgc29ydGVkIGJ5HQEgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4gRWFjaCB0aWVyIHNwZWNpZmllcyB0aGUgc2NvcmUgYR0BIHBhcnRpY2lwYW50IG11c3QgcmVhY2ggdG8gYmUgcmVjb2duaXplZCBhcyBhIHBlcnNvbiBhdCB0aGF0IHBvcHVsYXRpb24cIGxldmVsLgAFASBEZWZhdWx0cyB0byBbYERlZmF1bHRQZXJzb25ob29kVGhyZXNob2xkVGllcnNgXSB1bnRpbCBnb3Zlcm5hbmNlAQEgb3ZlcnJpZGVzIGl0IHZpYSBbYFBhbGxldDo6c2V0X3BlcnNvbmhvb2RfdGhyZXNob2xkX3NjaGVkdWxlYF0uABEBIEEgbmV3IHNjaGVkdWxlIHRha2VzIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgcmVwb3J0IHNlc3Npb278IHdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAFBBYnNlbmNlR3JhY2VTY2hlZHVsZQEA6QSUGIgTAAAGBRAnAAAFBCBOAAAEA7iIAAADAlDDAAACAf////8GASApASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBhYnNlbmNlLWdyYWNlIHRpZXJzLCBzb3J0ZWQgYnkgYXNjZW5kaW5nDQEgcG9wdWxhdGlvbiBzaXplIHRocmVzaG9sZC4gRWFjaCB0aWVyIHNwZWNpZmllcyBob3cgbWFueSBtaXNzZXMgYXJlDQEgdG9sZXJhdGVkIHdpdGhpbiByZWNlbnQgZ2FtZXMgYmVmb3JlIGEgcGFydGljaXBhbnQncyBwZXJzb25ob29kIGlzLCBzdXNwZW5kZWQuAB0BIERlZmF1bHRzIHRvIFtgRGVmYXVsdEFic2VuY2VHcmFjZVRpZXJzYF0gdW50aWwgZ292ZXJuYW5jZSBvdmVycmlkZXMgaXQNASB2aWEgW2BQYWxsZXQ6OnNldF9hYnNlbmNlX2dyYWNlX3NjaGVkdWxlYF0uIEFuIGVtcHR5IHNjaGVkdWxlIChzZXT4IGV4cGxpY2l0bHkgYnkgZ292ZXJuYW5jZSkgZGlzYWJsZXMgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseS4AREFic2VuY2VHcmFjZVJhdGlvAQBNCggAABgVASBUaGUgY3VycmVudGx5IGFjdGl2ZSBhYnNlbmNlLWdyYWNlIHJhdGlvIGAoYWxsb3dlZF9taXNzZXMsIHdpbmRvdylgLCUBIGRlcml2ZWQgZnJvbSBgQWJzZW5jZUdyYWNlU2NoZWR1bGVgIGFuZCB0aGUgY3VycmVudCBhY3RpdmUtcGVyc29uIGNvdW50LgARASBVcGRhdGVkIGVhY2ggdGltZSBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcnVucyAoYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5HQEgYXR0ZW5kYW5jZSByZXBvcnQgc2Vzc2lvbikuIFJlYWQgYnkgYHNldF9hdHRlbmRhbmNlYCB0byBkZWNpZGUgd2hldGhlcowgYSBwYXJ0aWNpcGFudCBzaG91bGQgYmUgc3VzcGVuZGVkLgBIQ3VycmVudFJvdW5kUG9pbnRzAQA4EAAAAAAEtCBUaGUgYWNjdW11bGF0ZWQgcG9pbnRzIGluIHRoZSBjdXJyZW50IHJvdW5kLgBEQ3VycmVudFJvdW5kSW5kZXgBADgQAAAAAByAIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3VuZC4AXQEgVGhpcyBtdXN0IGJlIHRoZSBzdW0gb2YgYWxsIHBvaW50cyBhY2N1bXVsYXRlZCBpbiBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgIGZvciB0aGU8IGN1cnJlbnQgcm91bmQuAFEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYFJvdW5kc1BvaW50c0ZvclBhcnRpY2lwYW50YCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgBoUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnQBAQgCAvELOBAAAAAAGNAgVGhlIHBvaW50cyBhY2N1bXVsYXRlZCBieSBhIHBhcnRpY2lwYW50IGluIGEgcm91bmQuAFEBIEZvciB0aGUgY3VycmVudCByb3VuZCwgdGhpcyBzdG9yYWdlIG11c3QgYmUgdXBkYXRlZCBhbG9uZ3NpZGUgYEN1cnJlbnRSb3VuZFBvaW50c2AuADEBICoqV0FSTklORyoqOiBUaGlzIHN0b3JhZ2UgbXVzdCBiZSBjb25zaXN0ZW50IHdpdGggYEN1cnJlbnRSb3VuZFBvaW50c2AsIHVzZbQgYGZuIGFkZF9wb2ludHNfdG9fcGFydGljaXBhbnRgIHRvIHVwZGF0ZSBpdC4AMFJvdW5kUGF5b3V0cwABBAI49QsEABCoIFRoZSByb3VuZHMgdGhhdCBhcmUgY3VycmVudGx5IHBheWluZyBvdXQuABEBIFJvdW5kcyBhcmUgcGF5aW5nIG91dCBhZnRlciB0aGV5IGhhdmUgZmluaXNoZWQgYWNjdW11bGF0aW5nIHBvaW50cy4lASBXaGVuIGFsbCB0aGVpciBwb2ludHMgaGF2ZSBiZWVuIHBhaWQgb3V0LCB0aGV5IGFyZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJvdW5kUGxhbm5pbmcAAPkLBAAM/CBUaGUgcGxhbm5pbmcgb2YgdGhlIGN1cnJlbnQgcm91bmQgdGhhdCBpcyBhY2N1bXVsYXRpbmcgcG9pbnRzLgA9ASBJZiBub25lIHRoZSBjdXJyZW50IHJvdW5kIGlzIG9uZ29pbmcgYW5kIHdpbGwgYmUgcGxhbm5lZCBvbiB0aGUgbmV4dCBzY2hlZHVsZS4AOFJvdW5kU2NoZWR1bGVzAQD9CwQABLggRGVzY3JpYmVzIHRoZSBzY2hlZHVsZXMgb2YgdGhlIHBheW91dCByb3VuZHMuAAHdBAAB5QcAFBhTdWZmaXgYFBB0ZXN0BNwgTmV0d29yayBzdWZmaXggYXBwZW5kZWQgdG8gdGhpcyBwYWxsZXQncyBwcm9kdWN0IG5hbWUuAFBDdXJyZW5jeUxvY2F0aW9uSW5mb2kBMAEDAHEXBDIFdsjrCwT0IFRoZSBsb2NhdGlvbiBvZiB0aGUgdXNlZCBjdXJyZW5jeS4gSXQgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgBQT2ZmY2hhaW5Xb3JrSW50ZXJ2YWw4EAIAAAAEsCBUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggb2ZmY2hhaW4gd29ya2VyIHJ1bnMuADBzY29yZV9wb3RfaWQEgG1vZGxzY29yZXBvdAAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgA0c2NvcmVfY29udGV4dAiAoC742QFIID0bdXPijARMe0bkJ5N2a/bXaH712oYCSo4IWQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBzY29yZSAgcGFsbGV0LgABCQwAAAA4AAAoTmZ0Q3JlZGl0cwEoTmZ0Q3JlZGl0cyBYQXdhcmRlZE5mdENsYWltQ3JlZGl0cwEBCAUC8QsNDEAAAAAAAAAAAAAAAAAAAAAARF0BIFdoaWNoIGNyZWRpdHMgYSBnYW1lIGhhcyBhbHJlYWR5IGF3YXJkZWQgYSBjbGFpbWFudCwga2V5ZWQgYnkgZ2FtZSBpbmRleCBhbmQgY2xhaW1hbnQuFQEgVGhlIHZhbHVlIG1hcmtzIHRoZSBzbG90cyBvZiBbYFBhbGxldDo6Y3JlZGl0X3Nsb3RgXSB0aGF0IGFyZSB0YWtlbi4AXQEgQm9va2tlZXBpbmcgZm9yIFtgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YF0sIGl0cyBvbmx5IHJlYWRlciwgYW5kIHdoYXQgbWFrZXMgYW4tASBhd2FyZCBpZGVtcG90ZW50OiBgcmVwb3J0YCBhd2FyZHMgYSBgUGVyc29uYCB2b3RlJ3MgY3JlZGl0IG9uIHRoZSBzcG90IGFuZGEBIGBhd2FyZF9hdHRlbmRhbmNlX2NyZWRpdHNgIGxhdGVyIHdhbGtzIHRoYXQgc2FtZSBjcmVkaXQsIHdoaWNoIHVuZ3VhcmRlZCB3b3VsZCBnaXZlIHRoZVUBIGNsYWltYW50IGEgc2Vjb25kIGxlYWYsIGluIGEgc2Vjb25kIGJsb2NrJ3MgdHJlZSwgYW5kIHR3byBtaW50cyBmcm9tIG9uZSBjcmVkaXQuIE9mZmUBIGNoYWluIGl0IGlzIG5vdCBuZWVkZWQsIEFzc2V0IEh1YiBtaW50aW5nIGFnYWluc3QgYSByb290IGl0IGlzIHNlbnQgYW5kIGEgd2FsbGV0IHJlYWRpbmdZASBbYE5mdENsYWltQ3JlZGl0QmxvY2tzYF0gYW5kIHRoZSBibG9ja3MnIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50cy4gT25lIHdvcmQgcGVyaQEgY2xhaW1hbnQgcmF0aGVyIHRoYW4gYW4gZW50cnkgcGVyIGNyZWRpdCwgYmVjYXVzZSB0aGF0IGVudHJ5IGNvdW50IGlzIHdoYXQgdGhlIGJhY2tmaWxsJ3NcIHByb29mIHNpemUgaXMgbWFkZSBvZi4AEQEgT25seSB0aGUgY3VycmVudCBnYW1lIGlzIGV2ZXIgaW4gaGVyZSwgZW50cmllcyBiZWluZyBkcmFpbmVkIGJlZm9yZWEBIGBwbGF5ZXJfcHJvY2Vzc19zdGVwMmAga2lsbHMgdGhlIGdhbWUgYW5kIGBuZXdfZ2FtZWAgcmVmdXNpbmcgdG8gc3RhcnQgb25lIHdoaWxlIGEgZ2FtZWEBIGV4aXN0cy4gVGhlIGdhbWUga2V5IHN0aWxsIGVhcm5zIGl0cyBwbGFjZTogYSBzbG90IG1lYW5zIG5vdGhpbmcgb3V0c2lkZSB0aGUgZ2FtZSB3aG9zZVkBIGdyb3VwcyBpdCBpbmRleGVzLCBzbyB3ZXJlIGEgZHJhaW4gbGVmdCBoYWxmIGRvbmUsIGFuIHVua2V5ZWQgZW50cnkgd291bGQgcmVhZCBhcyB0aGX4IG5leHQgZ2FtZSdzIGF3YXJkZWQgc2xvdHMgYW5kIHNpbGVudGx5IHN3YWxsb3cgdGhvc2UgY3JlZGl0cy4AUE5mdENsYWltQ3JlZGl0QmxvY2tzAQEEAgkFBQUEAChdASBUaGUgYmxvY2tzIGEgY2xhaW1hbnQgd2FzIGF3YXJkZWQgYXQgbGVhc3Qgb25lIE5GVCBjbGFpbSBjcmVkaXQgaW4sIGluIGFzY2VuZGluZyBvcmRlclQgYW5kIHdpdGhvdXQgcmVwZWF0cy4AcQEgRWFjaCBlbnRyeSBrZXlzIGFuIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IHdob3NlIHRyZWUgaG9sZHMgYSBsZWFmIG9mIHRoZSBjbGFpbWFudCdzLGEBIHNvIHRoaXMgYW5zd2VycyB3aGljaCByb290cyB0aGUgY2xhaW1hbnQgaGFzIHNvbWV0aGluZyB0byBtaW50IGFnYWluc3Qgd2l0aG91dCBzY2FubmluZ3EBIGV2ZXJ5IGJsb2NrLiBUaGUgcHJvb2YgaXRzZWxmIHN0aWxsIGNvbWVzIGZyb20gdGhhdCBibG9jaydzIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50czugIHRoZSBpbmRleCBzdGF0ZXMgd2hpY2ggYmxvY2tzIHRvIGZldGNoLgBZASBCbG9ja3MgYXJlIGFwcGVuZGVkIGFzIGNyZWRpdHMgYXJlIGF3YXJkZWQgYW5kIG5ldmVyIHJlbW92ZWQgb25jZSBtaW50ZWQuIFRoZSBsaXN0IGlzEQEgdGhlcmVmb3JlIGEgcmluZyBib3VuZGVkIGJ5IFtgQ29uZmlnOjpNYXhDcmVkaXRCbG9ja3NQZXJDbGFpbWFudGBdLgBQTmZ0Q2xhaW1DcmVkaXRBd2FyZHMBAQQFOBEMBAAwbQEgVGhlIE5GVCBjbGFpbSBjcmVkaXRzIGVhY2ggcmV0YWluZWQgYmxvY2sgYXdhcmRlZCwgaW4gYXdhcmQgb3JkZXIsIHdoaWNoIGFyZSB0aGUgcHJlaW1hZ2VzfCBvZiB0aGF0IGJsb2NrJ3MgTWVya2xlIGxlYXZlcy4AaQEgVGhlIGN1cnJlbnQgYmxvY2sncyBlbnRyeSBkb3VibGVzIGFzIHRoZSBidWZmZXIgdGhlIG5leHQgYmxvY2sncyBgb25faW5pdGlhbGl6ZWAgY29tcHV0ZXNRASB0aGUgcm9vdCBvdmVyOiBgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YCBhcHBlbmRzIHRvIGl0LCBhbmQgb25jZSB0aGUgcm9vdCBpc2UBIHJlY29yZGVkIHRoZSBlbnRyeSBzdGF5cyBhcyBpdCBpcywgc28gYSBjbGFpbSBjYW4gYmUgcHJvdmVuIGZyb20gc3RhdGUgYWxvbmUuIFRoZSBvbGRlc3TYIGVudHJ5IGlzIHJlbW92ZWQgd2hlbiBhIG5ldyByb290IHB1c2hlcyBpdCBvdXQgb2YgdGhlJQEgW2BDb25maWc6Ok1heFJldGFpbmVkQXdhcmRCbG9ja3NgXSB3aW5kb3csIHdoaWNoIGlzIHdoYXQgYm91bmRzIHRoZSBtYXAuAGUBIFRoZSBhd2FyZHMgYXJlIGtlcHQgcmF0aGVyIHRoYW4gdGhlIGxlYXZlcyB0aGV5IGhhc2ggdG8sIGJlY2F1c2UgYSBtaW50IG5lZWRzIHRoZSBjcmVkaXRRASBpdHNlbGY6IEFzc2V0IEh1YiByZWNvbXB1dGVzIHRoZSBsZWFmIGZyb20gdGhlIGNsYWltYW50IGFuZCB0aGUgY3JlZGl0IHRoZSBjbGFpbWFudFEBIHByZXNlbnRzLCBzbyBhIGxlYWYgYWxvbmUgd291bGQgc3RpbGwgbGVhdmUgdGhlIGNyZWRpdCB0byBiZSByZWNvdmVyZWQgZnJvbSBldmVudHMuAGROZnRDbGFpbUNyZWRpdEF3YXJkQmxvY2tzAQAdDAQAGGEBIFRoZSBhd2FyZCBibG9ja3Mgd2hvc2UgW2BOZnRDbGFpbUNyZWRpdEF3YXJkc2BdIGFyZSBzdGlsbCBvbiBjaGFpbiwgaW4gYXNjZW5kaW5nIG9yZGVyLgBlASBBIHJpbmcgYm91bmRlZCBieSBbYENvbmZpZzo6TWF4UmV0YWluZWRBd2FyZEJsb2Nrc2BdOiByZWNvcmRpbmcgYSByb290IGFwcGVuZHMgaXRzIGJsb2NrZQEgYW5kLCB3aGVuIHRoYXQgZmlsbHMgdGhlIHJpbmcsIHJlbW92ZXMgdGhlIGF3YXJkcyBvZiB0aGUgYmxvY2sgdGhhdCBkcm9wcyBvZmYgdGhlIGZyb250LmkBIEtlZXBpbmcgdGhlIGxpc3QgcmF0aGVyIHRoYW4gcHJ1bmluZyBieSBibG9jayBhcml0aG1ldGljIG1lYW5zIG5vIGJsb2NrIGV2ZXIgcGF5cyBmb3IgdGhlFQEgcmVtb3ZhbCBvZiBhbiBlbnRyeSB0aGF0IHdhcyBuZXZlciB0aGVyZSwgYXdhcmQgYmxvY2tzIGJlaW5nIHNwYXJzZS4AdFBlbmRpbmdOZnRDbGFpbUNyZWRpdFJvb3RJbmZvAAAhDAQAHGUBIFRoZSBmaWVsZHMgdGhlIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IG9mIHRoZSBjdXJyZW50IGJsb2NrIHdpbGwgY2FycnkgYmVzaWRlcyB0aGVRASByb290LiBXcml0dGVuIHdoZW4gdGhlIGJsb2NrJ3MgZmlyc3QgY3JlZGl0IGlzIGF3YXJkZWQgYW5kIGNsZWFyZWQgb25jZSBpdHMgcm9vdCBpcyggcmVjb3JkZWQuAPQgYE5vbmVgIGV4YWN0bHkgd2hlbiB0aGUgY3VycmVudCBibG9jayBoYXMgYXdhcmRlZCBubyBjcmVkaXQuVQEgW2BQYWxsZXQ6OmJ1aWxkX2NyZWRpdF90cmVlYF0gcmVsaWVzIG9uIHRoYXQgdG8gZGVjaWRlIHdoZXRoZXIgYSBibG9jayBoYXMgYSByb290IHRvMQEgcmVjb3JkIHdpdGhvdXQgcmVhZGluZyB0aGUgYmxvY2sncyBhd2FyZHMsIHdoaWNoIGFyZSBjaGFyZ2VkIGF0IGBtYXhfc2l6ZWAuAExOZnRDbGFpbUNyZWRpdFJvb3RzAAEEBTjtBwQACGEBIFRoZSBNZXJrbGUgY29tbWl0bWVudCB0byBlYWNoIGJsb2NrJ3MgYXdhcmRlZCBORlQgY2xhaW0gY3JlZGl0cywga2V5ZWQgYnkgdGhlIGJsb2NrIHRoZRkBIGNyZWRpdHMgd2VyZSBhd2FyZGVkIGluLiBCbG9ja3MgdGhhdCBhd2FyZGVkIG5vIGNyZWRpdCBoYXZlIG5vIGVudHJ5LgBcQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWUBACUMBAAcZQEgVGhlIGF3YXJkIGJsb2NrcyB3aG9zZSBjcmVkaXQgdHJlZXMgaGF2ZSBub3QgYmVlbiBkZWxpdmVyZWQgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4geWV0LD0BIGluIGFzY2VuZGluZyBibG9jayBvcmRlciwgZWFjaCB3aXRoIHRoZSBzZXF1ZW5jZSBudW1iZXIgaXQgaXMgZGVsaXZlcmVkIHVuZGVyLgAhASBBcHBlbmRlZCBieSBbYFBhbGxldDo6YnVpbGRfY3JlZGl0X3RyZWVgXSBhbmQgZHJhaW5lZCBmcm9tIHRoZSBmcm9udCBieVEBIFtgUGFsbGV0OjpzZW5kX2NyZWRpdF90cmVlc2BdIG9uY2UgdGhlIFhDTSBjYXJyeWluZyB0aGUgdHJlZXMgaGFzIGJlZW4gYWNjZXB0ZWQgZm9yXQEgZGVsaXZlcnkuIFRoZSB0cmVlcyB0aGVtc2VsdmVzIHN0YXkgaW4gW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF07IHRoaXMgb25seSByZWNvcmRzIHdoYXRcIHN0aWxsIG93ZXMgYSBkZWxpdmVyeS4AWE5leHRDcmVkaXRUcmVlU2VxdWVuY2UBACggAAAAAAAAAAAUEQEgVGhlIHNlcXVlbmNlIG51bWJlciB0aGUgbmV4dCBxdWV1ZWQgY3JlZGl0IHRyZWUgaXMgZGVsaXZlcmVkIHVuZGVyLgBxASBPbmx5IGEgdHJlZSB0aGF0IG1hZGUgaXQgaW50byBbYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYF0gY29uc3VtZXMgb25lLCBzbyB0aGUgc2VxdWVuY2UgdGhlYQEgY2xhaW1zIGNoYWluIHNlZXMgc3RheXMgY29udGlndW91cyBldmVuIHdoZW4gdGhlIHF1ZXVlIG92ZXJmbG93cy4gQSBnYXAgdGhlcmUgdGhlcmVmb3Jl3CBtZWFucyBhIG1lc3NhZ2Ugd2FzIGxvc3QsIG5ldmVyIHRoYXQgb25lIHdhcyBub3Qgc2VudC4AAQEFAAHpBwAgSE1heENyZWRpdHNQZXJCbG9jazgQsAQAAFhNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgTkZUIGNsYWltIGNyZWRpdHMgdGhhdCBjYW4gYmUgYXdhcmRlZCBpbiBhIHNpbmdsZSBibG9jaywgYW5kCQEgaGVuY2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxlYXZlcyBpbiBvbmUgW2BOZnRDbGFpbUNyZWRpdFRyZWVgXS4AUQEgT25lIGJsb2NrJ3MgYXdhcmRzIGFyZSBhIHNpbmdsZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gZW50cnksIHdob3NlIHByb29mIHNpemUgaXNVASBjaGFyZ2VkIGF0IGBtYXhfc2l6ZWAgb24gZXZlcnkgYXdhcmQgYW5kIG9uIGV2ZXJ5IHJvb3QgY29tcHV0YXRpb24sIHNvIHRoaXMgYm91bmQgaXMBASBwYWlkIGZvciBpbiBldmVyeSBgcmVwb3J0YCB3aGV0aGVyIHRoZSBhd2FyZHMgYXJlIHRoZXJlIG9yIG5vdC4AWQEgQW4gdW5yZWNvcmRlZCBjcmVkaXQgaXMgY29tbWl0dGVkIHRvIG5vIHJvb3QgYW5kIHN0YXlzIHVubWludGFibGUsIGFuZCB0aGUgcGFsbGV0IGNhblkBIG9ubHkgcmVwb3J0IHRoYXQgZGVmZW5zaXZlbHksIHNvIHRoZSBib3VuZCBtdXN0IGNvdmVyIHdoYXQgYSB3aG9sZSBibG9jayBvZiBgcmVwb3J0YHNhASBhd2FyZHMuIFRoZSBgaW50ZWdyaXR5X3Rlc3RgIGFzc2VydHMgdGhhdCBmbG9vciBmcm9tIHRoZSBydW50aW1lJ3Mgb3duIGJsb2NrIGxpbWl0cyBhbmRhASB3ZWlnaHRzLCBmYWlsaW5nIHRoZSBgcnVudGltZV9pbnRlZ3JpdHlfdGVzdHNgIHRoYXQgaXRzIGBjb25zdHJ1Y3RfcnVudGltZSFgIGdlbmVyYXRlcy5JASBUaGUgYmFja2ZpbGwgaW4gYHBsYXllcl9wcm9jZXNzX3N0ZXAxYCBuZWVkcyBubyBmbG9vcjogaXQgZGVmZXJzIGEgcGxheWVyIHRoYXQgbm80IGxvbmdlciBmaXRzLgBZASBTbGFjayBhYm92ZSB0aGUgZmxvb3IgYnV5cyBtYXJnaW4gYWdhaW5zdCBhIHdlaWdodCByZWdlbmVyYXRpb24gbGlmdGluZyBpdCwgYW5kIGNvc3RzZQEgcmVwb3J0cyBwZXIgYmxvY2ssIHNpbmNlIGl0IGlzIGNoYXJnZWQgdG8gZXZlcnkgb25lIG9mIHRoZW0uIFRoYXQgY2hhcmdlIGFsc28gbG93ZXJzIHRoZWUBIGZsb29yLCBzbyB0aGUgbWFyZ2luIGdyb3dzIGZhc3RlciB0aGFuIHRoZSBzbGFjay4gVGhlIGBpbnRlZ3JpdHlfdGVzdGAgd2FybnMgcmF0aGVyIHRoYW50IGZhaWxzIGFib3ZlIHR3aWNlIHRoZSBmbG9vci4ATQEgUmFpc2luZyB0aGUgYm91bmQgaW4gYSBydW50aW1lIHVwZ3JhZGUgaXMgc2FmZS4gTG93ZXJpbmcgaXQgc3RyYW5kcyBldmVyeSByZXRhaW5lZFUBIGJsb2NrJ3MgYXdhcmRzLCBzaW5jZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gbm8gbG9uZ2VyIGRlY29kZXMgYWdhaW5zdCB0aGUgc21hbGxlcnwgYm91bmQsIHNvIGNsZWFyIHRoZSBtYXAgZmlyc3QuADxOZnRDbGFpbXNQYXJhSWScENwFAAAMWQEgVGhlIHBhcmFjaGFpbiB0aGUgY3JlZGl0IHRyZWVzIGFyZSBkZWxpdmVyZWQgdG8sIHdoaWNoIG1pbnRzIHRoZSBORlRzIGNsYWltZWQgYWdhaW5zdF0BIHRoZW0uIFRoZXJlIGlzIGV4YWN0bHkgb25lLCBzbyB0aGUgcnVudGltZSBmaXhlcyBpdCByYXRoZXIgdGhhbiBnb3Zlcm5hbmNlIHJlZ2lzdGVyaW5nECBpdC4AUE5mdENsYWltc1BhbGxldEluZGV4DARgCEEBIFBhbGxldCBpbmRleCBvZiBpbmRpdi1wYWxsZXQtbmZ0LWNsYWltcyBvbiBbYENvbmZpZzo6TmZ0Q2xhaW1zUGFyYUlkYF0sIHVzZWQgdG/cIGVuY29kZSB0aGUgYFRyYW5zYWN0YCBjYWxsIHRoZSB0cmVlcyBhcmUgZGVsaXZlcmVkIGluLgBQTWF4UXVldWVkQ3JlZGl0VHJlZXM4EAABAAAcBQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNyZWRpdCB0cmVlcyB0aGF0IGNhbiB3YWl0IGZvciBkZWxpdmVyeSBpbmwgYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYC4AYQEgT25lIGJsb2NrIGJ1aWxkcyBhdCBtb3N0IG9uZSB0cmVlIGFuZCB0aGUgb2ZmY2hhaW4gd29ya2VyIGRyYWlucyB0aGUgcXVldWUgZXZlcnkgYmxvY2ssYQEgc28gdGhpcyBvbmx5IGhhcyB0byBjb3ZlciBhbiBvdXRhZ2UuIEEgdHJlZSB0aGF0IGRvZXMgbm90IGZpdCBpcyBuZXZlciBxdWV1ZWQgYW5kIG5lZWRz2CBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdLCBzbyBzaXplIGl0IHdlbGwgcGFzdJggW2BDb25maWc6Ok1heENyZWRpdFRyZWVzUGVyTWVzc2FnZWBdLgBgTWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlOBAgAAAAEPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNyZWRpdCB0cmVlcyBjYXJyaWVkIGJ5IG9uZSBYQ00gbWVzc2FnZS4AVQEgVGhlIG5mdC1jbGFpbXMgcGFsbGV0J3Mgb3duIGJvdW5kIG11c3QgYmUgYXQgbGVhc3QgdGhpcyBsYXJnZSwgb3RoZXJ3aXNlIHRoZSBiYXRjaGVz+CBzZW50IHRvIGl0IGZhaWwgdG8gZGVjb2RlIGFuZCB0aGUgdHJlZXMgaW4gdGhlbSBuZXZlciBhcnJpdmUuAFROZnRDbGFpbXNSZW1vdGVXZWlnaHRxAhgCRsMjoSggCQEgUGVyLXRyZWUgd2VpZ2h0IHN1cmNoYXJnZSBmb3IgZXhlY3V0aW5nIGByZWNlaXZlX2NyZWRpdF90cmVlc2Agb27YIFtgQ29uZmlnOjpOZnRDbGFpbXNQYXJhSWRgXSwgY2hhcmdlZCB0byB0aGUgY2FsbGVyIG9mhCBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdLgBNASBUaGUgZmVlIGl0IGJ1eXMgaXMgd2hhdCBsaW1pdHMgaG93IG11Y2ggcmVwbGF5IHRyYWZmaWMgYW55b25lIGNhbiBjYXVzZSwgdGhhdCBjYWxsSQEgYmVpbmcgcGVybWlzc2lvbmxlc3MgYW5kIGRlbGliZXJhdGVseSBub3QgcmF0ZS1saW1pdGVkLCBzbyBzZXQgaXQgdG8gYXQgbGVhc3QgdGhlVQEgcGVyLXRyZWUgY29zdCBvZiBgcmVjZWl2ZV9jcmVkaXRfdHJlZXNgIGluIHRoZSBjbGFpbXMgY2hhaW4ncyBvd24gZ2VuZXJhdGVkIHdlaWdodHMsKQEgcHJvb2Ygc2l6ZSBpbmNsdWRlZC4gQSB2YWx1ZSBiZWxvdyB0aGF0IGxlYXZlcyB0aGUgcmVtb3RlIHdvcmsgdW5kZXJwYWlkLgBYTWF4UmV0YWluZWRBd2FyZEJsb2NrczgQAAEAAEBVASBUaGUgbnVtYmVyIG9mIG1vc3QgcmVjZW50IGF3YXJkIGJsb2NrcyB3aG9zZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gc3RheSBvbiBjaGFpbi4AMQEgVGhpcyBpcyB0aGUgd2luZG93IGluIHdoaWNoIGEgY2xhaW0gY2FuIGJlIHByb3ZlbiBmcm9tIHN0YXRlIGFsb25lLCB0aHJvdWdoSQEgW2BQYWxsZXQ6Om5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZzYF0uIE9uY2UgYSBibG9jayBkcm9wcyBvdXQgb2YgaXQsIGl0cyBhd2FyZHMgYXJlWQEgcmVtb3ZlZCBhbmQgYSBwcm9vZiBoYXMgdG8gYmUgcmVidWlsdCBmcm9tIHRoZSBibG9jaydzIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50c1kBIGFuZCBwYXNzZWQgdG8gW2BQYWxsZXQ6Om5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZfZnJvbV9hd2FyZHNgXS4gVGhlIHJvb3QgaXRzZWxmIGlzIGtlcHRJASBmb3IgZ29vZCwgc28gZHJvcHBpbmcgb3V0IGRlbGF5cyBubyBtaW50IHRoYXQgYSBjbGFpbWFudCwgb3IgYW4gaW5kZXhlciwga2VwdCB0aGUsIGF3YXJkcyBvZi4AWQEgSXQgY291bnRzIGF3YXJkIGJsb2Nrcywgbm90IGJsb2NrcywgYmVjYXVzZSBvbmx5IGJsb2NrcyB0aGF0IGF3YXJkZWQgYSBjcmVkaXQgaGF2ZSBhblkBIGVudHJ5LiBTaXplZCBhZ2FpbnN0IGhvdyBsb25nIGEgY2xhaW1hbnQgbWF5IHRha2UgdG8gbWludCwgYW5kIHBhaWQgZm9yIGluIHN0YXRlOiB0aGUlASBtYXAgaG9sZHMgYXQgbW9zdCB0aGlzIG1hbnkgZW50cmllcyBvZiBgTWF4Q3JlZGl0c1BlckJsb2NrYCBhd2FyZHMgZWFjaC4AWQEgUmFpc2luZyB0aGUgYm91bmQgaW4gYSBydW50aW1lIHVwZ3JhZGUgaXMgc2FmZS4gTG93ZXJpbmcgaXQgb3JwaGFucyB0aGUgYXdhcmRzIG9mIHRoZVUBIGJsb2NrcyBiZXlvbmQgdGhlIG5ldyBib3VuZCwgc2luY2UgYE5mdENsYWltQ3JlZGl0QXdhcmRCbG9ja3NgIG5vIGxvbmdlciBkZWNvZGVzIGFuZBkBIHRoZSByaW5nIGlzIHdoYXQgbmFtZXMgdGhlIGVudHJpZXMgdG8gcmVtb3ZlLCBzbyBjbGVhciB0aGUgbWFwIGZpcnN0LgBoTWF4Q3JlZGl0QmxvY2tzUGVyQ2xhaW1hbnQ4ECAAAAAgQQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGF3YXJkIGJsb2NrcyBbYE5mdENsYWltQ3JlZGl0QmxvY2tzYF0ga2VlcHMgcGVyIGNsYWltYW50LgBVASBUaGUgaW5kZXggaXMgYSBsb29rdXAgYWlkLCBub3QgdGhlIHJlY29yZCBvZiB3aGF0IGEgY2xhaW1hbnQgaXMgb3dlZCwgc28gYSBmdWxsIGxpc3RFASBkcm9wcyBpdHMgb2xkZXN0IGJsb2NrIHJhdGhlciB0aGFuIHJlamVjdGluZyBhbiBhd2FyZC4gU2l6ZSBpdCBwYXN0IHRoZSBibG9ja3MgYUEBIGNsYWltYW50IGNhbiBlYXJuIGNyZWRpdHMgaW4gb3ZlciB0aGUgZ2FtZXMgd2hvc2UgdHJlZXMgYXJlIHN0aWxsIHdvcnRoIG1pbnRpbmdFASBhZ2FpbnN0LCBhbmQgYWNjb3VudCBmb3IgdGhlIHByb29mIHNpemU6IGEgcmVhZCBpcyBjaGFyZ2VkIGF0IHRoZSBsaXN0J3MgbWF4aW11bVEBIGVuY29kZWQgbGVuZ3RoLCBvbmUgYmxvY2sgbnVtYmVyIHBlciBlbnRyeSwgb25jZSBwZXIgZGlzdGluY3QgY2xhaW1hbnQgYW4gZXh0cmluc2ljLCBhd2FyZHMgdG8uAAExDAAAADkAACBEdW1teURpbQEgRHVtbXlEaW0ILFJlc2VydmVkSWRzAAEEAigQBAAE3CBUaGUgcGVyc29uYWwgSURzIHRoYXQgYXJlIHJlc2VydmVkIGJ5IHVucHJvdmVuIHBlb3BsZS4AGFBlb3BsZQABBAUoNQwEAAS4IFRoZSBwZW9wbGUgd2UgdHJhY2sgYWxvbmcgd2l0aCB0aGVpciByZWNvcmRzLgABDQUAAfUHAAABOQwAAAA7AAAoUGVvcGxlTGl0ZQEoUGVvcGxlTGl0ZRQoTGl0ZVBlb3BsZQABBAIEPQwEAAAAOEFsaWFzVG9BY2NvdW50AAEEAuEDBAQABOAgQ29udmVyc2lvbiBvZiBhIGxpdGUgY29udGV4dHVhbCBhbGlhcyB0byBhbiBhY2NvdW50IElELgA4QWNjb3VudFRvQWxpYXMAAQQCBN0DBAAE4CBDb252ZXJzaW9uIG9mIGFuIGFjY291bnQgSUQgdG8gYSBsaXRlIGNvbnRleHR1YWwgYWxpYXMuAGxMaXRlUGVvcGxlQ29sbGVjdGlvbkNyZWF0ZWQBAFEBBAAE8CBXaGV0aGVyIHRoZSBsaXRlIHBlb3BsZSBtZW1iZXIgY29sbGVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkLgBQQXR0ZXN0YXRpb25BbGxvd2FuY2UBAQQCBDgQAAAAAAQpASBOdW1iZXIgb2YgYXR0ZXN0YXRpb25zIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhIHZlcmlmaWVyIGFjY291bnQgaWQuAAElBQAB+QcAHBRQb3RJZLEJIHBsaXRlZmVlBD0BIEFjY291bnQgaWRlbnRpZmllciB1c2VkIHRvIGRlcml2ZSB0aGUgYWNjb3VudCB0aGF0IHJlY2VpdmVzIHJlZ2lzdHJhdGlvbiBmZWVzLgAYU3VmZml4GBQQdGVzdATcIE5ldHdvcmsgc3VmZml4IGFwcGVuZGVkIHRvIHRoaXMgcGFsbGV0J3MgcHJvZHVjdCBuYW1lLgBATGl0ZVJpbmdFeHBvbmVudEkFBAkEzCBSaW5nIGV4cG9uZW50IHVzZWQgZm9yIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgBITGl0ZU9uYm9hcmRpbmdTaXplOBADAAAABPwgT25ib2FyZGluZyBzaXplIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4ASGxpdGVfcGVvcGxlX3BvdF9pZASAbW9kbHBsaXRlZmVlAAAAAAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIGFjY291bnQgdGhhdCByZWNlaXZlcyBub24tcmVmdW5kYWJsZSBsaXRlLXBlcnNvbiByZWdpc3RyYXRpb24gZmVlcy4AMGF1dGhfY29udGV4dAiAsvPQEr2CUJByWs6XACvjNX2z/0KqRBTk9bzXUavI3pAEuCBUaGUgY29udGV4dCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSBsaXRlIHBlb3BsZS4AdGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlOBBYAgAABC0BIFRoZSBudW1iZXIgb2YgYmxvY2tzIG9mIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYW4gYWxpYXMgc2V0dXAgdHJhbnNhY3Rpb24uAAFFDAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlcQQIYQEgU2lnbmF0dXJlIGdlbmVyYXRlZCBieSBsaXRlIHBlb3BsZSBhbmQgdXNlZCBieSB2ZXJpZmllcnMgdG8gY2xhaW0gYXR0ZXN0YXRpb25zIG9uIHRoZWlyICBiZWhhbGYuAD4AACRSZXNvdXJjZXMBJFJlc291cmNlcywkQ29uc3VtZXJzAAEEAgRJDAQABCkBIEFjY291bnRzIHVzZWQgdG8gaWRlbnRpZnkgY29uc3VtZXJzIG1hcHBlZCB0byB0aGVpciBjb25zdW1lciBpbmZvcm1hdGlvbi4AYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlcwABCAYCUQxZDAQAFHEBIEFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXRlbWVudCBzdG9yZSBzbG90IHRocm91Z2ggYW4gYW5vbnltb3VzIGFsbG93YW5jZSwgcGVyIHBlcmlvZC4AYQEgVGhlIHBlcmlvZCBrZXkgaXMgYSBiaWctZW5kaWFuIGVuY29kZWQgZGF5IG51bWJlciAoc2Vjb25kcyBzaW5jZSBVbml4IGVwb2NoIC8gODY0MDApIHNvcQEgdGhhdCBgSWRlbnRpdHlgLWhhc2hlZCBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW4gY2hyb25vbG9naWNhbCBvcmRlciB0byBiZSByZW1vdmVkIGJ5IHRoZUQgb2ZmY2hhaW4gd29ya2VyLgBsU3RtdFN0b3JlQWxsb3dhbmNlQnlBY2NvdW50AAEIAgJdDBAEABRBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgc3RhdGVtZW50IGFjY291bnQgdG8gYWxsIGl0cyBhY3RpdmUgYW5vbnltb3VzIGFsbG93YW5jZXMuAEUBIEtleWVkIGJ5IGAoQWNjb3VudElkLCAoQmlnRW5kaWFuVTMyIHBlcmlvZCwgdTMyIHNlcSwgQWxpYXMpKWAg4oaSIGAoKWAuIE11bHRpcGxlSQEgZW50cmllcyBwZXIgYWNjb3VudCBhcmUgcG9zc2libGUgd2hlbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYWNjb3VudCBpcyBhdXRob3JpemVkIGJ5zCBkaWZmZXJlbnQgYWxpYXNlcyBvciBhY3Jvc3MgZ3JhY2Utd2luZG93IG92ZXJsYXBzLgB8Tm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uQnlBbGlhcwABBAIIZQwEAATgIE5vdGlmaWNhdGlvbiBhbGxvd2FuY2UgcmVnaXN0cmF0aW9uIGJ5IGFub255bW91cyBhbGlhcy4AaE5vdGlmaWNhdGlvbkFsaWFzQnlBY2NvdW50AAEEAgQIBAAEHQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBub3RpZmljYXRpb24gc3RhdGVtZW50IGFjY291bnQgdG8gYW5vbnltb3VzIGFsaWFzLgBsU3BlbnRMb25nVGVybVN0b3JhZ2VBbGlhc2VzAAEIBgJRDBAEACBJASBBbGlhc2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gdXNlZCB0byBjbGFpbSBsb25nLXRlcm0gc3RvcmFnZSBpbiBhIGdpdmVuIHBlcmlvZC4AWQEgS2V5ZWQgYnkgYChwZXJpb2QsIGFsaWFzKWAuIEVhY2ggY291bnRlciB2YWx1ZSBpbiB0aGUgcHJvb2YgY29udGV4dCBwcm9kdWNlcyBhIHVuaXF1ZV0BIGFsaWFzLCBzbyBhIHBlcnNvbiBjYW4gaGF2ZSB1cCB0byBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYCBlbnRyaWVzIHBlciBwZXJpb2QuNQEgT2xkIHBlcmlvZHMgY2FuIGJlIGNsZWFuZWQgdXAgdmlhIGBjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXNgLgBBASBUaGUgcGVyaW9kIGtleSBpcyBgQmlnRW5kaWFuVTMyYCB3aXRoIGBJZGVudGl0eWAgc28gaXRlcmF0aW9uIHlpZWxkcyBlbnRyaWVzIGlu6CBjaHJvbm9sb2dpY2FsIG9yZGVyLCBtYXRjaGluZyBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYC4APFVzZXJuYW1lT3duZXJPZgABBAIxBQQEABhxASBSZXZlcnNlIGxvb2t1cCBmcm9tIGB1c2VybmFtZWAgdG8gdGhlIGBBY2NvdW50SWRgIHRoYXQgaGFzIHJlZ2lzdGVyZWQgaXQuIFRoZSBgb3duZXJgIHZhbHVlZQEgc2hvdWxkIGJlIGEga2V5IGluIHRoZSBgQ29uc3VtZXJzYCBtYXAuIFRoZXJlIGNhbiBiZSBhdCBtb3N0IDIgdXNlcm5hbWVzIHBvaW50aW5nIHRvIHRoZTggc2FtZSBgb3duZXJgOnEBIC0gdXNlcm5hbWUgYXNzb2NpYXRlZCB3aXRoIGEgY29uc3VtZXIncyBsaXRlIHBlcnNvbiBpZGVudGl0eSAtIHRoaXMgd2lsbCBhbHdheXMgYmUgcHJlc2VudDtZASAtIG9wdGlvbmFsbHkgYW5vdGhlciB1c2VybmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnN1bWVyJ3MgZnVsbCBwZXJzb24gaWRlbnRpdHksIGlmOCAgIGFwcGxpY2FibGUuADhBY2NvdW50T2ZBbGlhcwABBAIIBAQABGkBIFJldmVyc2UgbG9va3VwIGZyb20gcmVnaXN0ZXJlZCBhbGlhc2VzIHRvIHRoZSBgQWNjb3VudElkYCB1c2VkIHRvIHJlZ2lzdGVyIGFzIGEgY29uc3VtZXIuAGxVc2VybmFtZVJlc2VydmF0aW9uRHVyYXRpb24BACggAAAAAAAAAAAIVQEgVGhlIGFtb3VudCBvZiB0aW1lIGZvciB3aGljaCBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIGlzIHZhbGlkLCBpbiBzZWNvbmRzLiBBZnRlciB0aGlz0CB0aW1lIHBlcmlvZCBlbGFwc2VzLCB0aGUgcmVzZXJ2YXRpb24gY2FuIGJlIHZvaWRlZC4AYFVzZXJuYW1lUmVzZXJ2YXRpb25RdWV1ZQABBAIxBWkMBAAIcQEgTWFwIGZyb20gYSByZXNlcnZlZCBgdXNlcm5hbWVgIHRvIGEgcXVldWUgb2YgYFJlc2VydmF0aW9uUXVldWVFbnRyeWAgaXRlbXMsIGVhY2ggaG9sZGluZyBhbmEBIGFjY291bnQgYW5kIHRoZSB0aW1lc3RhbXAgd2hlbiBpdCBqb2luZWQuIE9sZCByZXNlcnZhdGlvbnMgY2FuIGJlIHJlbW92ZWQgZnJvbSBzdG9yYWdlLgA0UmVzZXJ2YXRpb25PZgABBAIEMQUEAAhlASBSZXZlcnNlIGxvb2t1cCBmcm9tIGFuIGFjY291bnQgdG8gdGhlIHVzZXJuYW1lIGl0IGhhcyByZXNlcnZlZC4gRWFjaCBhY2NvdW50IGNhbiBoYXZlIGF0nCBtb3N0IG9uZSBhY3RpdmUgcmVzZXJ2YXRpb24gYXQgYSB0aW1lLgABOQUAAf0HAFAYU3VmZml4GBQQdGVzdATcIE5ldHdvcmsgc3VmZml4IGFwcGVuZGVkIHRvIHRoaXMgcGFsbGV0J3MgcHJvZHVjdCBuYW1lLgBETWluVXNlcm5hbWVMZW5ndGg4EAYAAAAEiCBUaGUgbWluaW11bSBsZW5ndGggb2YgYSB1c2VybmFtZS4ASFBlcnNvbkF1dGhEdXJhdGlvbjgQAKMCAAxVASBUaGUgZHVyYXRpb24gb2YgdGltZSwgaW4gc2Vjb25kcywgZm9yIHdoaWNoIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBpcyB2YWxpZC4gQWZ0ZXJRASB0aGlzIHBlcmlvZCBlbGFwc2VzLCBwZW9wbGUgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhY3RpdmUsIGJ1dCB0aGVpciByZXNvdXJjZQ0BIGFsbG93YW5jZXMgc2hvdWxkIGRlZmF1bHQgdG8gdGhlIHNhbWUgdmFsdWVzIHVzZWQgZm9yIGxpdGUgcGVvcGxlLgBsTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsOBCAUQEACFUBIFRoZSBtaW5pbXVtIGludGVydmFsIG9mIHRpbWUsIGluIHNlY29uZHMsIHdoaWNoIG11c3QgcGFzcyBiZWZvcmUgdXBkYXRpbmcgYSBwZXJzb24nczwgYXV0aG9yaXphdGlvbi4AZE1heFJlc2VydmF0aW9uUXVldWVMZW5ndGg4EAoAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBjYW4gcXVldWUgZm9yIGEgc2luZ2xlIHJlc2VydmVkIHVzZXJuYW1lLgBQQWNjb3VudHNBcGlBbGxvd2FuY2V1DCACAAAAANAHAATQIFRoZSBTdGF0ZW1lbnQgU3RvcmUgYWxsb3dhbmNlIGZvciB0aGUgYWNjb3VudHMgQVBJLgBcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2Q4EBQAAAAEOQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhdGVtZW50IHN0b3JlIHNsb3RzIGEgcGVyc29uIGNhbiBjbGFpbSB3aXRoaW4gb25lIHBlcmlvZC4AbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZDgQCgAAABBNASBNYXhpbXVtIG51bWJlciBvZiBzdGF0ZW1lbnQgc3RvcmUgc2xvdHMgYSBsaXRlIHBlcnNvbiBjYW4gY2xhaW0gd2l0aGluIG9uZSBwZXJpb2QuAE0BIFNhbWUgc2VtYW50aWNzIGFzIGBTdG10U3RvcmVTbG90c1BlclBlcmlvZGAgYnV0IGFwcGxpZWQgd2hlbiB0aGUgcHJvb2YgdGFyZ2V0cyB0aGX8IGxpdGUtcGVvcGxlIGNvbGxlY3Rpb24gdmlhIGBNZW1iZXJzaGlwQ29sbGVjdGlvbjo6TGl0ZVBlb3BsZWAuAFRTdG10U3RvcmVDbGVhbnVwTGltaXQ4EDIAAAAEWQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSBlbnRyaWVzIHRvIHJlbW92ZSBwZXIgY2xlYW51cCBjYWxsLgBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bjgQPAAAAAg1ASBNaW5pbXVtIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSBhbiBhbGlhcyBjYW4gcmVwbGFjZSBpdHMgb3du4CBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGVudHJ5IHdpdGhpbiB0aGUgc2FtZSBwZXJpb2QuAFBTdG10U3RvcmVHcmFjZVdpbmRvdzgQAKMCABBVASBFeHRyYSB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggc3RhdGVtZW50LXN0b3JlIGFsbG93YW5jZXMgZnJvbSBhbiBlbmRlZCBwZXJpb2S4IHJlbWFpbiBhY3RpdmUgYmVmb3JlIGNsZWFudXAgbWF5IHJldm9rZSB0aGVtLgApASBBZnRlciB0aGlzIGVsYXBzZXMsIHRoZSBhbGxvd2FuY2VzIHdpbGwgZXZlbnR1YWxseSBiZSBjbGVhbmVkIGJ5IHRoZSBPQ1cuAFROb3RpZmljYXRpb25BbGxvd2FuY2V1DCABAAAAACgAAAQdASBUaGUgU3RhdGVtZW50IFN0b3JlIGFsbG93YW5jZSBmb3Igbm90aWZpY2F0aW9uIHN0YXRlbWVudCByZWdpc3RyYXRpb24uAGhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAwEECAtASBIaWdoZXN0IHZhbGlkIG5vdGlmaWNhdGlvbiBzbG90IGlkZW50aWZpZXIgZm9yIGEgcGVyc29uIHdpdGhpbiBvbmUgcGVyaW9kLgBdASBBIHBlcmlvZCBpcyBhIGZpeGVkLWR1cmF0aW9uIHdpbmRvdyBzZXQgYnkgYE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uYC4gRWFjaCBzbG90IGNhbuAgYmUgY2xhaW1lZCBhdCBtb3N0IG9uY2UgYnkgYSBwZXJzb24gd2l0aGluIHRoYXQgcGVyaW9kLgBRASBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBgOGAsIHRoZSB2YWxpZCBzbG90IGlkZW50aWZpZXJzIGFyZSBgMC4uPThgLCBzbyBlYWNoIHBlcnNvbiEBIGNhbiBjbGFpbSB1cCB0byA5IG5vdGlmaWNhdGlvbiBhbGxvd2FuY2VzIGR1cmluZyB0aGUgcGVyaW9kIHNlbGVjdGVkIGJ5JQEgYE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uYC4gV2hlbiB0aGUgcGVyaW9kIGFkdmFuY2VzLCB0aGUgc2xvdHMgcmVzZXQuAHhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QMBAgQQQEgSGlnaGVzdCB2YWxpZCBub3RpZmljYXRpb24gc2xvdCBpZGVudGlmaWVyIGZvciBhIGxpdGUgcGVyc29uIHdpdGhpbiBvbmUgcGVyaW9kLgBZASBTYW1lIHNlbWFudGljcyBhcyBgTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgIGJ1dCBhcHBsaWVkIHdoZW4gdGhlIHByb29mIHRhcmdldHMgdGhl/CBsaXRlLXBlb3BsZSBjb2xsZWN0aW9uIHZpYSBgTWVtYmVyc2hpcENvbGxlY3Rpb246OkxpdGVQZW9wbGVgLgBoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb244EIBRAQAkBQEgUm9sbGluZyB0aW1lIHdpbmRvdyBmb3IgcmF0ZS1saW1pdGluZyBub3RpZmljYXRpb25zLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzpCBgbm93X3NlY3MgLyBOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbmAuAGEBIEZvciBleGFtcGxlLCBpZiB0aGlzIGlzIGA4Nl80MDBgICgyNCBob3VycyksIHBlcmlvZCBgMGAgaXMgdGhlIGZpcnN0IDI0IGhvdXJzIHNpbmNlIHRoZRkBIFVuaXggZXBvY2gsIHBlcmlvZCBgMWAgaXMgdGhlIG5leHQgMjQgaG91cnMsIGFuZCBzbyBvbi4gQ29tYmluZWQgd2l0aFkBIGBOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZGAsIHRoaXMgZGVmaW5lcyBob3cgbWFueSBub3RpZmljYXRpb25zIGNhbiBiZSBzZW50IGluIGVhY2ggIHBlcmlvZC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE7CBOdW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4td29ya2VyIG1haW50ZW5hbmNlIHJ1bnMuAHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbjgQAHUSABQFASBUaGUgZHVyYXRpb24gb2YgYSBsb25nLXRlcm0gc3RvcmFnZSBjbGFpbWluZyBwZXJpb2QsIGluIHNlY29uZHMuADUBIFRpbWUgaXMgZGl2aWRlZCBpbnRvIGZpeGVkLWR1cmF0aW9uIHBlcmlvZHMuIFRoZSBwZXJpb2QgaW5kZXggaXMgY29tcHV0ZWQgYXMlASBgbm93X3NlY3MgLyBMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbmAuIEVhY2ggcGVyc29uIGNhbiBzdWJtaXQgdXAgdG/QIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgIGNsYWltcyBwZXIgcGVyaW9kLgB4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kDARkEAkBIE1heGltdW0gbnVtYmVyIG9mIGxvbmctdGVybSBzdG9yYWdlIGNsYWltcyBwZXIgcGVyc29uIHBlciBwZXJpb2QuAEkBIEVhY2ggY2xhaW0gdXNlcyBhIGRpZmZlcmVudCBjb3VudGVyIHZhbHVlICgwLi5jbGFpbXNfcGVyX3BlcmlvZCkgd2hpY2ggcHJvZHVjZXMgYSkBIGRpc3RpbmN0IGFsaWFzIGluIHRoZSBwcm9vZiBjb250ZXh0LCBlbnN1cmluZyBvbmUgY2xhaW0gcGVyIGNvdW50ZXIgc2xvdC4AaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93OBAQDgAAFFEBIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgbG9uZy10ZXJtIHN0b3JhZ2UgcGVyaW9kIGlzIHN0aWxsbCBhY2NlcHRlZCBhZnRlciBhIHJvbGxvdmVyLgBdASBFeHRyYSB0aW1lLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggdGhlIHByZXZpb3VzIGxvbmctdGVybSBzdG9yYWdlIHBlcmlvZCBpcyBhY2NlcHRlZEggYWZ0ZXIgYSByb2xsb3Zlci4AbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdDgQFAAAABRJASBNYXhpbXVtIG51bWJlciBvZiBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIHRoYXQgY2FuIGJlIGNsZWFyZWQgaW4gYSBzaW5nbGXAIGBjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXNgIGNhbGwuAE0BIEJvdW5kcyB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgb2YgdGhlIGNsZWFudXAgZXh0cmluc2ljOyBjYWxsZXJzIG11c3QgcGFzcyBhIGBsaW1pdGBwIG5vIGdyZWF0ZXIgdGhhbiB0aGlzIHZhbHVlLgABeQwABERPZmZjaGFpblNpZ25hdHVyZXEECFEBIFNpZ25hdHVyZSB0eXBlIGZvciBlbnN1cmluZyBvd25lcnNoaXAgb2YgcHJvdmlkZWQgYWNjb3VudHMgaW4gY2FzZSBvZiByZWdpc3RyYXRpb25zPCB0aHJvdWdoIGFsaWFzLgwhEeDfGd6VY7WDAeX34AdDNy0+pos6SqoYqViorNcaQ2RjdXJyZW50X3N0bXRfc3RvcmVfcGVyaW9kADgEUQEgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHBlcmlvZCAoZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoKS4AIRHg3xnelWO1gwHl9+AHQ6zIJchDXr2dNbwNtep2DpZsc3RtdF9zdG9yZV9zbG90X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcTgIECEBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgY2xhaW0gYXQgdGhlIGdpdmVuUCBgcGVyaW9kYCBhbmQgYHNlcWAuAPAgVXNlcyB0aGUgcHJvZHVjdC1vd25lZCBzdGF0ZW1lbnQtc3RvcmUgc2xvdCBjb250ZXh0IGZhbWlseS4AIRHg3xnelWO1gwHl9+AHQ+9aDSqFzv1JxUn959E3szFgbm90aWZpY2F0aW9uX2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcQwICB0BIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgbm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4APwAANENodW5rc01hbmFnZXIBNENodW5rc01hbmFnZXIIGENodW5rcwABCAUFfQyBDAQABBkBIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIGNodW5rcyAoUmluZ0V4cG9uZW50IC0+IFBhZ2VJbmRleCAtPiBDaHVua3MpLgA8Q2h1bmtQYWdlSGFzaGVzAAEIBQV9DAgEAASIIFRoZSBoYXNoIGZvciBlYWNoIHBhZ2Ugb2YgY2h1bmtzLgABRQUAAQEIAAQgUGFnZVNpemU4EP8AAAAEzCBOdW1iZXIgb2YgY2h1bmtzIHBlciBwYWdlLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgABkQwABBRDaHVua4kMBHAgVGhlIHR5cGUgb2YgYSBzaW5nbGUgY2h1bmsuAEAAABxNZW1iZXJzARxNZW1iZXJzRCxDb2xsZWN0aW9ucwABBAYIlQwEAATgIEluZm9ybWF0aW9uIGFib3V0IGVhY2ggY29sbGVjdGlvbiwga2V5ZWQgYnkgaWRlbnRpZmllci4AUFN1c3BlbmRlZENvbGxlY3Rpb25zAAEEBgiVDAQACCEBIENvbGxlY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGFyZSBiZWluZyBwcm9jZXNzZWQuWQEgT25jZSBhIGNvbGxlY3Rpb24gaXMgbW92ZWQgaGVyZSwgbm9ybWFsIG9wZXJhdGlvbnMgd2lsbCBmYWlsIHdpdGggQ29sbGVjdGlvbk5vdEZvdW5kLgA0SWRlbnRpZmllcnNPZgABBAKZDKEMBAAEzCBUaGUgaWRlbnRpZmllcnMgb2YgY29sbGVjdGlvbnMgb3duZWQgYnkgYW4gZW50aXR5LgAQUm9vdAABCAYCpQypDAQABIggVGhlIGN1cnJlbnQgbWVtYmVycyB3ZSByZWNvZ25pc2UuACBPbGRSb290cwABDAYGBrEMtQwEACRBASBPbGQgcmluZyByb290cyBhcmUgcmV0YWluZWQgZm9yIGEgZ3JhY2UgcGVyaW9kIHNvIHRoYXQgcHJvb2ZzIGdlbmVyYXRlZCBhZ2FpbnN0ZQEgcHJldmlvdXMgcmV2aXNpb25zIHJlbWFpbiB2YWxpZC4gRWFjaCByb290IGluIHRoZSBtYXAgaXMgaWRlbnRpZmllZCBieSB0aGUgY29tcG9zaXRlIGtleS0BIGAoY29sbGVjdGlvbiwgcmluZyBpbmRleCwgcmluZyByZXZpc2lvbilgLiBFbnRyaWVzIGNhbiBiZSBjbGVhbmVkIHVwIGFmdGVyJQEgYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbmAgaGFzIHBhc3NlZCBzaW5jZSB0aGUgYGFyY2hpdmVkX2F0YCB0aW1lc3RhbXAuADkBIFRoaXMgc3RvcmFnZSBjYW4gY29udGFpbiBzb21lIHJvb3RzIGZvciBkZWxldGVkIGNvbGxlY3Rpb25zIG9yIHJlbW92ZWQgcmluZ3MuQQEgVGhlIGNhbGwgYHZlcmlmeV9tZW1iZXJzaGlwYCBhbmQgb3RoZXIgb3BlcmF0aW9uIHVzaW5nIG9sZCByb290cyBtdXN0IGNoZWNrIHRoZUEBIGV4aXN0ZW5jZSBvZiB0aGUgY29sbGVjdGlvbiBhbmQgdGhlIHJvb3QgaW4gb3JkZXIgdG8gbm90IHZhbGlkYXRlIGFnYWluc3QgZHVzdC7wIFRoZSBvbGQgcm9vdHMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIHRoZSByZXRlbnRpb24gZHVyYXRpb24uAEBDdXJyZW50UmluZ0luZGV4AQEEBgg4EAAAAAAE5CBLZWVwcyB0cmFjayBvZiB0aGUgcmluZyBpbmRleCBjdXJyZW50bHkgYmVpbmcgcG9wdWxhdGVkLgA4T25ib2FyZGluZ1NpemUBAQQGCDgQAAAAAAT4IE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgcXVldWVkIGJlZm9yZSBvbmJvYXJkaW5nIHRvIGEgcmluZy4AIFJpbmdLZXlzAQEMBgIFuQy9DAQAEGEBIEJvdGggdGhlIGtleXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYnVpbHQgcmluZ3MgYW5kIHRoZSBrZXlzIHRoYXQgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZVkBIHJpbmdzLiBQYWdpbmF0ZWQgYnkgKElkZW50aWZpZXIsIFJpbmdJbmRleCwgUGFnZUluZGV4KSB3aGVyZSBlYWNoIHBhZ2UgY29udGFpbnMgdXAgdG91ASBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YCBrZXlzLiBUaGUgcGFnZSBzaXplIGVxdWFscyB0aGUgZmxleGlibGUgcmluZyBleHBvbmVudCdzIGNhcGFjaXR5LPQgZW5zdXJpbmcgRmxleGlibGUgY29sbGVjdGlvbnMgbmV2ZXIgbmVlZCBtb3JlIHRoYW4gb25lIHBhZ2UuADhSaW5nS2V5c1N0YXR1cwEBCAYCpQzBDCQAAAAAAAAAAAAIYQEgU3RvcmVzIHRoZSBtZXRhIGluZm9ybWF0aW9uIGZvciBlYWNoIHJpbmcsIHRoZSBudW1iZXIgb2Yga2V5cyBhbmQgaG93IG1hbnkgYXJlIGFjdHVhbGx5WCBpbmNsdWRlZCBpbiB0aGUgcm9vdC4ASFBlbmRpbmdTdXNwZW5zaW9ucwEBCAYFpQzFDAQADGkBIEEgbWFwIG9mIGFsbCByaW5ncyB3aGljaCBjdXJyZW50bHkgaGF2ZSBwZW5kaW5nIHN1c3BlbnNpb25zIGFuZCBuZWVkIGNsZWFuaW5nLCBhbG9uZyB3aXRoEQEgdGhlaXIgcmVzcGVjdGl2ZSBudW1iZXIgb2Ygc3VzcGVuZGVkIGtleXMgd2hpY2ggbmVlZCB0byBiZSByZW1vdmVkLm0BIE5vdGU6IEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHNpbmdsZS1wYWdlIHJpbmdzLCBzbyBib3VuZGVkIGJ5IGBSaW5nQ2FwYWNpdHlGcm9tRXhwb25lbnRgLgA0QWN0aXZlTWVtYmVycwEBBAYIOBAAAAAABNAgVGhlIG51bWJlciBvZiBtZW1iZXJzIGN1cnJlbnRseSBpbmNsdWRlZCBpbiBhIHJpbmcuABxNZW1iZXJzAAEIBgLJDM0MBAAYXQEgVGhlIGN1cnJlbnQgbWVtYmVycyBpbiBlYWNoIGNvbGxlY3Rpb24gKGVpdGhlciBpbmNsdWRlZCBpbiByaW5ncywgc3VzcGVuZGVkIGFuZCBxdWV1ZWQhASBmb3IgcmVtb3ZhbCBmcm9tIGEgcmluZywgc3VzcGVuZGVkIGFuZCBub3QgaW4gYW55IHJpbmcsIG9yIG9uYm9hcmRpbmcpLgANASBDb2xsZWN0aW9uIGlkZW50aWZpZXIgdG8gbWVtYmVyIHB1YmxpYyBrZXkgdG8gdGhlIG1lbWJlcidzIHN0YXR1cy4AqCBBIGtleSBjYW4gYmVsb25nIHRvIG11bHRpcGxlIGNvbGxlY3Rpb25zLgAoUmluZ3NTdGF0ZQEBBAYI0QwEAAT8IFRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbCByaW5ncyBtYW5hZ2VkIGZvciBhIGdpdmVuIGlkZW50aWZpZXIuAChTdGFsZVJpbmdzAAEIBgWlDBAEAATMIFNldCBvZiByaW5ncyB3aGljaCBhcmUgc3RhbGUgYW5kIHJlcXVpcmUgYnVpbGRpbmcuAEBRdWV1ZVBhZ2VJbmRpY2VzAQEEBgg9CCAAAAAAAAAAAAQ5ASBLZWVwcyB0cmFjayBvZiB0aGUgcGFnZSBpbmRpY2VzIG9mIHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBvbmJvYXJkaW5nIHF1ZXVlLgA8T25ib2FyZGluZ1F1ZXVlAQEIBgWlDNkMBAAELQEgUGFnaW5hdGVkIGNvbGxlY3Rpb24gb2YgbWVtYmVyIHB1YmxpYyBrZXlzIHJlYWR5IHRvIGJlIGluY2x1ZGVkIGluIGEgcmluZy4ARFJpbmdEZWxldGlvblF1ZXVlAAEMBgUFuQwQBAAUmCBRdWV1ZSBvZiByaW5nIHBhZ2VzIHBlbmRpbmcgZGVsZXRpb24uABUBIFRoaXMgaXMgdXNlZCBib3RoIGJ5IGByZW1vdmVfcmluZ2AgKGluZGl2aWR1YWwgcmluZyBkZWxldGlvbikgYW5kIGJ5GQEgY29sbGVjdGlvbiBkZWxldGlvbi4gUmluZyBwYWdlcyBhcmUgcHJvY2Vzc2VkIGZyb20gdGhpcyBxdWV1ZSB2aWEgT0NXrCByZWdhcmRsZXNzIG9mIHdoaWNoIG9wZXJhdGlvbiBxdWV1ZWQgdGhlbS4AAVUFAAEFCAAYOE1heENvbGxlY3Rpb25zOBBkAAAABMQgTWF4aW11bSBudW1iZXIgb2YgY29sbGVjdGlvbnMgYW4gb3duZXIgY2FuIGhhdmUuAFxPbmJvYXJkaW5nUXVldWVQYWdlU2l6ZTgQ/wAAAAhNASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGluY2x1ZGVkIGluIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBiZWZvcmUgYSBuZXcgb25lIGlzJCBjcmVhdGVkLgBcTWF4RmxleGlibGVSaW5nRXhwb25lbnRJBQQJDF0BIFRoZSBtYXhpbXVtIHJpbmcgZXhwb25lbnQgdXNlZCBmb3IgRmxleGlibGUgY29sbGVjdGlvbnMuIFRoaXMgYWxzbyBkZXRlcm1pbmVzIHRoZSBwYWdlVQEgc2l6ZSBmb3IgcGFnaW5hdGVkIHJpbmcga2V5IHN0b3JhZ2UuIEZsZXhpYmxlIGNvbGxlY3Rpb25zIGNhbiBvbmx5IHVzZSByaW5nIHNpemVzIHVwPCB0byB0aGlzIHZhbHVlLgBcUmluZ0J1aWxkaW5nTWVtYmVyTGltaXQ4EGQAAAAIYQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBiZSBpbmNsdWRlZCBpbiBhIHJpbmcgdGhyb3VnaCBhIHNpbmdsZSByb290IGJ1aWxkaW5nGCBjYWxsLgBgT2xkUm9vdFJldGVudGlvbkR1cmF0aW9uKCBYAgAAAAAAAAhRASBEdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgb2xkIHJpbmcgcm9vdHMgYXJlIHJldGFpbmVkIGJlZm9yZSB0aGV5IGNhbiBiZSBjbGVhbmVkIHVwLkkBIFRoaXMgYWxsb3dzIHByb29mcyBnZW5lcmF0ZWQgd2l0aCBvbGRlciByb290cyB0byByZW1haW4gdmFsaWQgZm9yIGEgZ3JhY2UgcGVyaW9kLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAAHdDAAEIExvY2F0aW9uaQEEOQEgTG9jYXRpb24gdHlwZSBmb3IgaWRlbnRpZnlpbmcgY29sbGVjdGlvbiBvd25lcnMgZnJvbSBvdGhlciBjaGFpbnMvcGFyYWNoYWlucy4AQwAAHENvaW5hZ2UBHENvaW5hZ2VMMENvaW5zQnlPd25lcgABBAIECQQEAAwZASBBbGwgdGhlIGNvaW5zIGluIGFsbCBpbnN0YW5jZXMgY3VycmVudGx5IGNpcmN1bGF0aW5nLCBrZXllZCBieSBvd25lci4AUQEgQSBjb2luIGlzIG1pbnRlZCB3aGVuIHVubG9hZGVkIGZyb20gYSByZWN5Y2xlciwgYW5kIGRlc3Ryb3llZCB3aGVuIGxvYWRlZCBpbnRvIG9uZS4ALExvY2tlZENvaW5zAAEEAgThDAQAEEUBIFRlbXBvcmFyeSBsb2NrIGV4cGlyeSBmb3IgY29pbnMgdGhhdCBwcmV2aW91c2x5IGZhaWxlZCBkaXNwYXRjaCwga2V5ZWQgYnkgb3duZXIuAGEBIEFuIGVudHJ5IGlzIGxvY2tlZCB1bnRpbCB0aGUgc3RvcmVkIFVuaXggdGltZXN0YW1wLCBwcmV2ZW50aW5nIHJlcGVhdGVkIGZhaWxlZCBkaXNwYXRjaHAgYXR0ZW1wdHMgaW4gYSBzaG9ydCBwZXJpb2QuAGhUb3RhbFZhbHVlT2ZEZXN0cm95ZWRDb2lucwEBBAU4RQFAAAAAAAAAAAAAAAAAAAAAABT0IFRoZSB0b3RhbCB2YWx1ZSBvZiBjb2lucyB0aGF0IHdlcmUgYnVybnQsIGtleWVkIGJ5IGluc3RhbmNlLgBpASBUaGlzIHRyYWNrcyB2YWx1ZSB0aGF0IGlzIGludGVudGlvbmFsbHkgZGVzdHJveWVkIGFzIHBhcnQgb2YgcHJvdG9jb2wgZmxvd3MgKGZvciBleGFtcGxlOmUBIHJlY3ljbGVyIGV4cGlyYXRpb24gY2xlYW51cCBhbmQgZmVlIHJlbWFpbmRlciBidXJuaW5nKS4gVGhpcyBzdG9yYWdlIGl0ZW0ga2VlcHMgdHJhY2sgb2akIHRoZSB0b3RhbCB2YWx1ZSBvZiBzdWNoIGRlc3Ryb3llZCBjb2lucy4AYENvbnN1bWVkRnJlZVVubG9hZFRva2VucwABCAUFEQsQBAAYxCBDb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kIGFuZCBhbGlhcy4AVQEgVGhpcyBzdG9yYWdlIGtlZXBzIHRyYWNrIG9mIHRoZSBmcmVlIHVubG9hZCB0b2tlbnMgdGhhdCBoYXZlIGJlZW4gY29uc3VtZWQgYnkgcGVvcGxlrCBhbmQgbGl0ZSBwZW9wbGUsIHRvIGF2b2lkIGRvdWJsZSBzcGVuZGluZy4AcCBJdCBpcyBjbGVhcmVkIHBlcmlvZGljYWxseS4AZFJlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWQAAQgFBekMEAQAVE0BIFRyYWNrcyB3aGV0aGVyIGEgcmVjeWNsZXIgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgZ2l2ZW4gaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbi4AbQEgW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gY3JlYXRlcyBvbmUgcmVjeWNsZXIgY29sbGVjdGlvbiBwZXIgZGVub21pbmF0aW9uIGlumCBgW01pbmltdW1FeHBvbmVudCwgTWF4aW11bUV4cG9uZW50XWAuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHRSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleAABCAUF6Qw4BABUAQEgTGFzdCByZW1vdmVkIHJpbmcgaW5kZXggcGVyIGluc3RhbmNlIGFuZCByZWN5Y2xlciBkZW5vbWluYXRpb24uAEUBIFJpbmdzIGFyZSByZW1vdmVkIHNlcXVlbnRpYWxseSBzdGFydGluZyBmcm9tIGluZGV4IDAuIFRoZSBuZXh0IHJpbmcgdG8gY2hlY2sgZm9yLQEgZXhwaXJhdGlvbiBpcyBgbGFzdF9yZW1vdmVkICsgMWAgKG9yIGAwYCBpZiBub3RoaW5nIGhhcyBiZWVuIHJlbW92ZWQgeWV0KS4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFJlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyAAEEAgjpDAQAVE0BIE1hcHBpbmcgZnJvbSBhIHJlY3ljbGVyIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24gaXQgYmVsb25ncyB0by4ATQEgV2hlbiBhIGNvaW4gaXMgbG9hZGVkIGludG8gYSByZWN5Y2xlciwgdGhlIG1lbWJlciBrZXkgaXMgcmVjb3JkZWQgaGVyZSBzbyB0aGF0IHRoZUkBIHBhbGxldCBjYW4gbG9vayB1cCB3aGljaCBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBMUmVjeWNsZXJBbGlhc1N0YXRlcwABEAUFBQXtDPEMBABUVQEgU3RhdGUgb2YgcmVjeWNsZXIgYWxpYXNlcywgaW5kZXhlZCBieSBgKGluc3RhbmNlLCBkZW5vbWluYXRpb24sIHJpbmcgaW5kZXgsIGFsaWFzKWAuAFUBIEVhY2ggZW50cnkgcmVjb3JkcyBlaXRoZXIgYSB0ZW1wb3JhcnkgZmFpbGVkLWRpc3BhdGNoIGxvY2sgb3IgYSBwZXJtYW5lbnRseSBjb25zdW1lZOggYWxpYXMuIEFic2VuY2UgZnJvbSB0aGUgbWFwIG1lYW5zIHRoZSBhbGlhcyBpcyBhdmFpbGFibGUuAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpJASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhbiBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLlkBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBpbnN0YW5jZSBhbmRAICAgZGVub21pbmF0aW9uLm0BICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbjAgICBpdCBpcyBpbi5tASAqIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSAtIHBlci1hbGlhcyBsb2NrL3VubG9hZGVkIHN0YXRlLCBpbmRleGVkIGJ5IGluc3RhbmNlLCBkZW5vbWluYXRpb25IICAgYW5kIHJpbmcgaW5kZXguQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAEBSZWN5Y2xlcnNEdXN0aW5nAAEEBfUMEAQAXB0BIE1hcmtzIHJlY3ljbGVyIHJpbmdzIHRoYXQgaGF2ZSBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC4ANQEgV2hlbiBhIHJlY3ljbGVyIHJpbmcgaXMgcmVtb3ZlZCwgdGhlIGNsZWFudXAgb2YgaXRzIGxlZnRvdmVyIGFsaWFzIHN0YXRlcyBpblkBIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5IGhlcmVlASBpbmRpY2F0ZXMgdGhhdCBlbnRyaWVzIGluIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBmb3IgdGhlIGdpdmVuIGluc3RhbmNlLCBkZW5vbWluYXRpb24gYW5ktCByaW5nIGluZGV4IHN0aWxsIGV4aXN0IGFuZCBzaG91bGQgYmUgZHVzdGVkLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBEUmVjeWNsZXJzQXJjaGl2ZXMAAQQF9Qz5DAQAeE0BIEFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJlY3ljbGVyIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSBjb2lucy4AaQEgV2hlbiBhIHJlY3ljbGVyIHJpbmcgaXMgY2xlYW5lZCAoc2VlIFtgUmVjeWNsZXJNYW5hZ2VyOjpjbGVhbl91bmNoZWNrZWRgXSkgd2hpbGUgaXQgc3RpbGxdASBoYXMgYXQgbGVhc3Qgb25lIG5vdC11bmxvYWRlZCBhbGlhcywgYW4gW2BBcmNoaXZlZFJlY3ljbGVyYF0gaXMgcmVjb3JkZWQgaGVyZSBrZXllZCBieV0BIGAoaW5zdGFuY2UsIGRlbm9taW5hdGlvbiwgcmluZyBpbmRleClgLiBJdCBjb21taXRzIHRvIHRoZSB0cmllIG9mIHVubG9hZGVkIGFsaWFzZXMgYW5kBQEgdGhlIHJlY3ljbGVyIHJvb3QuIE5vdC11bmxvYWRlZCBjb2lucyBjYW4gc3RpbGwgYmUgdW5sb2FkZWQgd2l0aGUBIFtgUGFsbGV0Ojp1bmxvYWRfYXJjaGl2ZWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldGBdLCB3aGljaCB1cGRhdGVzIHRoZSBhcmNoaXZlLiBUaGXYIGFyY2hpdmUgaXMgcmVtb3ZlZCBvbmNlIGFsbCBjb2lucyBoYXZlIGJlZW4gdW5sb2FkZWQuAGEBIE9ubHkgdGhlIGNvbW1pdG1lbnRzIGFyZSBzdG9yZWQgb24tY2hhaW4uIFRoZSB1bmxvYWRlZC1hbGlhc2VzIHRyaWUgYW5kIHRoZSByaW5nIGNhbiBiZSEBIHJlY29uc3RydWN0ZWQgb2ZmY2hhaW4gdG8gYnVpbGQgdGhlIHJlY292ZXJ5IHByb29mcyBieSBsaXN0ZW5pbmcgdG8gdGhlCQEgW2BFdmVudDo6UmVjeWNsZXJBbGlhc1VubG9hZGVkYF0sIFtgRXZlbnQ6OlJlY3ljbGVyQXJjaGl2ZWRgXSBhbmT0IFtgRXZlbnQ6OkFyY2hpdmVkUmVjeWNsZXJVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0YF0gZXZlbnRzLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LkEBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC5tASAqIFtSZWN5Y2xlcnNBcmNoaXZlc10gLSBhcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUkICAgY29pbnMuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuTWVtYmVycwABBAIIEAQAOAkBIE1hcHBpbmcgZnJvbSBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSB0byB0aGUgcGVyaW9kIGl0IGJlbG9uZ3MgdG8uAEUBIFdoZW4gYSB1c2VyIHBheXMgZm9yIGEgcmVjeWNsZXIgdW5sb2FkIHRva2VuLCB0aGUgbWVtYmVyIGtleSBpcyByZWNvcmRlZCBoZXJlIHNvIQEgdGhhdCB0aGUgcGFsbGV0IGNhbiBsb29rIHVwIHdoaWNoIHBlcmlvZCB0aGUgbWVtYmVyIGtleSBjb3JyZXNwb25kcyB0by4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFBhaWRVbmxvYWRUb2tlbkNvbnN1bWVkAAEMBgUFYQwQBAA49CBDb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kLCByaW5nIGluZGV4IGFuZCBhbGlhcy4ASQEgV2hlbiBhIHBhaWQgdW5sb2FkIHRva2VuIGlzIGNvbnN1bWVkLCB0aGUgYWxpYXMgcHJvZHVjZWQgYnkgdGhlIHJpbmctVlJGIHByb29mIGlz9CBzdG9yZWQgaGVyZSB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyB3aXRoaW4gdGhlIHNhbWUgcmluZy4AUQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BQYWlkVGtuTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AUQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFBhaWRUa25NYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDrwICogW1BhaWRVbmxvYWRUb2tlbk1lbWJlcnNdIC0gdHJhY2tzIHJlZ2lzdGVyZWQgbWVtYmVyIGtleXMuGQEgKiBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIC0gdGhlIGNvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VuIGFsaWFzZXMuOQEgKiBbUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIHBlcmlvZC5FASAqIFtQYWlkVW5sb2FkVG9rZW5EdXN0aW5nXSAtIG1hcmtzIHBlcmlvZHMgd2l0aCBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AbFBhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZAABBAZVDBAEADgJASBUcmFja3Mgd2hldGhlciBhIHBhaWQgdG9rZW4gY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgZ2l2ZW4gcGVyaW9kLgBVASBVc2VzIGBJZGVudGl0eWAgaGFzaGVyIHNvIHRoYXQgaXRlcmF0aW9uIHlpZWxkcyBwZXJpb2RzIGluIG9yZGVyLCBlbmFibGluZyBlZmZpY2llbnRwIGNsZWFudXAgb2YgZXhwaXJlZCBwZXJpb2RzLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBYUGFpZFVubG9hZFRva2VuRHVzdGluZwABBAZVDBAEAEAtASBNYXJrcyBwYWlkIHVubG9hZCB0b2tlbiBwZXJpb2RzIHRoYXQgaGF2ZSBjb25zdW1lZCB0b2tlbnMgcGVuZGluZyByZW1vdmFsLgBZASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBpcyByZW1vdmVkLCB0aGUgY2xlYW51cCBvZiBpdHMgY29uc3VtZWQgdG9rZW5zIGluVQEgW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5TQEgaGVyZSBpbmRpY2F0ZXMgdGhhdCBjb25zdW1lZCB0b2tlbnMgZm9yIHRoZSBnaXZlbiBwZXJpb2Qgc3RpbGwgZXhpc3QgYW5kIHNob3VsZCBiZSAgZHVzdGVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgB4UGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuAAEEBlUMOAQAYPQgVHJhY2tzIHRoZSBuZXh0IHJpbmcgaW5kZXggdG8gY2xlYW4gZm9yIGVhY2ggZXhwaXJlZCBwZXJpb2QuADUBIFVzZWQgYnkgdGhlIE9DVyB0byBkZXRlcm1pbmUgY2xlYW51cCBwcm9ncmVzcyBhbmQgYnkgdGhlIGNvbGxlY3Rpb24gZGVsZXRpb27EIGV4dHJpbnNpYyB0byB2ZXJpZnkgYWxsIHJpbmdzIGhhdmUgYmVlbiBjbGVhbmVkLgA9ASBSaW5ncyBhcmUgY2xlYW5lZCBzZXF1ZW50aWFsbHkgKG9uZSBwZXIgT0NXIGludGVydmFsKSByYXRoZXIgdGhhbiBhbGwgYXQgb25jZS49ASBUaGlzIGlzIGludGVudGlvbmFsOiBhIHNpbmdsZSBzdG9yYWdlIGN1cnNvciBlbmFibGVzIE8oMSkgY29tcGxldGlvbiBjaGVja3MgaW7MIGJvdGggW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9jbGVhbl9yaW5nYF0gYW5kRQEgW2BQYWlkVGtuTWFuYWdlcjo6ZW5zdXJlX2Nhbl9kZWxldGVfY29sbGVjdGlvbmBdLiBUaGUgYWx0ZXJuYXRpdmUg4oCUIHN1Ym1pdHRpbmdVASBhbGwgcmluZyBjbGVhbnMgaW4gcGFyYWxsZWwg4oCUIHdvdWxkIHJlcXVpcmUgZmV0Y2hpbmcgcmluZyBtZW1iZXJzIHRvIGNoZWNrIHdoZXRoZXJNASBlYWNoIHJpbmcgd2FzIGFscmVhZHkgY2xlYW5lZCAoc2luY2UgYHJpbmdfc3RhdHVzYCBzdGlsbCByZXBvcnRzIGB0b3RhbCA+IDBgIGFmdGVyVQEgY2xlYW51cCBiZWNhdXNlIHJpbmdzIGFyZSBub3QgcmVtb3ZlZCB1bnRpbCBjb2xsZWN0aW9uIGRlbGV0aW9uKS4gQ2xlYW51cCBvZiBleHBpcmVkTQEgY29sbGVjdGlvbnMgaXMgbm90IHRpbWUtY3JpdGljYWwsIHNvIHRoZSBzaW1wbGVyIHNlcXVlbnRpYWwgYXBwcm9hY2ggaXMgcHJlZmVycmVkLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuHQEgKiBbUGFpZFVubG9hZFRva2VuTmV4dFJpbmdUb0NsZWFuXSAtIHNlcXVlbnRpYWwgcmluZyBjbGVhbnVwIHByb2dyZXNzLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AJEluc3RhbmNlcwABBAU4/QwEABDAIFRoZSBjb2luYWdlIGluc3RhbmNlcywga2V5ZWQgYnkgW2BJbnN0YW5jZUlkYF0uAHEBIENyZWF0ZWQgYnkgW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0uIEVudHJpZXMgYXJlIG5ldmVyIHJlbW92ZWQ6IHRoZSBjb2lucyBhbmTsIHJlY3ljbGVycyBvZiBhbiBpbnN0YW5jZSBjYW4gb3V0bGl2ZSBhbnkgc2luZ2xlIG9wZXJhdGlvbi4AOE5leHRJbnN0YW5jZUlkAQA4EAAAAAAEPQEgVGhlIFtgSW5zdGFuY2VJZGBdIHRoYXQgW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gYWxsb2NhdGVzIG5leHQuADxBc3NldFRvSW5zdGFuY2UAAQgCBRUNEAQAEEEBIFJldmVyc2UgbG9va3VwIGZyb20gYW4gdW5kZXJseWluZyBhc3NldCB0byB0aGUgaW5zdGFuY2VzIHdyYXBwaW5nIGl0LCBhcyBhIHNldC4A9CBBbiBhc3NldCBtYXkgYmUgd3JhcHBlZCBieSBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnSEIFtgSW5zdGFuY2VSZWNvcmQ6OmFzc2V0X3VuaXRgXXMuAEBQb3RDb250cmlidXRpb25zAQEMBQICGQ1FAUAAAAAAAAAAAAAAAAAAAAAABDkBIFdoYXQgZWFjaCBmdW5kZXIgaGFzIHB1dCBpbnRvIGFuIGluc3RhbmNlJ3MgcG90IHRocm91Z2ggW2BQYWxsZXQ6OmZ1bmRfcG90YF0uAAFdBQABCQgAPFBSZWN5Y2xlclJpbmdFeHBvbmVudEkFBAoMsCBUaGUgcmluZyBleHBvbmVudCBmb3IgcmVjeWNsZXIgY29sbGVjdGlvbnMuAD0BIE5PVEU6IENoYW5naW5nIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIHJlcXVpcmVzIHN1YnN0YW50aWFsIG1pZ3JhdGlvbiB3b3JrLgBsUGFpZFVubG9hZFRva2VuUmluZ0V4cG9uZW50SQUECgTUIFRoZSByaW5nIGV4cG9uZW50IGZvciBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9ucy4APE1pbmltdW1FeHBvbmVudA0EBAAErCBUaGUgbWluaW11bSBleHBvbmVudCBmb3IgdGhlIGRlbm9taW5hdGlvbi4APE1heGltdW1FeHBvbmVudA0EBA4ErCBUaGUgbWF4aW11bSBleHBvbmVudCBmb3IgdGhlIGRlbm9taW5hdGlvbi4AhE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZQ0EBAAwXQEgVGhlIG1pbmltdW0gY29pbiBleHBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BhdGNoIGEgY2FsbCBgdW5sb2FkX3JlY3ljbGVyXypgIHdpdGjUIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYEFzVW5sb2FkVG9rZW5Gcm9tT3V0cHV0YC4AYQEgVGhpcyBlbnN1cmVzIHRoZSBmZWUgY29pbiBpcyBsYXJnZSBlbm91Z2ggdG8gcGVuYWxpemUgZmFpbGluZyB0cmFuc2FjdGlvbnMsIGJ1dCBpdCBkb2VzuCBub3QgbmVlZCB0byBjb3ZlciB0aGUgd2hvbGUgdW5sb2FkIHRva2VuIGZlZS4AUQEgVGhlIGV4cG9uZW50IGlzIGdsb2JhbCwgc28gdGhlIGNvaW4gdmFsdWUgaXQgcmVwcmVzZW50cyBzY2FsZXMgd2l0aCBlYWNoIGluc3RhbmNlJ3NlASBbYEluc3RhbmNlUmVjb3JkOjphc3NldF91bml0YF0uIEFuIGluc3RhbmNlIHdob3NlIHVuaXQgaXMgd29ydGggbGVzcyB0aGVyZWZvcmUgcGVuYWxpemVzbCBmYWlsaW5nIHRyYW5zYWN0aW9ucyBsZXNzLgBRASBUaGUgaGVscGVyIGZ1bmN0aW9uIGB3ZWlnaHRfZm9yX3VubG9hZF9yZWN5Y2xlcl9wYXlpbmdfdXNpbmdfb3V0cHV0YCBjYW4gYmUgdXNlZCB0b8wgZXZhbHVhdGUgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciB0aGlzIG9wZXJhdGlvbi4APE1heFNwbGl0T3V0cHV0czgQIAAAAASsIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvdXRwdXRzIGZvciBhIHNwbGl0LgBATWF4Q29uc29saWRhdGlvbjgQQAAAAATcIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGlhcyBwcm9vZnMgaW4gYSBjb25zb2xpZGF0aW9uLgBITWF4QmF0Y2hVbnBhaWRMb2FkOBAKAAAACLggVGhlIG1heGltdW0gbnVtYmVyIG9mIGlubmVyIGNhbGxzIGluIGEgc2luZ2xlDQEgW2BDYWxsOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoYF0gZGlzcGF0Y2guAJRVbmxvYWRUb2tlblRpbWVQZXJpb2RQZW9wbGVMaXRlUGVvcGxlOBCAUQEABOAgVGhlIHRpbWUgcGVyaW9kIGR1cmF0aW9uIGZvciB1bmxvYWQgdG9rZW5zLCBpbiBzZWNvbmRzLgCoVW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yUGVvcGxlRQFAANDtkC4AAAAAAAAAAAAAACBdASBUaGUgYWxsb3dhbmNlIG9mIHVubG9hZCB0b2tlbnMgdGhhdCBhIHBlcnNvbiBjYW4gdXNlIHBlciB0aW1lIHBlcmlvZCwgZXhwcmVzc2VkIGluIHRoZUQgbmF0aXZlIGN1cnJlbmN5LgBZASBUaGUgYWxsb3dhbmNlIGlzIG5hdGl2ZSByYXRoZXIgdGhhbiBwZXItYXNzZXQgYmVjYXVzZSB0aGUgYnVkZ2V0IGlzIHNoYXJlZCBhY3Jvc3MgYWxsHQEgaW5zdGFuY2VzLCBzbyB0aGVyZSBpcyBubyBzaW5nbGUgdW5kZXJseWluZyBhc3NldCB0byBkZW5vbWluYXRlIGl0IGluLgBVASBVc2UgcGFsbGV0IHZpZXcgdG8gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mIHVubG9hZCB0b2tlbnMgZ2l2ZW4gdGhlIGN1cnJlbnRkIHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgC4VW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yTGl0ZVBlb3BsZUUBQADodkgXAAAAAAAAAAAAAAAUYQEgVGhlIGFsbG93YW5jZSBvZiB1bmxvYWQgdG9rZW5zIHRoYXQgYSBsaXRlIHBlcnNvbiBjYW4gdXNlIHBlciB0aW1lIHBlcmlvZCwgZXhwcmVzc2VkIGluVCB0aGUgbmF0aXZlIGN1cnJlbmN5LgBZASBVc2UgcGFsbGV0J3MgZ2V0X2ZyZWVfdW5sb2FkX3Rva2VuX2luZm8oKSB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdW5sb2FkyCB0b2tlbnMgZ2l2ZW4gdGhlIGN1cnJlbnQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuAIBNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZDgQ6AMAABAZASBIYXJkIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIHBlciB0aW1lIHBlcmlvZC4AjCBUaGUgZWZmZWN0aXZlIGZyZWUgdG9rZW4gbGltaXQgaXM6CQEgYG1pbihhbGxvd2FuY2UgLyBjdXJyZW50X2ZlZSwgTWF4RnJlZVVubG9hZFRva2Vuc1BlclRpbWVQZXJpb2QpYC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAQAAAAE5CBUaGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgBUQ29pbkZhaWx1cmVMb2NrUGVyaW9kKCA8AAAAAAAAABBRASBUaGUgYmFzZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBsb2NrIGEgY29pbiBhZnRlciBhIGZhaWxlZCBkaXNwYXRjaCBpbiBgQXNDb2luYCBmbG93LgA9ASBUaGUgYWN0dWFsIGxvY2sgZHVyYXRpb24gaXMgZXhwb25lbnRpYWw6IGAyXnJldHJpZXMgKiBiYXNlYCB3aGVyZSBgcmV0cmllc2AgaXOQIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZmFpbHVyZXMuADhwYWxsZXRfYWNjb3VudASAbW9kbGNvaW5hZ2UgAAAAAAAAAAAAAAAAAAAAAAAAAAAEeCBUaGUgYWNjb3VudCBpZCBvZiB0aGUgcGFsbGV0LgABHQ0AAGB6wnEsinalKsO6EKKQIeyZvWl3bwh6jlUpoNqiPjWgeEBnZXRfaW5zdGFuY2VfaWRzBCBhc3NldF9pZGkBYQQQ4CBHZXQgZXZlcnkgaW5zdGFuY2Ugd3JhcHBpbmcgdGhlIGdpdmVuIHVuZGVybHlpbmcgYXNzZXQuAFEBIEFuIGFzc2V0IGNhbiBiZSB3cmFwcGVkIGJ5IHNldmVyYWwgaW5zdGFuY2VzLCBlYWNoIHdpdGggaXRzIG93biBjb2luIHVuaXQ7IHJlYWQgdGhlgCB1bml0IG9mIG9uZSBmcm9tIFtgSW5zdGFuY2VzYF0uAHrCcSyKdqUqw7oQopAh7Jk1o8MuRC4arR5x9oR5UyeGQGdldF9sb2FkX2RlcG9zaXQAsQUEpCBHZXQgdGhlIGxvYWQgZGVwb3NpdCBjdXJyZW5jeSBhbmQgcHJpY2UuAHrCcSyKdqUqw7oQopAh7Jmvop1/syVNQ2nQmQlswxx9PGdldF9wb3RfYWNjb3VudAQsaW5zdGFuY2VfaWQ4NQEEVQEgR2V0IHRoZSBwb3QgYWNjb3VudCBvZiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgYE5vbmVgIGZvciBhIHN1ZmZpY2llbnQgb3IgbWlzc2luZyBvbmUuAHrCcSyKdqUqw7oQopAh7JlDwvDoXo5iIFZik/VBqJD1OGdldF9wb3Rfc3RhdHVzBCxpbnN0YW5jZV9pZDghDQhFASBHZXQgdGhlIHN0YXR1cyBvZiBhIHNwb25zb3JlZCBpbnN0YW5jZSdzIHBvdCwgYE5vbmVgIGZvciBhIHN1ZmZpY2llbnQgb3IgbWlzc2luZyggaW5zdGFuY2UuAHrCcSyKdqUqw7oQopAh7JntBeLINCXx9a97Bqxp5SRtVGdldF9wb3RfY29udHJpYnV0aW9ucwgsaW5zdGFuY2VfaWQ4GGZ1bmRlcgQxDQwtASBQZXIgYXNzZXQgaWQ6IHRoZSBmdW5kZXIncyByZWNvcmRlZCBwb3QgY29udHJpYnV0aW9uIGFuZCBob3cgbXVjaCBvZiBpdCBpcwUBIHdpdGhkcmF3YWJsZSByaWdodCBub3csIHdoaWNoIGlzIHRoZSBjb250cmlidXRpb24gY2FwcGVkIGJ5IHdoYXRRASBbYFBhbGxldDo6d2l0aGRyYXdfcG90X2Z1bmRzYF0gY291bGQgYWN0dWFsbHkgbW92ZSBvdXQgb2YgdGhlIHBvdCBpbiB0aGF0IGN1cnJlbmN5LgB6wnEsinalKsO6EKKQIeyZoQsNTeyQEo13VbH+tyMtgmhnZXRfZnJlZV91bmxvYWRfdG9rZW5faW5mbwA9CBBNASBHZXQgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZyZWUgdW5sb2FkIHRva2VucyBkaXN0cmlidXRlZCB0byBwZW9wbGUgYW5kIGxpdGUgcGVvcGxlrCBnaXZlbiB0aGUgY3VycmVudCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AuCBSZXR1cm5zOiBgKGxpbWl0X3Blb3BsZSwgbGltaXRfbGl0ZV9wZW9wbGUpYC4AesJxLIp2pSrDuhCikCHsmY0Gq/akf3sBiWyVRYq1aRdgZ2V0X3JlY3ljbGVyX3Jpbmdfc3RhdHVzDCxpbnN0YW5jZV9pZDgUdmFsdWUNBBRpbmRleDg5DQToIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcmVjeWNsZXIgYXQgYSBnaXZlbiByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZ67euY8hHRiBWFaofX44ltGhnZXRfcmVjeWNsZXJfcmluZ19yZXZpc2lvbgwsaW5zdGFuY2VfaWQ4FHZhbHVlDQQUaW5kZXg45ATwIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jm178aAmmvzawOuV/TGbASJaGdldF9wYWlkX3Rva2VuX3Jpbmdfc3RhdHVzCBhwZXJpb2Q4FGluZGV4ODkNBB0BIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmaD2wxD2qCqffHbvIH/9njVwZ2V0X3BhaWRfdG9rZW5fcmluZ19yZXZpc2lvbggYcGVyaW9kOBRpbmRleDjkBCUBIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZMIxMWyQHupTsK3HNv41wO4hnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0BCxpbnN0YW5jZV9pZDhBARRlASBHZXQgdGhlIGFtb3VudCBvZiBhbiBpbnN0YW5jZSdzIHVuZGVybHlpbmcgYXNzZXQgdGhhdCBjdXJyZW50bHkgcGF5cyBmb3Igb25lIHBhaWQgdW5sb2FkHCB0b2tlbi4ATQEgUmV0dXJucyBgTm9uZWAgaWYgdGhlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBpdHMgYXNzZXQgY2Fubm90IGN1cnJlbnRseSBiZWEBIGNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3ksIGluIHdoaWNoIGNhc2Ugb25seSBuYXRpdmUgZmVlIHBheW1lbnQgaXMgYXZhaWxhYmxlLgB6wnEsinalKsO6EKKQIeyZfWayi3UE51UKSTzOCwx9faBnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX3F1b3RlX2luX2Fzc2V0CCxpbnN0YW5jZV9pZDgUY291bnQ4QQEcWQEgR2V0IHRoZSBhbW91bnQgb2YgYW4gaW5zdGFuY2UncyB1bmRlcmx5aW5nIGFzc2V0IHRoYXQgY3VycmVudGx5IHBheXMgZm9yIGBjb3VudGAgcGFpZDwgdW5sb2FkIHRva2Vucy4AWQEgVGhlIGJhdGNoIGlzIHF1b3RlZCBhcyBhIHNpbmdsZSBzd2FwIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgc28gcG9vbCBzbGlwcGFnZSBtYWtlc00BIHRoZSByZXN1bHQgZGlmZmVyIGZyb20gYGNvdW50YCB0aW1lcyB0aGUgc2luZ2xlLXRva2VuIHF1b3RlLiBSZXR1cm5zIGBOb25lYCBpZiB0aGVdASBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdCwgb3IgaWYgaXRzIGFzc2V0IGNhbm5vdCBjdXJyZW50bHkgYmUgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZfggY3VycmVuY3ksIGluIHdoaWNoIGNhc2Ugb25seSBuYXRpdmUgZmVlIHBheW1lbnQgaXMgYXZhaWxhYmxlLgB6wnEsinalKsO6EKKQIeyZzr1EoM9R1bqZT2wP4Czp6oxnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX25hdGl2ZQBFAQQNASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSBuYXRpdmUgY3VycmVuY3kgZm9yIHBhaWQgdW5sb2FkIHRva2Vucy4AesJxLIp2pSrDuhCikCHsmZ5ekF5ZqkCfsYBreJmmF4VEZ2V0X2NvaW5fYnlfb3duZXIEFG93bmVyBD0NBIQgR2V0IGNvaW4gZGV0YWlscyBmb3IgYW4gYWNjb3VudC4AesJxLIp2pSrDuhCikCHsmdqcFukkgqX3o5fxn/ykfxpMZ2V0X2NvaW5fbG9ja191bnRpbAQUb3duZXIErQMMVQEgR2V0IHRoZSBVbml4IHRpbWVzdGFtcCB1bnRpbCB3aGljaCBhIGNvaW4gaXMgY3VycmVudGx5IGxvY2tlZCBhZnRlciBmYWlsZWQgZGlzcGF0Y2guAEkBIFJldHVybnMgYE5vbmVgIHdoZW4gdGhlcmUgaXMgbm8gbG9jayBvciB3aGVuIHRoZSBzdG9yZWQgbG9jayBoYXMgYWxyZWFkeSBleHBpcmVkLgB6wnEsinalKsO6EKKQIeyZ1j7EPEhAlGKtF/lH+UF12GBnZXRfcmVjeWNsZXJfbWVtYmVyX2luZm8EGG1lbWJlcghBDQQZASBHZXQgdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24gZm9yIGEgc3BlY2lmaWMgcmVjeWNsZXIgbWVtYmVyIGtleS4AesJxLIp2pSrDuhCikCHsmU8iBwpDfNFUQuU+iaAqaHRQaXNfcGFpZF90b2tlbl9tZW1iZXIEGG1lbWJlcghRAQTUIENoZWNrIHdoZXRoZXIgYSBwYWlkIHRva2VuIG1lbWJlciBrZXkgaXMgcmVnaXN0ZXJlZC4AesJxLIp2pSrDuhCikCHsmYHCftU/0aLF8kvNth2X8OpQZ2V0X3JlY3ljbGVyX21lbWJlcnMMLGluc3RhbmNlX2lkOBR2YWx1ZQ0EFGluZGV4OEkECJAgR2V0IHRoZSBtZW1iZXJzIG9mIGEgcmVjeWNsZXIgcmluZy4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmU6OaoU2Bn5yvlKSiqXJDcRIcmVjeWNsZXJfcmluZ19yb290DCxpbnN0YW5jZV9pZDgUdmFsdWUNBBRpbmRleDhFDQRZASBHZXQgdGhlIHJpbmctVlJGIHJvb3QgKHRoZSAicmVjeWNsZXIgcm9vdCIpIG9mIGEgcmVjeWNsZXIgcmluZywgaWYgaXQgaGFzIGJlZW4gYnVpbHQuAHrCcSyKdqUqw7oQopAh7JnxOPwgaPI+APZVDu3OYk9hbGdldF9wYWlkX3Rva2VuX3JpbmdfbWVtYmVycwgYcGVyaW9kOBRpbmRleDhJBAiYIEdldCB0aGUgbWVtYmVycyBvZiBhIHBhaWQgdG9rZW4gcmluZy4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmcrSxjLQSXUGuKD2GP+yq5ZoaXNfcmVjeWNsZXJfYWxpYXNfdW5sb2FkZWQQLGluc3RhbmNlX2lkOBR2YWx1ZQ0EFGluZGV4OBRhbGlhcwhRAQz0IENoZWNrIGlmIGEgcmVjeWNsZXIgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1bmxvYWRlZCAoc3BlbnQpLgDwIElmIHRoZSByZWN5Y2xlciBpcyBub3QgbGl2ZSwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JkujYsqm8QIyFrkoAWIV9CPcGlzX3BhaWRfdG9rZW5fYWxpYXNfY29uc3VtZWQMGHBlcmlvZDgUaW5kZXg4FGFsaWFzCFEBDMAgQ2hlY2sgaWYgYSBwYWlkIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmb8S0HqINh0O9TXsi1wZ5dNwaXNfZnJlZV90b2tlbl9hbGlhc19jb25zdW1lZAgYcGVyaW9kOBRhbGlhcwhRAQzAIENoZWNrIGlmIGEgZnJlZSB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JmRsy8uvB8r+d6VykJZ3bjFuHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXQAcQIUMQEgR2V0IHRoZSB3b3JzdC1jYXNlIHdlaWdodCBmb3IgYSB0cmFuc2FjdGlvbiB1c2luZyBvdXRwdXQtYmFzZWQgZmVlIHBheW1lbnQuACkBIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWF4aW11bSB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9ucyBkaXNwYXRjaGVkIHdpdGhVASBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLCB1c2VmdWwgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0byBmaW5kIGEgZ29vZCB2YWx1ZSBmb3KUIGBNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWVgLgBEAAA8TWVtYmVyc05vdGlmaWVyATxNZW1iZXJzTm90aWZpZXI4LFN1YnNjcmliZXJzAAEEBpxJDQQABEEBIFN1YnNjcmliZXIgcmVnaXN0cnkgd2l0aCB0aGVpciBzdWJzY3JpYmVkIGNvbGxlY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiBzdGF0ZS4AVENvdW50ZXJGb3JTdWJzY3JpYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAFRTdWJzY3JpcHRpb25XaGl0ZWxpc3QAAQQGnE0NBAAUjCBTdWJzY3JpcHRpb25zIGFueW9uZSBtYXkgYWN0aXZhdGUuADUBIEFuIGVudHJ5IGlzIGNvbnN1bWVkIHRoZSBmaXJzdCB0aW1lIHRoZSBwYXJhY2hhaW4gc3Vic2NyaWJlcywgdGhyb3VnaCBlaXRoZXI9ASBgc3Vic2NyaWJlX3doaXRlbGlzdGVkYCBvciBgc3Vic2NyaWJlYC4gT25jZSBjb25zdW1lZCwgb25seSBgTWFuYWdlT3JpZ2luYCBjYW6AIHN1YnNjcmliZSB0aGF0IHBhcmFjaGFpbiBhZ2Fpbi4AVFN1YnNjcmliZWRDb2xsZWN0aW9ucwABBAYIEAQABNggQ29sbGVjdGlvbnMgYXQgbGVhc3Qgb25lIHN1YnNjcmliZXIgaXMgc3Vic2NyaWJlZCB0by4ATFNlYWxlZEJhdGNoU2VxdWVuY2UBACggAAAAAAAAAAAMiCBTZXF1ZW5jZSBudW1iZXIgZm9yIHNlYWxlZCBiYXRjaC70IEluY3JlbWVudGVkIHdoZW4gYSBiYXRjaCBpcyBzZWFsZWQgLSByZWFkeSBmb3IgZGlzdHJpYnV0aW9uLvAgU2VydmVzIGFzIHRoZSBiYXRjaCBpZGVudGlmaWVyIGZvciByZXBsYXkgYW5kIGRpc3RyaWJ1dGlvbi4AJFBhZ2VTdGF0ZQEAUQ0gAAAAAAAAAAAE8CBQYWdpbmcgc3RhdGU6IHdyaXRlIHBhZ2UsIHNlbmQgcGFnZSwgYW5kIGxhc3QgdXBkYXRlIGJsb2NrLgA4UGVuZGluZ1VwZGF0ZXMAAQwGBgZVDRAEAAx8IENoYW5nZWQgcmluZyByb290IGtleXMsIHBhZ2VkLjEBIEtleTogKHBhZ2VfaW5kZXgsIGlkZW50aWZpZXIsIHJpbmdfaW5kZXgpLiBQb3B1bGF0ZWQgYnkgYE9uUmluZ1Jvb3RDaGFuZ2VgLDkBIGNvbnN1bWVkIGJ5IGBlbnF1ZXVlX3VwZGF0ZXNgIG9uZSBwYWdlIGF0IGEgdGltZSBmcm9tIGBQYWdlU3RhdGU6OnNlbmRfcGFnZWAuAEBQYWdlVXBkYXRlc0NvdW50AQEEBsUDOBAAAAAABLQgUGVyLXBhZ2UgY291bnQgb2YgZW50cmllcyBpbiBQZW5kaW5nVXBkYXRlcy4ALFBlbmRpbmdJbml0AAEEBpxZDQQABLwgU3RhdGUgZm9yIHBhZ2luYXRlZCBzdWJzY3JpYmVyIGluaXRpYWxpemF0aW9uLgBUQ291bnRlckZvclBlbmRpbmdJbml0AQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASFNlYWxlZEJhdGNoSW5kaWNlcwABBAYIyQUEAATcIEluZGljZXMgcGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBzZWFsZWQgKGN1cnJlbnQpIGJhdGNoLgAwQ3VycmVudEJhdGNoAABdDQQABIggQ3VycmVudCBiYXRjaCBkaXN0cmlidXRpb24gc3RhdGUuAGxTdWJzY3JpYmVyc1dpdGhDdXJyZW50QmF0Y2gAAQQGnBAEAAToIFRyYWNrcyB3aGljaCBzdWJzY3JpYmVycyBoYXZlIHJlY2VpdmVkIHRoZSBjdXJyZW50IGJhdGNoLgA4TGFzdFJlcGxheVRpbWUAAQgGBmENKAQACNAgTGFzdCByZXBsYXkgdGltZSBwZXIgKHN1YnNjcmliZXIsIGNvbGxlY3Rpb24pIHBhaXIu0CBVc2VkIHRvIGVuZm9yY2UgYSBjb29sZG93biBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cy4AAbUFAAERCAAoOE1heFN1YnNjcmliZXJzOBAKAAAABJwgTWF4aW11bSBudW1iZXIgb2Ygc3Vic2NyaWJlcnMgYWxsb3dlZC4ASE1heFVwZGF0ZXNQZXJCYXRjaDgQCgAAAARsIE1heGltdW0gdXBkYXRlcyBwZXIgYmF0Y2guAGxNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI4EAMAAAAEzCBNYXhpbXVtIGNvbGxlY3Rpb25zIGEgc3Vic2NyaWJlciBjYW4gc3Vic2NyaWJlIHRvLgA4TWF4Q29sbGVjdGlvbnM4EGQAAAAEkCBNYXhpbXVtIG51bWJlciBvZiByaW5nIGNvbGxlY3Rpb25zLgBMVXBkYXRlVHJpZ2dlckJsb2NrczgQAQAAAATEIE1pbmltdW0gbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIHVwZGF0ZSBiYXRjaGVzLgBYVXBkYXRlVHJpZ2dlclRocmVzaG9sZDgQAQAAAATsIE1pbmltdW0gbnVtYmVyIG9mIHVwZGF0ZXMgdG8gdHJpZ2dlciBpbW1lZGlhdGUgYmF0Y2ggc2VuZC4AZFJlcXVlc3RSZXBsYXlSZW1vdGVXZWlnaHRxAgxBnAAEJQEgUGVyLWluZGV4IHdlaWdodCBzdXJjaGFyZ2UgZm9yIHJlbW90ZSBleGVjdXRpb24gb24gdGhlIHN1YnNjcmliZXIgY2hhaW4uAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABNwgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIHJ1bnMuAERTdHVja0JhdGNoVGltZW91dDgQZAAAAATkIE51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggYSBzdHVjayBiYXRjaCBpcyBhYmFuZG9uZWQuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAABFkBIENvb2xkb3duLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIHJlcGxheSByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgc3Vic2NyaWJlciBhbmQgY29sbGVjdGlvbi4AAWUNAAAARQAAHEFpcmRyb3ABHEFpcmRyb3AYGEV2ZW50cwABBAUIaQ0EAATYIFJlZ2lzdGVyZWQgYWlyZHJvcCBldmVudHMsIGtleWVkIGJ5IHRoZWlyIGlkZW50aWZpZXIuADhBY3Rpb25TY2hlZHVsZQABCAYGcQ0QBAAIXQEgUGVuZGluZyBsaWZlY3ljbGUgYWN0aW9ucyBmb3IgcmVnaXN0ZXJlZCBldmVudHMsIG9yZGVyZWQgYnkgdGhlIHRpbWVzdGFtcCBhdCB3aGljaCB0aGVoIGFjdGlvbiBzaG91bGQgdGFrZSBwbGFjZS4ANFJlZ2lzdHJhdGlvbnMAAQgFBnkNHQgEAAgNASBQZXItZXZlbnQgcGFydGljaXBhbnQgcmVnaXN0cmF0aW9ucywga2V5ZWQgYnkgMzItYnl0ZSBlbnRyb3B5IHNsb3SYIGluIGJpZy1lbmRpYW4gb3JkZXIgdW5kZXIgYElkZW50aXR5YC4AHFdpbm5lcnMAAQgFAn0NGQgEAAhxASBXaW5uZXJzIGZvciBhbiBldmVudCwga2V5ZWQgYnkgdGhlIGV2ZW50IGlkZW50aWZpZXIgYW5kIHRoZWlyIHJlZ2lzdHJhdGlvbiBlbnRyeS4gVGhpcyBtYXBz6CB0byB0aGUgcGFydGljaXBhbnQncyB0aWNrZXQgZm9yIG9mZmNoYWluIGxvb2t1cCBwdXJwb3Nlcy4AMEV2ZW50RW50cm9weQABBAUIGQgEAAhdASBFbnRyb3B5IHNlZWQgY2FwdHVyZWQgYXQgZHJhdyB0aW1lLCBwZXIgZXZlbnQuIFRoaXMgc2VydmVzIGFzIGEgcGFydGl0aW9uIHBvaW50IGluIHRoZfAgcGFydGljaXBhdGlvbiB0aWNrZXQgb3JkZXJlZCBsaXN0IGluIG9yZGVyIHRvIHBpY2sgd2lubmVycy4APFN1cHBvcnRlZEFzc2V0cwABBAVpAUUBBAAQZQEgUGVyLWFzc2V0IGVuYWJsZW1lbnQgZ2F0ZS4gQW4gYXNzZXQgaXMgdXNhYmxlIGZvciBzY2hlZHVsaW5nIGV2ZW50cyBpZmYgaXQgaXMgcHJlc2VudCBpbmUBIHRoaXMgbWFwOyB0aGUgc3RvcmVkIHZhbHVlIGlzIHRoZSBhbW91bnQgdGhlIHBhbGxldCB0cmFuc2ZlcnJlZCBpbnRvIGl0cyBwb3QgdG8ga2VlcCB0aGVVASBwb3QncyBhc3NldCBhY2NvdW50IGFsaXZlICh0aGUgYXNzZXQncyBFRCBhdCB0aGUgdGltZSBvZiBlbmFibGluZykuIGBlbmFibGVfYXNzZXRgIC/IIGBkaXNhYmxlX2Fzc2V0YCBhcmUgdGhlIG9ubHkgd2F5cyB0byBtdXRhdGUgdGhpcy4AAc0FAAEVCAAUIFBhbGxldElksQkgcG9wL2FkcnAEwCBQYWxsZXQgaWQgdXNlZCB0byBkZXJpdmUgdGhlIHByaXplIHBvdCBhY2NvdW50LgAoQ2xlYXJMaW1pdDgQZAAAAAjUIE1heGltdW0gbnVtYmVyIG9mIHJlZ2lzdHJhdGlvbiBlbnRyaWVzIHByb2Nlc3NlZCBwZXLoIGBjbGVhbl91cF97cmVnaXN0cmF0aW9ucyx3aW5uZXJzfV9hdXRob3JpemVkYCBpbnZvY2F0aW9uLgAkRHJhd0xpbWl0OBBkAAAABDEBIE1heGltdW0gbnVtYmVyIG9mIHdpbm5lciBzbG90cyBpbnNlcnRlZCBwZXIgYGRyYXdfd2lubmVyc19hdXRob3JpemVkYCBjYWxsLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATYIEhvdyBmcmVxdWVudGx5IHRoZSBvZmZjaGFpbiB3b3JrZXIgZmlyZXMgKGluIGJsb2NrcykuADhhaXJkcm9wX3BvdF9pZASAbW9kbHBvcC9hZHJwAAAAAAAAAAAAAAAAAAAAAAAAAAAEdCBBY2NvdW50IGlkIG9mIHRoZSBwcml6ZSBwb3QuAAGBDQAAAEYAABhIb25vdXIBGEhvbm91cgwYUG9pbnRzAAEEAgiFDQQAEJggUG9pbnRzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgYnkgdm90ZXJzLgB1ASBSZWNvcmRzIGluIFtgUG9pbnRzYF0gdHJhY2sgdXNlZCBwb2ludHMgdG8gcHJldmVudCBkb3VibGUtc3BlbmRpbmcgYW5kIGVuZm9yY2UgcmF0ZS1saW1pdGluZ3ggYmFzZWQgb24gdGhlIGxhc3QgdXNhZ2UgdGltZS4AFFZvdGVzAAEEAggQBAAQfCBWb3RlcyB0aGF0IGhhdmUgYmVlbiBiZXN0b3dlZC4AVQEgUHJldmVudHMgZG91YmxlLXZvdGluZyBvbiB0aGUgc2FtZSBzdWJqZWN0IGJ5IHRoZSBzYW1lIHZvdGVyLCBhcyBbYFN1YmplY3RBbGlhc2BdIGlz0CB1bmlxdWVseSBkZXJpdmVkIGZyb20gW2BTdWJqZWN0SWRgXSBmb3IgZWFjaCB2b3Rlci4AFFRhbGx5AAEEAgglCAQABDEBIEFic29sdXRlIGhvbm91ciBzY29yZSBvZiBhIHN1YmplY3QuIEluaXRpYWxpemVkIHRvIC0xIHRvIG9mZnNldCBzZWxmLXZvdGVzLgAB1QUAASEIAAhMUG9pbnRGcmVlemVEdXJhdGlvbigggFEBAAAAAAAEBQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IG11c3QgcGFzcyBiZWZvcmUgYSBwb2ludCBjYW4gYmUgcmV1c2VkLgA0Q2FsbE1vcnRhbGl0eSggLAEAAAAAAAAEPQEgRHVyYXRpb24gaW4gc2Vjb25kcyBhIGBiZXN0b3dgIGNhbGwgcmVtYWlucyB2YWxpZCBhZnRlciBpdHMgYGNhbGxfdmFsaWRfZnJvbWAuAAGJDQAAAEcAADhQZW9wbGVBaXJkcm9wcwE4UGVvcGxlQWlyZHJvcHMINE5leHREcmF3SW5kZXgBACggAAAAAAAAAAAEFQEgSW5kZXggb2YgdGhlIG5leHQgZHJhdyB0byBzY2hlZHVsZS4gRmVlZHMgW2BQYWxsZXQ6OmRyYXdfZXZlbnRfaWRgXS4AJERyYXdTYWx0cwABBAUIjQ0EABBpASBQZXItZHJhdyBzbG90IHNhbHQsIGNhcHR1cmVkIGZyb20gdGhlIHJhbmRvbW5lc3Mgc291cmNlIGF0IHNjaGVkdWxpbmcgdGltZSwgdG9nZXRoZXIgd2l0aFkBIHRoZSBkcmF3J3MgZW5kIHRpbWUuIFRoZSBzYWx0IGlzIG9ubHkgcmVhZCBkdXJpbmcgcmVnaXN0cmF0aW9uLCB3aGljaCBjbG9zZXMgc3RyaWN0bHllASBiZWZvcmUgdGhlIGVuZCB0aW1lLCBzbyBhbiBlbnRyeSB3aG9zZSBlbmQgdGltZSBoYXMgcGFzc2VkIGlzIGRlYWQgYW5kIGlzIHJlbW92ZWQgYnkgdGhl0CBvZmZjaGFpbiB3b3JrZXIgdmlhIFtgUGFsbGV0OjpjbGVhbl91cF9kcmF3X3NhbHRgXS4AAeEFAAEpCAAQGFN1ZmZpeBgUEHRlc3QE4CBOZXR3b3JrIHN1ZmZpeCBhcHBlbmRlZCB0byB0aGUgcGVyc29uaG9vZCBwcm9kdWN0IG5hbWUuAEBNYXhTY2hlZHVsZUJhdGNoOBAQAAAABPQgTWF4aW11bSBudW1iZXIgb2YgZHJhd3Mgc2NoZWR1bGVkIHBlciBgc2NoZWR1bGVfZHJhd3NgIGNhbGwuAEBNYXhSZWdpc3RlckJhdGNoOBAQAAAABPAgTWF4aW11bSBudW1iZXIgb2YgZHJhd3MgcmVnaXN0ZXJlZCBmb3IgcGVyIGByZWdpc3RlcmAgY2FsbC4AXHBlb3BsZV9haXJkcm9wc19jb250ZXh0CIDu4H8OQDC7eA9Oty7MT3JKUikZ+0h9WP6crU7WkSWRHwQNASBUaGUgY29udGV4dCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSBwZW9wbGUgcGFydGljaXBhdGluZyBpbiBhaXJkcm9wcy4AAZENAAg4QWlyZHJvcEFzc2V0SWRpAQSQIEFzc2V0IGlkIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uTEFpcmRyb3BBc3NldEJhbGFuY2VFAQSkIEFzc2V0IGJhbGFuY2UgdXNlZCBieSBbYFNlbGY6OkFpcmRyb3BgXS4ASAAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAD5BQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAUNBhAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAfEFAAEtCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAZUNAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAmQ0EqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwCdDRAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwClDQTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAGIAAAgEBQAgcQQEAFgABAgMEBQYHCAkKCwwNDg8QERITFBUWGBVbml0VHJhbnNhY3Rpb25FeHRlbnNpb24QEFBWZXJpZnlNdWx0aVNpZ25hdHVyZRkGECBBc1BlcnNvbh0GEFxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudCkGEEhTY29yZUFzUGFydGljaXBhbnQ1BhA0R2FtZUFzSW52aXRlZEEGEDhQZW9wbGVMaXRlQXV0aE0GECBBc01lbWJlclkGECRBc0NvaW5hZ2VlBhAsQXNSZXNvdXJjZXN1BhAoSG9ub3VyQXV0aIEGEDRBdXRob3JpemVDYWxsjQYQPFJlc3RyaWN0T3JpZ2luc5EGEEhDaGVja05vblplcm9TZW5kZXKVBhBAQ2hlY2tTcGVjVmVyc2lvbpkGODhDaGVja1R4VmVyc2lvbp0GODBDaGVja0dlbmVzaXOhBjw4Q2hlY2tNb3J0YWxpdHmlBjwoQ2hlY2tOb25jZa0GECxDaGVja1dlaWdodLEGEFBDaGFyZ2VBc3NldFR4UGF5bWVudLUGEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQWBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAKkNDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwAJCgScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90DQpRASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AaQgEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2utDRAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlcly5DQRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQC9DQSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244wQ0QpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAYQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWTFDRRpbnB1dBjJDQR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY4UI0Q0QbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnThDZUIBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja60NEGRhdGHhDfENBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2X1DQh0eIUIKGJsb2NrX2hhc2g8+Q0kaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZBUGAQ4cFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGAUODJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSFCAxsZW44EQ4AAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0hQgMbGVuOBUOAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0cQJFAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhFAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOBEOBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOBUOBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodHECRQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4RQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjghDhS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlMQItDhSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHRxAhRhc3NldKkDMQ4Y6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbuUBHG1lc3NhZ2UxAiBhc3NldF9pZKkDNQ4oYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2luyQMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjg5DgREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27lAQx4Y215A2UOBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9u5QFtDgSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EAChNb2JSdWxlQXBpBCB2b3RlZF9vbggUdm90ZXIIJGRvbmVfb25seVEBYQQMWQEgUmV0dXJucyBhIGxpc3Qgb2YgY2FzZXMgd2hlcmUgdGhlIHVzZXIgaGFzIGEgdm90ZSBzdG9yZWQgb24gY2hhaW4uIElmIHRoZSBgZG9uZV9vbmx5YFUBIGZsYWcgaXMgc2V0LCBvbmx5IGNhc2VzIHRoYXQgYXJlIGRvbmUgYW5kIHJlYWR5IHRvIGJlIGNsYWltZWQgd2lsbCBiZSByZXR1cm5lZC4gVGhpcwUBIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB2b3RlIGludG8gYWNjb3VudC4ABLQgVGhlIEFQSSB0byBxdWVyeSB0aGUgcmV3YXJkcyBmb3IgbW9iIGNyZWRpdC4EADRQcm9vZk9mSW5rQXBpBERjYW5kaWRhY3lfZGVwb3NpdABFAQTUIFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIGJlY29tZSBhIGNhbmRpZGF0ZS4ABOwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgYSBwcm9vZiBvZiBpbmsgY2FuZGlkYWN5LgQANFBhbGxldEdhbWVBcGkEMHBsYXlfZGVwb3NpdABFAQS4IFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIHBsYXkgYSBnYW1lLgAErCBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBnYW1lcGxheS4EADROZnRDcmVkaXRzQXBpDFhuZnRfY2xhaW1fY3JlZGl0X3Jvb3RzBCBjbGFpbWFudAkFdQ4YWQEgUmV0dXJucyB0aGUgTkZUIGNsYWltIGNyZWRpdCByb290cyBgY2xhaW1hbnRgIGhhcyBhdCBsZWFzdCBvbmUgY3JlZGl0IHVuZGVyLCBrZXllZCBieQUBIHRoZSBibG9jayB0aGUgY3JlZGl0cyB3ZXJlIGF3YXJkZWQgaW4sIGluIGFzY2VuZGluZyBibG9jayBvcmRlci4AXQEgQSB3YWxsZXQgc3RhcnRzIGhlcmUgYW5kIGFza3MgYG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZzYCBhYm91dCBlYWNoIGJsb2NrIHJldHVybmVkLiBUaGVJASBibG9jayBhIGNyZWRpdCB3YXMgYXdhcmRlZCBpbiBnZXRzIGl0cyByb290IG9ubHkgaW4gdGhlIG5leHQgYmxvY2ssIHNvIHRoZSBuZXdlc3SQIGF3YXJkIGJsb2NrIGlzIGxlZnQgb3V0IHVudGlsIHRoZW4uAFxuZnRfY2xhaW1fY3JlZGl0X3Byb29mcwgsYXdhcmRfYmxvY2s4IGNsYWltYW50CQV9DihRASBSZXR1cm5zIHRoZSBpbmNsdXNpb24gcHJvb2Ygb2YgZWFjaCBjcmVkaXQgYGNsYWltYW50YCB3YXMgYXdhcmRlZCBpbiBgYXdhcmRfYmxvY2tgLMQgd2hpY2ggaXMgd2hhdCBBc3NldCBIdWIgdmVyaWZpZXMgYSBtaW50IGFnYWluc3QuAGEBIEV2ZXJ5dGhpbmcgY29tZXMgZnJvbSBjaGFpbiBzdGF0ZSwgc28gYSBjYWxsZXIgbmVlZHMgbm8gZXZlbnQgaGlzdG9yeTogdGhlIHByb29mcyBjYXJyeUkBIHRoZSBjcmVkaXQsIHRoZSBsZWFmLCBpdHMgaW5kZXgsIHRoZSBsZWFmIGNvdW50LCB0aGUgcm9vdCBhbmQgdGhlIHNpYmxpbmcgaGFzaGVzLrwgRW1wdHkgaWYgdGhlIGJsb2NrIGF3YXJkZWQgYGNsYWltYW50YCBub3RoaW5nLgA5ASBPbmx5IGJsb2NrcyB3aG9zZSBhd2FyZHMgYXJlIHN0aWxsIHJldGFpbmVkIGNhbiBiZSBzZXJ2ZWQuIEFuIG9sZGVyIG9uZSBnaXZlcwEBIGBOZnRDbGFpbUNyZWRpdFByb29mRXJyb3I6OkF3YXJkc1BydW5lZGAsIGFuZCBoYXMgdG8gZ28gdGhyb3VnaJggYG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZfZnJvbV9hd2FyZHNgLgCIbmZ0X2NsYWltX2NyZWRpdF9wcm9vZl9mcm9tX2F3YXJkcwwsYXdhcmRfYmxvY2s4GGF3YXJkcxkMKGxlYWZfaW5kZXg4lQ4kRQEgUmV0dXJucyB0aGUgaW5jbHVzaW9uIHByb29mIG9mIHRoZSBjcmVkaXQgYXQgYGxlYWZfaW5kZXhgIG9mIGBhd2FyZF9ibG9ja2AsIGZyb22EIGBhd2FyZHNgIHN1cHBsaWVkIGJ5IHRoZSBjYWxsZXIuAE0BIFRoZSBmYWxsYmFjayBmb3IgYSBibG9jayB3aG9zZSBhd2FyZHMgYXJlIG5vIGxvbmdlciByZXRhaW5lZDogYGF3YXJkc2AgYXJlIGFsbCB0aGVRASBjcmVkaXRzIHRoZSBibG9jayBhd2FyZGVkLCBpbiBhd2FyZCBvcmRlciwgcmVidWlsdCBmcm9tIGl0cyBgTmZ0Q2xhaW1DcmVkaXRBd2FyZGVkYFkBIGV2ZW50cy4gTGVhZiBoYXNoaW5nIGFuZCB0aGUgdHJlZSBsYXlvdXQgc3RheSBpbiB0aGUgcnVudGltZSwgYW5kIHRoZSByZWNvbXB1dGVkIHJvb3RNASBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHJlY29yZGVkIG9uZSwgc28gYXdhcmRzIHRoYXQgYXJlIGluY29tcGxldGUgb3Igb3V0IG9mIG9yZGVyWQEgZmFpbCB3aXRoIGBOZnRDbGFpbUNyZWRpdFByb29mRXJyb3I6OlJvb3RNaXNtYXRjaGAgcmF0aGVyIHRoYW4geWllbGRpbmcgYSBwcm9vZiBBc3NldDQgSHViIHJlamVjdHMuAATQIFRoZSBBUEkgYSB3YWxsZXQgbWludHMgYW4gTkZUIGNsYWltIGNyZWRpdCB0aHJvdWdoLgQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcmQ4QnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhilDihlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkqQ4VBjhhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAK0OEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQAINEGsQ4A";
|
|
2
|
+
|
|
3
|
+
export { binMeta as default };
|