@parity/product-sdk-descriptors 0.13.0 → 0.14.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/README.md +12 -5
- package/chains/devnet-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/devnet-asset-hub/generated/dist/devnet_asset_hub.d.ts +26 -3
- package/chains/devnet-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/devnet-asset-hub/generated/dist/index.js +4 -3
- package/chains/devnet-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/devnet-bulletin/generated/dist/devnet_bulletin.d.ts +28 -4
- package/chains/devnet-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/devnet-bulletin/generated/dist/index.js +4 -3
- package/chains/devnet-individuality/generated/dist/common-types.d.ts +267 -0
- package/chains/devnet-individuality/generated/dist/devnet_individuality.d.ts +26 -3
- package/chains/devnet-individuality/generated/dist/index.d.ts +1 -1
- package/chains/devnet-individuality/generated/dist/index.js +4 -3
- package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/kusama-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/kusama-asset-hub/generated/dist/index.js +4 -3
- package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +28 -4
- package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +537 -200
- package/chains/paseo-asset-hub/generated/dist/descriptors-CcJ9tDRJ.js +25 -0
- package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/paseo-asset-hub/generated/dist/index.js +8 -7
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-C5poj2qg.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 +206 -100
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CI2Z0pCq.js +3 -0
- package/chains/paseo-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/paseo-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/paseo-bulletin/generated/dist/index.js +4 -3
- package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +28 -4
- package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
- package/chains/paseo-individuality/generated/dist/common-types.d.ts +627 -323
- package/chains/paseo-individuality/generated/dist/descriptors-CzjDIprM.js +25 -0
- package/chains/paseo-individuality/generated/dist/index.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/index.js +9 -7
- package/chains/paseo-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
- package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +196 -99
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DfzFjfPf.js +3 -0
- package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +267 -0
- package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/polkadot-asset-hub/generated/dist/index.js +4 -3
- package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +28 -4
- package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
- package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +1398 -285
- package/chains/previewnet-asset-hub/generated/dist/descriptors-B1ublcrh.js +25 -0
- package/chains/previewnet-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-asset-hub/generated/dist/index.js +10 -9
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes-C5poj2qg.js +3 -0
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +1055 -148
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CI2Z0pCq.js +3 -0
- package/chains/previewnet-bulletin/generated/dist/common-types.d.ts +263 -0
- package/chains/previewnet-bulletin/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-bulletin/generated/dist/index.js +4 -3
- package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin.d.ts +28 -4
- package/chains/previewnet-individuality/.papi/polkadot-api.json +1 -1
- package/chains/previewnet-individuality/generated/dist/common-types.d.ts +627 -323
- package/chains/previewnet-individuality/generated/dist/descriptors-B5RU7r2I.js +25 -0
- package/chains/previewnet-individuality/generated/dist/index.d.ts +1 -1
- package/chains/previewnet-individuality/generated/dist/index.js +9 -7
- package/chains/previewnet-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
- package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +196 -99
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-93LocnTr.js +3 -0
- package/package.json +2 -2
- package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +0 -25
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +0 -3
- package/chains/paseo-individuality/generated/dist/descriptors-BjGIP9nH.js +0 -25
- package/chains/paseo-individuality/generated/dist/metadataTypes-B2aDvcHG.js +0 -3
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CA3FRb1i.js +0 -3
- package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +0 -25
- package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +0 -3
- package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +0 -3
- package/chains/previewnet-individuality/generated/dist/descriptors-BSwriMav.js +0 -25
- package/chains/previewnet-individuality/generated/dist/metadataTypes-B2aDvcHG.js +0 -3
- package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-C8MsIfh4.js +0 -3
package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const binMeta = "bWV0YRC5EwAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHkGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAD0BAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIADROZXR3b3JrU3VmZml4BABlAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgCaACBCYWxhbmNlcwQAbQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAIEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAiQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQArQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EALEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAvQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAwQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAMEDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBADFAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBADJAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQA0QMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADlAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQAJQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAAxBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQAPQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBABBBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAE0EAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAGEEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMEEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEANEEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQA1QQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBTY2FyY2l0eQQA3QQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NhcmNpdHksIFJ1bnRpbWU+ADoAIFRyZWFzdXJ5BADxBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmVhc3VyeSwgUnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQA/QQB1QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29udmljdGlvblZvdGluZywgUnVudGltZT4APQAkUmVmZXJlbmRhBAARBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWZlcmVuZGEsIFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAJQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8V2hpdGVsaXN0LCBSdW50aW1lPgBAACBCb3VudGllcwQAKQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Qm91bnRpZXMsIFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEAC0FAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENoaWxkQm91bnRpZXMsIFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAMQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEADkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQXNzZXRCb3VudGllcywgUnVudGltZT4ARAAMRGFwBAA9BQGhAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEYXAsIFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQAVQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAG0FAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5vbWluYXRpb25Qb29scywgUnVudGltZT4AUAAkVm90ZXJMaXN0BAChBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWb3Rlckxpc3QsIFJ1bnRpbWU+AFIAPFN0YWtpbmdSY0NsaWVudAQApQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZ1JjQ2xpZW50LCBSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAMkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvbiwgUnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAP0FAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyLCBSdW50aW1lPgBWAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAQAAQYB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQsIFJ1bnRpbWU+AFcAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQA2QYB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkLCBSdW50aW1lPgBYABxTdGFraW5nBADhBgGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nLCBSdW50aW1lPgBZACROZnRDbGFpbXMEAC0HAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdENsYWltcywgUnVudGltZT4AYABETWVtYmVyc1N1YnNjcmliZXIEAGEHAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnNTdWJzY3JpYmVyLCBSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBACFBwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBbGlhc0FjY291bnRzLCBSdW50aW1lPgBiABBQZ2FzBACRBwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZ2FzLCBSdW50aW1lPgBjABhSZXZpdmUEAJUHAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJldml2ZSwgUnVudGltZT4AZAAwRG90bnNHYXRld2F5BAClBwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEb3Ruc0dhdGV3YXksIFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBAC5BwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4AmQAQU3VkbwQAwQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4A+wAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEsGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDwBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZRgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4oAAAFBgAsAAACMAAwAAAECBgYADQAAAIYADgAAAUFADwIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhRAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGF8AUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUgBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVQAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNYAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHQBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBPAROATgAEAEscGFyZW50X2hlYWRMASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAEwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAUAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1QBREJUcmVlU2V0PFZlYzx1OD4+AABUBCBCVHJlZVNldAQEVAEYAAQANAAAAFgAAAJcAFwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaDwBMEhhc2g6Ok91dHB1dAABGG51bWJlcmABGE51bWJlcgABKHN0YXRlX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAARhkaWdlc3RkARhEaWdlc3QAAGAAAAY4AGQQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzaAE8VmVjPERpZ2VzdEl0ZW0+AABoAAACbABsEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHAAAAMEAAAADAB0BBhPcHRpb24EBFQBeAEIEE5vbmUAAAAQU29tZQQAeAAAAQAAeAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHwMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzgAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOUAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGEAAgBNGZ1bGxfbWVzc2FnZXOIATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOMAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIgAAAKEAIwAAAKQAJAIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoPAE0c3BfY29yZTo6SDI1NgAAlAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZgACAE0ZnVsbF9tZXNzYWdlc6QBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6gBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJgAAAQInKAAnAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKAIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKQAAAKYAKgAAAKsAKwAAAQInJAAsAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e0ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAAABigAuAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy68DDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0EENhbGwEBFQAARQ0bm90ZV9wcmVpbWFnZQQBFGJ5dGVzGAEcVmVjPHU4PgAAEHRSZWdpc3RlciBhIHByZWltYWdlIG9uLWNoYWluLgBVAUlmIHRoZSBwcmVpbWFnZSB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQsIG5vIGZlZXMgb3IgZGVwb3NpdHMgYXJlIHRha2VuIGZvciBwcm92aWRpbmdVAXRoZSBwcmVpbWFnZS4gT3RoZXJ3aXNlLCBhIGRlcG9zaXQgaXMgdGFrZW4gcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBwcmVpbWFnZS48dW5ub3RlX3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAARjcQ2xlYXIgYW4gdW5yZXF1ZXN0ZWQgcHJlaW1hZ2UgZnJvbSB0aGUgcnVudGltZSBzdG9yYWdlLgD8SWYgYGxlbmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBhIG11Y2ggY2hlYXBlciBvcGVyYXRpb24uAAEBLSBgaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBwcmVpbWFnZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHN0b3JlLrgtIGBsZW5gOiBUaGUgbGVuZ3RoIG9mIHRoZSBwcmVpbWFnZSBvZiBgaGFzaGAuQHJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoPAEcVDo6SGFzaAACEEEBUmVxdWVzdCBhIHByZWltYWdlIGJlIHVwbG9hZGVkIHRvIHRoZSBjaGFpbiB3aXRob3V0IHBheWluZyBhbnkgZmVlcyBvciBkZXBvc2l0cy4AVQFJZiB0aGUgcHJlaW1hZ2UgcmVxdWVzdHMgaGFzIGFscmVhZHkgYmVlbiBwcm92aWRlZCBvbi1jaGFpbiwgd2UgdW5yZXNlcnZlIGFueSBkZXBvc2l0OQFhIHVzZXIgbWF5IGhhdmUgcGFpZCwgYW5kIHRha2UgdGhlIGNvbnRyb2wgb2YgdGhlIHByZWltYWdlIG91dCBvZiB0aGVpciBoYW5kcy5IdW5yZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAwy8Q2xlYXIgYSBwcmV2aW91c2x5IG1hZGUgcmVxdWVzdCBmb3IgYSBwcmVpbWFnZS4ALQFOT1RFOiBUSElTIE1VU1QgTk9UIEJFIENBTExFRCBPTiBgaGFzaGAgTU9SRSBUSU1FUyBUSEFOIGByZXF1ZXN0X3ByZWltYWdlYC44ZW5zdXJlX3VwZGF0ZWQEARhoYXNoZXPAATBWZWM8VDo6SGFzaD4ABAy8RW5zdXJlIHRoYXQgdGhlIGJ1bGsgb2YgcHJlLWltYWdlcyBpcyB1cGdyYWRlZC4APQFUaGUgY2FsbGVyIHBheXMgbm8gZmVlIGlmIGF0IGxlYXN0IDkwJSBvZiBwcmUtaW1hZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAI8AMQMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0EENhbGwEBFQAASggc2NoZWR1bGUQARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAEcEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzay4YY2FuY2VsCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAARBhAUNhbmNlbCBhIHNjaGVkdWxlZCB0YXNrIChuYW1lZCBvciBhbm9ueW1vdXMpLCBieSBwcm92aWRpbmcgdGhlIGJsb2NrIGl0IGlzIHNjaGVkdWxlZCBmb3IZAWV4ZWN1dGlvbiBpbiwgYXMgd2VsbCBhcyB0aGUgaW5kZXggb2YgdGhlIHRhc2sgaW4gdGhhdCBibG9jaydzIGFnZW5kYS4ANQFJbiB0aGUgY2FzZSBvZiBhIG5hbWVkIHRhc2ssIGl0IHdpbGwgcmVtb3ZlIGl0IGZyb20gdGhlIGxvb2t1cCB0YWJsZSBhcyB3ZWxsLjhzY2hlZHVsZV9uYW1lZBQBCGlkCAEgVGFza05hbWUAARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAIEWFNjaGVkdWxlIGEgbmFtZWQgdGFzay4wY2FuY2VsX25hbWVkBAEIaWQIASBUYXNrTmFtZQADBHhDYW5jZWwgYSBuYW1lZCBzY2hlZHVsZWQgdGFzay44c2NoZWR1bGVfYWZ0ZXIQARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAEBKhBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2sgYWZ0ZXIgYSBkZWxheS5Qc2NoZWR1bGVfbmFtZWRfYWZ0ZXIUAQhpZAgBIFRhc2tOYW1lAAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABQSQU2NoZWR1bGUgYSBuYW1lZCB0YXNrIGFmdGVyIGEgZGVsYXkuJHNldF9yZXRyeQwBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAGOFkBU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0IHdpbGxVAWJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwgaXQkc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgAtAVRoaXMgY2FsbCAqKmNhbm5vdCoqIGJlIHVzZWQgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjxzZXRfcmV0cnlfbmFtZWQMAQhpZAgBIFRhc2tOYW1lAAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABzhdAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdF0Bd2lsbCBiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsMGl0IHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ADQFUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suMGNhbmNlbF9yZXRyeQQBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4ACASoUmVtb3ZlcyB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIHRhc2suSGNhbmNlbF9yZXRyeV9uYW1lZAQBCGlkCAEgVGFza05hbWUACQS8Q2FuY2VsIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgbmFtZWQgdGFzay4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyAQYT3B0aW9uBARUAcwBCBBOb25lAAAAEFNvbWUEAMwAAAEAAMwAAAQIODgA0AxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZdQBUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtQIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAARA8U3Rha2luZ0VsZWN0aW9uBADYAbBkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycwAAACRTY2hlZHVsZXIEAAEBAZRkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzAAEAME1lc3NhZ2VRdWV1ZQQAFQEBpGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzAAIANEFsaWFzQWNjb3VudHMEACUBAahkeW5hbWljX3BhcmFtczo6YWxpYXNfYWNjb3VudHM6OlBhcmFtZXRlcnMAAwAA2BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uKFBhcmFtZXRlcnMAARwsU2lnbmVkUGhhc2UIANwBLFNpZ25lZFBoYXNlAADgAUxPcHRpb248QmxvY2tOdW1iZXI+AAAAUE1heFNpZ25lZFN1Ym1pc3Npb25zCADkAVBNYXhTaWduZWRTdWJtaXNzaW9ucwAA4AEsT3B0aW9uPHUzMj4AAQA0VW5zaWduZWRQaGFzZQgA6AE0VW5zaWduZWRQaGFzZQAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgACAChNaW5lclBhZ2VzCADsAShNaW5lclBhZ2VzAADgASxPcHRpb248dTMyPgADAERNYXhFbGVjdGluZ1ZvdGVycwgA8AFETWF4RWxlY3RpbmdWb3RlcnMAAOABLE9wdGlvbjx1MzI+AAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sIAPQBWFRhcmdldFNuYXBzaG90UGVyQmxvY2sAAOABLE9wdGlvbjx1MzI+AAUAOE1heEVyYUR1cmF0aW9uCAD4AThNYXhFcmFEdXJhdGlvbgAA/AEsT3B0aW9uPHU2ND4ABgAA3BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uLFNpZ25lZFBoYXNlAAAAAOAEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADkEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25QTWF4U2lnbmVkU3VibWlzc2lvbnMAAAAA6BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFVuc2lnbmVkUGhhc2UAAAAA7BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uKE1pbmVyUGFnZXMAAAAA8BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uRE1heEVsZWN0aW5nVm90ZXJzAAAAAPQQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAAAAPgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjhNYXhFcmFEdXJhdGlvbgAAAAD8BBhPcHRpb24EBFQBKAEIEE5vbmUAAAAQU29tZQQAKAAAAQAAAQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyKFBhcmFtZXRlcnMAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sIAAUBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAA4AEsT3B0aW9uPHUzMj4AAAA0TWF4aW11bVdlaWdodAgACQEBNE1heGltdW1XZWlnaHQAAA0BAThPcHRpb248V2VpZ2h0PgABAAAFARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXJQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAAACQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNE1heGltdW1XZWlnaHQAAAAADQEEGE9wdGlvbgQEVAERAQEIEE5vbmUAAAAQU29tZQQAEQEAAAEAABEBDChzcF93ZWlnaHRzJHdlaWdodF92MhhXZWlnaHQAAAgBIHJlZl90aW1ltAEMdTY0AAEocHJvb2Zfc2l6ZbQBDHU2NAAAFQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZShQYXJhbWV0ZXJzAAEIPE1heE9uSW5pdFdlaWdodAgAGQEBPE1heE9uSW5pdFdlaWdodAAAHQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAAA8TWF4T25JZGxlV2VpZ2h0CAAhAQE8TWF4T25JZGxlV2VpZ2h0AAAdAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgABAAAZARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSW5pdFdlaWdodAAAAAAdAQQYT3B0aW9uBARUAQ0BAQgQTm9uZQAAABBTb21lBAANAQAAAQAAIQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbklkbGVXZWlnaHQAAAAAJQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHMoUGFyYW1ldGVycwABCCBBbGlhc0ZlZQgAKQEBIEFsaWFzRmVlAAAtAQFcT3B0aW9uPE9wdGlvbjxCYWxhbmNlPj4AAABcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwIADkBAVxTdGFsZUFsaWFzU3dlZXBJbnRlcnZhbAAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABAAApARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczhhbGlhc19hY2NvdW50cyBBbGlhc0ZlZQAAAAAtAQQYT3B0aW9uBARUATEBAQgQTm9uZQAAABBTb21lBAAxAQAAAQAAMQEEGE9wdGlvbgQEVAE1AQEIEE5vbmUAAAAQU29tZQQANQEAAAEAADUBAAAFBwA5ARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczhhbGlhc19hY2NvdW50c1xTdGFsZUFsaWFzU3dlZXBJbnRlcnZhbAAAAAA9AQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvckEBAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3JRAQFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTgAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yVQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkEBBBhPcHRpb24EBFQBRQEBCBBOb25lAAAAEFNvbWUEAEUBAAABAABFAQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBSQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQATQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAABJAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAE0BCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgFJASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yUQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAABRAQQYT3B0aW9uBARUAUkBAQgQTm9uZQAAABBTb21lBABJAQAAAQAAVQEIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAFZAQEIIFNwZWNpZmljBABdAQEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl04AEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JhAQE8T3B0aW9uPFZlYzx1OD4+AAEAAFkBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAXQEAAAJZAQBhAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAGUBDGxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXgYcGFsbGV0EENhbGwEBFQAAQRIc2V0X25ldHdvcmtfc3VmZml4BAE4bmV0d29ya19zdWZmaXhpAQFsUHJvZHVjdENvbnRleHROZXR3b3JrU3VmZml4AAAE/FNldCB0aGUgbmV0d29yayBzdWZmaXggdXNlZCBieSBhbGwgcHJvZHVjdC1jb250ZXh0IGRlcml2YXRpb25zLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5pAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAG0BDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZXEBAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZXEBAShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZXEBAShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZldQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG95AQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWVxAQEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb259AQFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhcQEBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVlcQEBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZldQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQEAAAY1AQB1AQAABQAAeQEAAAIEAH0BDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAACBAQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0EENhbGwEBFQAARgQdmVzdAAAJLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiB0aGUgc2VuZGVyIGFjY291bnQuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuKHZlc3Rfb3RoZXIEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZYUBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgACNGRDcmVhdGUgYSB2ZXN0ZWQgdHJhbnNmZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AzC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuVGZvcmNlX3Zlc3RlZF90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZYUBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4OAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4OAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0AAGMPFQ6Okxvb2t1cCBhcyBTdGF0aWNMb29rdXA+OjpTb3VyY2UAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAFGHxGb3JjZSByZW1vdmUgYSB2ZXN0aW5nIHNjaGVkdWxlAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAMgtIGB0YXJnZXRgOiBBbiBhY2NvdW50IHRoYXQgaGFzIGEgdmVzdGluZyBzY2hlZHVsZRUBLSBgc2NoZWR1bGVfaW5kZXhgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBpbmRleCB0aGF0IHNob3VsZCBiZSByZW1vdmVkBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoUBDDhwYWxsZXRfdmVzdGluZzB2ZXN0aW5nX2luZm8sVmVzdGluZ0luZm8IHEJhbGFuY2UBNQEsQmxvY2tOdW1iZXIBOAAMARhsb2NrZWQ1AQEcQmFsYW5jZQABJHBlcl9ibG9jazUBARxCYWxhbmNlAAE4c3RhcnRpbmdfYmxvY2s4ASxCbG9ja051bWJlcgAAiQEQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmWNAQE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob5UBATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZTUBATBCYWxhbmNlT2Y8VD4AAUB2ZXN0aW5nX3NjaGVkdWxlmQEB3E9wdGlvbjwoQmFsYW5jZU9mPFQ+LCBCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+KT4AASRzdGF0ZW1lbnShAQFUT3B0aW9uPFN0YXRlbWVudEtpbmQ+AAE8hE1pbnQgYSBuZXcgY2xhaW0gdG8gY29sbGVjdCBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgAsUGFyYW1ldGVyczrwLSBgd2hvYDogVGhlIEV0aGVyZXVtIGFkZHJlc3MgYWxsb3dlZCB0byBjb2xsZWN0IHRoaXMgY2xhaW0uzC0gYHZhbHVlYDogVGhlIG51bWJlciBvZiBET1RzIHRoYXQgd2lsbCBiZSBjbGFpbWVkLgkBLSBgdmVzdGluZ19zY2hlZHVsZWA6IEFuIG9wdGlvbmFsIHZlc3Rpbmcgc2NoZWR1bGUgZm9yIHRoZXNlIERPVHMuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy4dAVdlIGFzc3VtZSB3b3JzdCBjYXNlIHRoYXQgYm90aCB2ZXN0aW5nIGFuZCBzdGF0ZW1lbnQgaXMgYmVpbmcgaW5zZXJ0ZWQuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PjBjbGFpbV9hdHRlc3QMARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJljQEBOEVjZHNhU2lnbmF0dXJlAAEkc3RhdGVtZW50GAEcVmVjPHU4PgACbORNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMgYnkgc2lnbmluZyBhIHN0YXRlbWVudC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYGNsYWltX2F0dGVzdGAgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOsA+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpKHN0YXRlbWVudCkASQFhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50OyB0aGUgYHN0YXRlbWVudGAgbXVzdCBtYXRjaCB0aGF0IHdoaWNoIGlzwGV4cGVjdGVkIGFjY29yZGluZyB0byB5b3VyIHB1cmNoYXNlIGFycmFuZ2VtZW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuOQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy78V2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbV9hdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PhhhdHRlc3QEASRzdGF0ZW1lbnQYARxWZWM8dTg+AANM9EF0dGVzdCB0byBhIHN0YXRlbWVudCwgbmVlZGVkIHRvIGZpbmFsaXplIHRoZSBjbGFpbXMgcHJvY2Vzcy4AGQFXQVJOSU5HOiBJbnNlY3VyZSB1bmxlc3MgeW91ciBjaGFpbiBpbmNsdWRlcyBgUHJldmFsaWRhdGVBdHRlc3RzYCBhcyBhXGBUcmFuc2FjdGlvbkV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGSVAQE8RXRoZXJldW1BZGRyZXNzAAEMbmV3lQEBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWltqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLo0BDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAkQEBIFt1ODsgNjVdAACRAQAAA0EAAAAMAJUBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAACZAQQYT3B0aW9uBARUAZ0BAQgQTm9uZQAAABBTb21lBACdAQAAAQAAnQEAAAQMNQE1ATgAoQEEGE9wdGlvbgQEVAGlAQEIEE5vbmUAAAAQU29tZQQApQEAAAEAAKUBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM0U3RhdGVtZW50S2luZAABCBxSZWd1bGFyAAAAEFNhZnQAAQAAqQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACtAQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQQQ2FsbAQEVAABJERzZXRfaW52dWxuZXJhYmxlcwQBDG5ld3kBAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmQ1AQEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgAHHF0BVXBkYXRlIHRoZSBjYW5kaWRhY3kgYm9uZCBvZiBjb2xsYXRvciBjYW5kaWRhdGUgYG9yaWdpbmAgdG8gYSBuZXcgYW1vdW50IGBuZXdfZGVwb3NpdGAuAEEBU2V0dGluZyBhIGBuZXdfZGVwb3NpdGAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZSBjdXJyZW50IGRlcG9zaXQgd2hpbGUgYG9yaWdpbmAgaXPgb2NjdXB5aW5nIGEgdG9wLWBEZXNpcmVkQ2FuZGlkYXRlc2Agc2xvdCBpcyBub3QgYWxsb3dlZC4AWQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIGBvcmlnaW5gIGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSwgdGhlIHVwZGF0ZWQgYm9uZCBpcyBsb3dlchkBdGhhbiB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZCwgYW5kL29yIHRoZSBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkLkx0YWtlX2NhbmRpZGF0ZV9zbG90CAEcZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c7UBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy61AQhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYbkBAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAC5ARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAAC9AQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7BAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZU0CAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZY0DAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9uGQIBNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb27gAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uxQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkdQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3TFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOJAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOJAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZbkDAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkvQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZbkDAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdE0CAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlc/wBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VyxQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQAyQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BADlAQEwdjQ6OkxvY2F0aW9uAAQACFY1BAAZAgEwdjU6OkxvY2F0aW9uAAUAAMkBECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yzQEBJEp1bmN0aW9ucwAAzQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEANEBASBKdW5jdGlvbgABAAhYMggA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AAgAIWDMMANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AAwAIWDQQANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAEAAhYNRQA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABQAIWDYYANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABgAIWDccANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAHAAhYOCAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ACAAA0QEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvVAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya9UBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvVAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABxAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk3QEBGEJvZHlJZAABEHBhcnThAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADZAQEkTmV0d29ya0lkAAkAANUBBBhPcHRpb24EBFQB2QEBCBBOb25lAAAAEFNvbWUEANkBAAABAADZARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADdARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAA4QEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAOUBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LpAQEkSnVuY3Rpb25zAADpARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADtAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAD9AQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAABAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAFAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAJAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAANAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAARAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAVAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAO0BAAADAQAAAPEBAPEBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmv1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/UBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmv1AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABxAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk3QEBGEJvZHlJZAABEHBhcnThAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAD5AQEkTmV0d29ya0lkAAkAAPUBBBhPcHRpb24EBFQB+QEBCBBOb25lAAAAEFNvbWUEAPkBAAABAAD5ARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAP0BAAADAgAAAPEBAAECAAADAwAAAPEBAAUCAAADBAAAAPEBAAkCAAADBQAAAPEBAA0CAAADBgAAAPEBABECAAADBwAAAPEBABUCAAADCAAAAPEBABkCECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IdAgEkSnVuY3Rpb25zAAAdAhAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAhAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAxAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAA1AgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAA5AgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAA9AgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BABBAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BABFAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BABJAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAACECAAADAQAAACUCACUCECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmspAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaykCAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmspAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABxAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk3QEBGEJvZHlJZAABEHBhcnThAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAtAgEkTmV0d29ya0lkAAkAACkCBBhPcHRpb24EBFQBLQIBCBBOb25lAAAAEFNvbWUEAC0CAAABAAAtAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAMQIAAAMCAAAAJQIANQIAAAMDAAAAJQIAOQIAAAMEAAAAJQIAPQIAAAMFAAAAJQIAQQIAAAMGAAAAJQIARQIAAAMHAAAAJQIASQIAAAMIAAAAJQIATQIIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBABRAgFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAMUCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAEQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAFECDAx4Y20IdjMMWGNtBBBDYWxsAAAEAFUCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABVAgAAAlkCAFkCDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAXQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAXQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAF0CASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2V9AgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXKlAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNdAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeckBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzXQIBLE11bHRpQXNzZXRzAAEQZGVzdMkBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZKkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxsrQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAzQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnJAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0yQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZbUCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudF0CASxNdWx0aUFzc2V0cwABHG1heGltYWx1AQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZckBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMkBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+xAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzZQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAFECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAFECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzXQIBLE11bHRpQXNzZXRzAAEYdGlja2V0yQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABdAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAF0CASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb7ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEALECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA0QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr2QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uzQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcskBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRlAgEoTXVsdGlBc3NldAABGHRhcmdldMkBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRlAgEoTXVsdGlBc3NldAABFG93bmVyyQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARhsb2NrZXLJAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADJAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6lAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAF0CEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABhAgE8VmVjPE11bHRpQXNzZXQ+AABhAgAAAmUCAGUCEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZGkCARxBc3NldElkAAEMZnVubQIBLEZ1bmdpYmlsaXR5AABpAhAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAyQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAAG0CEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAcQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAHECATRBc3NldEluc3RhbmNlAAEAAHECEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAcQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAdQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAeQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAHUCAAADCAAAAAwAeQIAAAMQAAAADAB9AgwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABdAgEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAI0CAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAnQIBOE1heWJlRXJyb3JDb2RlAAUAAIECBBhPcHRpb24EBFQBhQIBCBBOb25lAAAAEFNvbWUEAIUCAAABAACFAgAABAg4iQIAiQIQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAARAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAACNAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZECBFMAAAQAmQIBGFZlYzxUPgAAkQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWVAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAlQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACZAgAAApECAJ0CDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAoQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBAChAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAoQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClAgQYT3B0aW9uBARUAckBAQgQTm9uZQAAABBTb21lBADJAQAAAQAAqQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAArQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAsQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27JAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAC1AhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAXQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEALkCAThXaWxkTXVsdGlBc3NldAABAAC5AhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRpAgEcQXNzZXRJZAABDGZ1br0CATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkaQIBHEFzc2V0SWQAAQxmdW69AgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAvQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAADBAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAARAQEYV2VpZ2h0AAEAAMUCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAyQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAMkCAAACzQIAzQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADRAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEANECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl6QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVy/QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c9ECARhBc3NldHMAASxiZW5lZmljaWFyeeUBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9ECARhBc3NldHMAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZKkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxsrQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA6QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAEDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeeUBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlBQMBLEFzc2V0RmlsdGVyAAEQd2FudNECARhBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl5QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwEDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwUDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz2QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADFAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADFAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c9ECARhBc3NldHMAARh0aWNrZXTlAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADRAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADRAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA/QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIECAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwEDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAEDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA8QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr+QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u6QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldNkCARRBc3NldAABIHVubG9ja2Vy5QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTZAgEUQXNzZXQAARh0YXJnZXTlAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldNkCARRBc3NldAABFG93bmVy5QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldNkCARRBc3NldAABGGxvY2tlcuUBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADlAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu/QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAA0QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADVAgEoVmVjPEFzc2V0PgAA1QIAAALZAgDZAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlk3QIBHEFzc2V0SWQAAQxmdW7hAgEsRnVuZ2liaWxpdHkAAN0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAOUBASBMb2NhdGlvbgAA4QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABxAQEQdTEyOAAAACxOb25GdW5naWJsZQQA5QIBNEFzc2V0SW5zdGFuY2UAAQAA5QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABxAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BAB1AgEcW3U4OyA4XQADABxBcnJheTE2BAB5AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA6QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADRAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADtAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAJ0CAThNYXliZUVycm9yQ29kZQAFAADtAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfECBFMAAAQA+QIBGFZlYzxUPgAA8QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZfUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l9QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAAD1AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAPkCAAAC8QIA/QIEGE9wdGlvbgQEVAHlAQEIEE5vbmUAAAAQU29tZQQA5QEAAAEAAAEDDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27lAQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAABQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADRAgEYQXNzZXRzAAAAEFdpbGQEAAkDASRXaWxkQXNzZXQAAQAACQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZN0CARxBc3NldElkAAEMZnVuDQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTdAgEcQXNzZXRJZAABDGZ1bg0DATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAANAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAABEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAFQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABUDAAACGQMAGQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAB0DARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0DARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyVQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0DARhBc3NldHMAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0DARhBc3NldHMAARBkZXN0GQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZKkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGytAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAdAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c10DASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5GQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARBkZXN0GQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVdAwEsQXNzZXRGaWx0ZXIAARB3YW50HQMBGEFzc2V0cwABHG1heGltYWx1AQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABHHJlc2VydmUZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQMBGEFzc2V0cwABGHRpY2tldBkCASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0DARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0DARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABVAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAOQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAlAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmstAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24dAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbREDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQMBFEFzc2V0AAEgdW5sb2NrZXIZAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABGHRhcmdldBkCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQMBFEFzc2V0AAEUb3duZXIZAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQMBFEFzc2V0AAEYbG9ja2VyGQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EABkCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5VAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQlAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNpAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2ludQEBEGJvb2wAARhhc3NldHNxAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtEQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbnkDAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20RAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHN9AwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAB0DECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAIQMBKFZlYzxBc3NldD4AACEDAAACJQMAJQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZCkDARxBc3NldElkAAEMZnVuLQMBLEZ1bmdpYmlsaXR5AAApAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABAAZAgEgTG9jYXRpb24AAC0DECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAcQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEADEDATRBc3NldEluc3RhbmNlAAEAADEDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAcQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAdQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAeQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAADUDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAHQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEADkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQARQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACdAgE4TWF5YmVFcnJvckNvZGUABQAAOQMEGE9wdGlvbgQEVAE9AwEIEE5vbmUAAAAQU29tZQQAPQMAAAEAAD0DAAAECDhBAwBBAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAARQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFJAwRTAAAEAFEDARhWZWM8VD4AAEkDDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWVNAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZU0DAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAATQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABRAwAAAkkDAFUDBBhPcHRpb24EBFQBGQIBCBBOb25lAAAAEFNvbWUEABkCAAABAABZAwwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAF0DECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAHQMBGEFzc2V0cwAAABBXaWxkBABhAwEkV2lsZEFzc2V0AAEAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQpAwEcQXNzZXRJZAABDGZ1bmUDATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkKQMBHEFzc2V0SWQAAQxmdW5lAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAZQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABpAwQYT3B0aW9uBARUAW0DAQgQTm9uZQAAABBTb21lBABtAwAAAQAAbQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAF0DASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQAXQMBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQAXQMBLEFzc2V0RmlsdGVyAAIAAHEDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBbQMEUwAABAB1AwEYVmVjPFQ+AAB1AwAAAm0DAHkDBBhPcHRpb24EBFQBHQIBCBBOb25lAAAAEFNvbWUEAB0CAAABAAB9AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEDBFMAAAQAhQMBGFZlYzxUPgAAgQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb24ZAgEgTG9jYXRpb24AAAAAhQMAAAKBAwCJAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQAXQIBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQA0QIBKHY0OjpBc3NldHMABAAIVjUEAB0DASh2NTo6QXNzZXRzAAUAAI0DCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAkQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAChAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAK0DAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAACRAwwMeGNtCHYzDFhjbQQQQ2FsbAAABACVAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAlQMAAAKZAwCZAwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAF0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAF0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABdAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlfQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVypQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzXQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbJ0DAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEALECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5yQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMkBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmW1AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRdAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc2UCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACRAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACRAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABGHRpY2tldMkBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAXQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABdAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAClAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+xAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACxAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya9kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldGUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLJAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARh0YXJnZXTJAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARRvd25lcskBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldGUCAShNdWx0aUFzc2V0AAEYbG9ja2VyyQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lupQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAACdAwwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAChAwwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAKUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAClAwAAAqkDAKkDDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADRAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA0QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADRAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZekCASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcv0CAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPRAgEYQXNzZXRzAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbJ0DAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOkBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAABAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZQUDASxBc3NldEZpbHRlcgABEHdhbnTRAgEYQXNzZXRzAAEcbWF4aW1hbHUBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc9kCARRBc3NldAABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAoQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAoQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEYdGlja2V05QEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA0QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA0QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAP0CAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAABAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbukBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTZAgEUQXNzZXQAASB1bmxvY2tlcuUBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V02QIBFEFzc2V0AAEYdGFyZ2V05QEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTZAgEUQXNzZXQAARRvd25lcuUBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTZAgEUQXNzZXQAARhsb2NrZXLlAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA5QEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbv0CAUBPcHRpb248TG9jYXRpb24+AC8AAK0DDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAsQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALEDAAACtQMAtQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAB0DARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0DARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyVQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0DARhBc3NldHMAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0DARhBc3NldHMAARBkZXN0GQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZKkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGydAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAdAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c10DASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5GQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARBkZXN0GQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVdAwEsQXNzZXRGaWx0ZXIAARB3YW50HQMBGEFzc2V0cwABHG1heGltYWx1AQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABHHJlc2VydmUZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAK0DASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAK0DASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQMBGEFzc2V0cwABGHRpY2tldBkCASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0DARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0DARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABVAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAOQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAWQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAlAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmstAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24dAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbREDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQMBFEFzc2V0AAEgdW5sb2NrZXIZAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABGHRhcmdldBkCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQMBFEFzc2V0AAEUb3duZXIZAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQMBFEFzc2V0AAEYbG9ja2VyGQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EABkCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5VAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQlAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNpAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2ludQEBEGJvb2wAARhhc3NldHNxAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtEQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbnkDAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y22tAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHN9AwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAALkDEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAxQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAL0DCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAaQIBLHYzOjpBc3NldElkAAMACFY0BADdAgEsdjQ6OkFzc2V0SWQABAAIVjUEACkDASx2NTo6QXNzZXRJZAAFAADBAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUDDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBBDYWxsCARUAARJAAEEUHJlcG9ydF9icmlkZ2Vfc3RhdHVzCAEkYnJpZGdlX2lkPAEQSDI1NgABMGlzX2Nvbmdlc3RlZHUBARBib29sAAAEqE5vdGlmaWNhdGlvbiBhYm91dCBjb25nZXN0ZWQgYnJpZGdlIHF1ZXVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbs0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACcARhQYXJhSWQAAgAA0QMMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQQQ2FsbAQEVAABDEhzZXRfb3BlcmF0aW5nX21vZGUEARBtb2Rl1QMBNE9wZXJhdGluZ01vZGUAAAToU2V0IHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIG1lc3NhZ2VzIHRvIEV0aGVyZXVtLjhyZWdpc3Rlcl90b2tlbgwBIGFzc2V0X2lkxQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASBtZXRhZGF0YdkDATRBc3NldE1ldGFkYXRhAAEkZmVlX2Fzc2V0JQMBFEFzc2V0AAEcSQFJbml0aWF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSBQb2xrYWRvdC1uYXRpdmUgdG9rZW4gYXMgYSB3cmFwcGVkIEVSQzIwIHRva2VuIG9uJEV0aGVyZXVtLowtIGBhc3NldF9pZGA6IExvY2F0aW9uIG9mIHRoZSBhc3NldEEBLSBgbWV0YWRhdGFgOiBNZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSBpbnN0YW50aWF0ZWQgRVJDMjAgY29udHJhY3Qgb24gRXRoZXJldW0AXQFBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZCwgaG93ZXZlciBgYXNzZXRfaWRgIG11c3QgYmUgYSBsb2NhdGlvbiBuZXN0ZWQgd2l0aGluIHRoZSBvcmlnaW5EY29uc2Vuc3VzIHN5c3RlbS4cYWRkX3RpcAgBKG1lc3NhZ2VfaWThAwEkTWVzc2FnZUlkAAEUYXNzZXQlAwEUQXNzZXQAAghFAUFkZCBhbiBhZGRpdGlvbmFsIHJlbGF5ZXIgdGlwIGZvciBhIGNvbW1pdHRlZCBtZXNzYWdlIGlkZW50aWZpZWQgYnkgYG1lc3NhZ2VfaWRgLqBUaGUgdGlwIGFzc2V0IHdpbGwgYmUgc3dhcHBlZCBmb3IgZXRoZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtUDDDxzbm93YnJpZGdlX2NvcmU4b3BlcmF0aW5nX21vZGVIQmFzaWNPcGVyYXRpbmdNb2RlAAEIGE5vcm1hbAAAABhIYWx0ZWQAAQAA2QMIPHNub3dicmlkZ2VfY29yZTRBc3NldE1ldGFkYXRhAAAMARBuYW1l3QMBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABGHN5bWJvbN0DAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AASBkZWNpbWFscwwBCHU4AADdAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOEDDDxzbm93YnJpZGdlX2NvcmUYcmV3YXJkJE1lc3NhZ2VJZAABCBxJbmJvdW5kBAAoAQx1NjQAAAAgT3V0Ym91bmQEACgBDHU2NAABAADlAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleO0DAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxz6QMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodBEBARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukDAAACIADtAwAABQQA8QMIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEgGHN5c3RlbQQA9QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBAD5AwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAP0DAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgACBTY2FyY2l0eQQAAQQBgHBhbGxldF9zY2FyY2l0eTo6T3JpZ2luPFJ1bnRpbWU+ADoAHE9yaWdpbnMEAA0EAXRwYWxsZXRfY3VzdG9tX29yaWdpbnM6Ok9yaWdpbgA/ABBQZ2FzBAARBAFkaW5kaXZfcGFsbGV0X3BnYXM6Ok9yaWdpbgBjABhSZXZpdmUEAB0EAXhwYWxsZXRfcmV2aXZlOjpPcmlnaW48UnVudGltZT4AZAAwRG90bnNHYXRld2F5BAAhBAGIaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6Ok9yaWdpbgCYAAD1Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAA+QMMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EABkCASBMb2NhdGlvbgAAACBSZXNwb25zZQQAGQIBIExvY2F0aW9uAAEAAP0DDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACcARhQYXJhSWQAAQAAAQQMPHBhbGxldF9zY2FyY2l0eRhwYWxsZXQYT3JpZ2luBARUAQUEAQQMTmZ0CAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQxuZnQJBAEMTmZ0AAAAAAUECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lHFJ1bnRpbWUAAAAACQQMPHBhbGxldF9zY2FyY2l0eRhwYWxsZXQMTmZ0AAAYASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABJG1pbnRlZF9hdCgBDHU2NAABKGxhc3RfbW92ZWQoAQx1NjQAASxzdGF0ZV9ub25jZSgBDHU2NAAADQQUcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUoZ292ZXJuYW5jZRxvcmlnaW5zVHBhbGxldF9jdXN0b21fb3JpZ2lucxhPcmlnaW4AATwwU3Rha2luZ0FkbWluAAAAJFRyZWFzdXJlcgABADxGZWxsb3dzaGlwQWRtaW4AAgAwR2VuZXJhbEFkbWluAAMAMEF1Y3Rpb25BZG1pbgAEAChMZWFzZUFkbWluAAUATFJlZmVyZW5kdW1DYW5jZWxsZXIABgBAUmVmZXJlbmR1bUtpbGxlcgAHACxTbWFsbFRpcHBlcgAIACRCaWdUaXBwZXIACQAwU21hbGxTcGVuZGVyAAoANE1lZGl1bVNwZW5kZXIACwAoQmlnU3BlbmRlcgAMAERXaGl0ZWxpc3RlZENhbGxlcgANADRXaXNoRm9yQ2hhbmdlAA4AABEEDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQYT3JpZ2luAAEEKENsYWltQWxpYXMMARRhbGlhcwgBFEFsaWFzAAEMZGF5FQQBDERheQABKGNvbGxlY3Rpb24ZBAE4UGdhc0NvbGxlY3Rpb24AAAAAFQQMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4ZBAxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uOFBnYXNDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChMaXRlUGVvcGxlAAEAAB0EDDRwYWxsZXRfcmV2aXZlGHBhbGxldBhPcmlnaW4EBFQBBQQBBDhFdGhUcmFuc2FjdGlvbgQABAEwVDo6QWNjb3VudElkAAAAACEEDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQYT3JpZ2luAAEESFBlcnNvblJlZ2lzdHJhdGlvbgQACAEUQWxpYXMAAAAAJQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50KQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXN5AQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQpBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludC0EAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBAQYT3B0aW9uBARUAS0EAQgQTm9uZQAAABBTb21lBAAtBAAAAQAALQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAMQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGU1BAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGU5BAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlOQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlOQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleO0DAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGU5BAEwVDo6UHJveHlUeXBlAAEUaW5kZXjtAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZTUEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuNQQEGE9wdGlvbgQEVAE5BAEIEE5vbmUAAAAQU29tZQQAOQQAAAEAADkECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAAD0EDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemV1AQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkEEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VxAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJudQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNFBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAEkEARhWZWM8VD4AAEkEAAACEABNBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5ndQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzUQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXJVBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zWQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlVQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmd1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YV0EAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFdBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVudQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlMQEBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJVBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2U1AQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RBAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABVBAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAFkEAAACOABdBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGEEDCxwYWxsZXRfbmZ0cxhwYWxsZXQQQ2FsbAgEVAAESQABnBhjcmVhdGUIARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnZQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AADwJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uACUBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgDEYENvbGxlY3Rpb25EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczpFAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQgBFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhjb25maWdlBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgABPBkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgCsVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgA5AS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY29sbGVjdGlvbiBvZiBpdGVtcy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlclkBICBwZXJtaXNzaW9ucyBvdmVyIHRoaXMgaXRlbSwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeYICBgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc4EEAThEZXN0cm95V2l0bmVzcwACRJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A3E5PVEU6IFRoZSBjb2xsZWN0aW9uIG11c3QgaGF2ZSAwIGl0ZW1zIHRvIGJlIGRlc3Ryb3llZC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgB0V2VpZ2h0OiBgTyhtICsgYyArIGEpYCB3aGVyZTp4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgcC0gYGMgPSB3aXRuZXNzLml0ZW1fY29uZmlnc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwd2l0bmVzc19kYXRhhQQB2E9wdGlvbjxNaW50V2l0bmVzczxUOjpJdGVtSWQsIERlcG9zaXRCYWxhbmNlT2Y8VCwgST4+PgADQKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGNvbXBseSB3aXRoIHRoZSBgbWludF9zZXR0aW5nc2AgcnVsZXMuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuRQEtIGB3aXRuZXNzX2RhdGFgOiBXaGVuIHRoZSBtaW50IHR5cGUgaXMgYEhvbGRlck9mKGNvbGxlY3Rpb25faWQpYCwgdGhlbiB0aGUgb3duZWRZASAgaXRlbV9pZCBmcm9tIHRoYXQgY29sbGVjdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHdpdG5lc3MgZGF0YSBvYmplY3QuIElmYQEgIHRoZSBtaW50IHByaWNlIGlzIHNldCwgdGhlbiBpdCBzaG91bGQgYmUgYWRkaXRpb25hbGx5IGNvbmZpcm1lZCBpbiB0aGUgYHdpdG5lc3NfZGF0YWAuAFEBTm90ZTogdGhlIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBgb3JpZ2luYCBhbmQgbm90IHRoZSBgb3duZXJgIG9mIHRoZSBgaXRlbWAuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYChmb3JjZV9taW50EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARxtaW50X3RvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxpdGVtX2NvbmZpZ40EAShJdGVtQ29uZmlnAAQ0BQFNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24gZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWxJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuoC0gYGl0ZW1gOiBBbiBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS7gLSBgbWludF90b2A6IEFjY291bnQgaW50byB3aGljaCB0aGUgaXRlbSB3aWxsIGJlIG1pbnRlZC6oLSBgaXRlbV9jb25maWdgOiBBIGNvbmZpZyBvZiB0aGUgbmV3IGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABSxYRGVzdHJveSBhIHNpbmdsZSBpdGVtLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdGxiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQugC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSBidXJuZWQuADxFbWl0cyBgQnVybmVkYC4AOFdlaWdodDogYE8oMSlgIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABjjATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7NQEtIHRoZSBhcHByb3ZlZCBkZWxlZ2F0ZSBmb3IgdGhlIGBpdGVtYCAoaW4gdGhpcyBjYXNlLCB0aGUgYXBwcm92YWwgaXMgcmVzZXQpLgAoQXJndW1lbnRzOvQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQulC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7cLSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIHJlY2VpdmUgb3duZXJzaGlwIG9mIHRoZSBpdGVtLgBQRW1pdHMgYFRyYW5zZmVycmVkYC4AOFdlaWdodDogYE8oMSlgJHJlZGVwb3NpdAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRpdGVtc1kEAThWZWM8VDo6SXRlbUlkPgAHRJxSZS1ldmFsdWF0ZSB0aGUgZGVwb3NpdHMgb24gc29tZSBpdGVtcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD4LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtcyB0byBiZSByZWV2YWx1YXRlZC4pAS0gYGl0ZW1zYDogVGhlIGl0ZW1zIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGRlcG9zaXRzIHdpbGwgYmUgcmVldmFsdWF0ZWQuAC0BTk9URTogVGhpcyBleGlzdHMgYXMgYSBiZXN0LWVmZm9ydCBmdW5jdGlvbi4gQW55IGl0ZW1zIHdoaWNoIGFyZSB1bmtub3duIG9yOQFpbiB0aGUgY2FzZSB0aGF0IHRoZSBvd25lciBhY2NvdW50IGRvZXMgbm90IGhhdmUgcmVzZXJ2YWJsZSBmdW5kcyB0byBwYXkgZm9yIGFNAWRlcG9zaXQgaW5jcmVhc2UgYXJlIGlnbm9yZWQuIEdlbmVyYWxseSB0aGUgb3duZXIgaXNuJ3QgZ29pbmcgdG8gY2FsbCB0aGlzIG9uIGl0ZW1zVQF3aG9zZSBleGlzdGluZyBkZXBvc2l0IGlzIGxlc3MgdGhhbiB0aGUgcmVmcmVzaGVkIGRlcG9zaXQgYXMgaXQgd291bGQgb25seSBjb3N0IHRoZW0seHNvIGl0J3Mgb2YgbGl0dGxlIGNvbnNlcXVlbmNlLgBZAUl0IHdpbGwgc3RpbGwgcmV0dXJuIGFuIGVycm9yIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbGxlY3Rpb24gaXMgdW5rbm93biBvciB0aGUgc2lnbmVycGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2FsbCBpdC4AYFdlaWdodDogYE8oaXRlbXMubGVuKCkpYEhsb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAIKMhEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLrgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIG5vbi10cmFuc2ZlcmFibGUuAGxFbWl0cyBgSXRlbVRyYW5zZmVyTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgUHVubG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACSioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuqC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgdHJhbnNmZXJhYmxlLgB0RW1pdHMgYEl0ZW1UcmFuc2ZlclVubG9ja2VkYC4AOFdlaWdodDogYE8oMSlgPGxvY2tfY29sbGVjdGlvbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRsb2NrX3NldHRpbmdzaQQBSENvbGxlY3Rpb25TZXR0aW5ncwAKMNhEaXNhbGxvd3Mgc3BlY2lmaWVkIHNldHRpbmdzIGZvciB0aGUgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIGxvY2tlZC60LSBgbG9ja19zZXR0aW5nc2A6IFRoZSBzZXR0aW5ncyB0byBiZSBsb2NrZWQuAB0BTm90ZTogaXQncyBwb3NzaWJsZSB0byBvbmx5IGxvY2soc2V0KSB0aGUgc2V0dGluZywgYnV0IG5vdCB0byB1bnNldCBpdC4AZEVtaXRzIGBDb2xsZWN0aW9uTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlclUEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEUYWRtaW5VBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABHGZyZWV6ZXJVBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAMQNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBTm90ZTogYnkgc2V0dGluZyB0aGUgcm9sZSB0byBgTm9uZWAgb25seSB0aGUgYEZvcmNlT3JpZ2luYCB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGl0ZGFmdGVyIHRvIGBTb21lKGFjY291bnQpYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgWGZvcmNlX2NvbGxlY3Rpb25fb3duZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANKIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24usC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgXGZvcmNlX2NvbGxlY3Rpb25fY29uZmlnCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGNvbmZpZ2UEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AA4oiENoYW5nZSB0aGUgY29uZmlnIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24uuC0gYGNvbmZpZ2A6IFRoZSBuZXcgY29uZmlnIG9mIHRoaXMgY29sbGVjdGlvbi4AgEVtaXRzIGBDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE4bWF5YmVfZGVhZGxpbmXgAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AA84FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLuQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS5JAS0gYG1heWJlX2RlYWRsaW5lYDogT3B0aW9uYWwgZGVhZGxpbmUgZm9yIHRoZSBhcHByb3ZhbC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGXYCW51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggdGhlIGFwcHJvdmFsIHdpbGwgZXhwaXJlAJBFbWl0cyBgVHJhbnNmZXJBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQOORDYW5jZWwgb25lIG9mIHRoZSB0cmFuc2ZlciBhcHByb3ZhbHMgZm9yIGEgc3BlY2lmaWMgaXRlbS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW475C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOj0BLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLiUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLgEBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IGlzIGdvaW5nIHRvIGxvb3NlIHRoZWlyIGFwcHJvdmFsLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBwY2xlYXJfYWxsX3RyYW5zZmVyX2FwcHJvdmFscwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABE0sENhbmNlbCBhbGwgdGhlIGFwcHJvdmFscyBvZiBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo5AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLiEBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFscyB3aWxsIGJlIGNsZWFyZWQuAKRFbWl0cyBgQWxsQXBwcm92YWxzQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBQbG9ja19pdGVtX3Byb3BlcnRpZXMQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGF1AQEQYm9vbAABPGxvY2tfYXR0cmlidXRlc3UBARBib29sABJE6ERpc2FsbG93cyBjaGFuZ2luZyB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBvZiB0aGUgaXRlbS4AQQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pblBvZiB0aGUgYGNvbGxlY3Rpb25gLgC0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIGlmIHRoZSBgaXRlbWAufC0gYGl0ZW1gOiBBbiBpdGVtIHRvIGJlIGxvY2tlZC4NAS0gYGxvY2tfbWV0YWRhdGFgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGxvY2tlZC5hAS0gYGxvY2tfYXR0cmlidXRlc2A6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2VMICBzaG91bGQgYmUgbG9ja2VkLgBdAU5vdGU6IGBsb2NrX2F0dHJpYnV0ZXNgIGFmZmVjdHMgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBvbmx5LkUBV2hlbiB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBhcmUgbG9ja2VkLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0aGUgdW5sb2NrIHRoZW0uAHRFbWl0cyBgSXRlbVByb3BlcnRpZXNMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WRBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZVkBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgATWKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AAQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgY29uZm9ybSB0byB0aGUgbmFtZXNwYWNlIHJ1bGVzZXQ6PQEtIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYGNvbGxlY3Rpb25gIEFkbWluIG9ubHk7WQEtIGBJdGVtT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYG1heWJlX2l0ZW1gIG93bmVyIG9ubHkuIGBtYXliZV9pdGVtYHQgIHNob3VsZCBiZSBzZXQgaW4gdGhhdCBjYXNlO1UBLSBgQWNjb3VudChBY2NvdW50SWQpYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgb25seSB3aGVuIHRoZSBgb3JpZ2luYCB3YXMgZ2l2ZW4gYVggIHBlcm1pc3Npb24gdG8gZG8gc287APBUaGUgZnVuZHMgb2YgYG9yaWdpbmAgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTotAWBBdHRyaWJ1dGVEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogKGtleS5sZW4gKyB2YWx1ZS5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYExmb3JjZV9zZXRfYXR0cmlidXRlGAEYc2V0X2FzqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZEEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXgBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlWQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WRBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFTywQ2xlYXIgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUoYXR0cmlidXRlLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci4NAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxhcHByb3ZlX2l0ZW1fYXR0cmlidXRlcwwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcd2l0bmVzc5UEAXxDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzABcoEQFDYW5jZWwgdGhlIHByZXZpb3VzbHkgcHJvdmlkZWQgYXBwcm92YWwgdG8gY2hhbmdlIGl0ZW0ncyBhdHRyaWJ1dGVzLhEBQWxsIHRoZSBwcmV2aW91c2x5IHNldCBhdHRyaWJ1dGVzIGJ5IHRoZSBgZGVsZWdhdGVgIHdpbGwgYmUgcmVtb3ZlZC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgD0LSBgY29sbGVjdGlvbmA6IENvbGxlY3Rpb24gdGhhdCB0aGUgaXRlbSBpcyBjb250YWluZWQgd2l0aGluLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLuAtIGBkZWxlZ2F0ZWA6IFRoZSBwcmV2aW91c2x5IGFwcHJvdmVkIGFjY291bnQgdG8gcmVtb3ZlLgDERW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkYCBvbiBzdWNjZXNzLjBzZXRfbWV0YWRhdGEMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABhAdFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LuwtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0Lk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AYEVtaXRzIGBJdGVtTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAZNHxDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIu9C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AcEVtaXRzIGBJdGVtTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABo8iFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAdJOBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC5QdXBkYXRlX21pbnRfc2V0dGluZ3MIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bWludF9zZXR0aW5nc3EEARUBTWludFNldHRpbmdzPEJhbGFuY2VPZjxULCBJPiwgQmxvY2tOdW1iZXJGb3I8VCwgST4sIFQ6OgpDb2xsZWN0aW9uSWQ+AB4kVFVwZGF0ZSBtaW50IHNldHRpbmdzLgBNAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgSXNzdWVyUG9mIHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLqQtIGBtaW50X3NldHRpbmdzYDogVGhlIG5ldyBtaW50IHNldHRpbmdzLgDwRW1pdHMgYENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuJHNldF9wcmljZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2UxAQFcT3B0aW9uPEl0ZW1QcmljZTxULCBJPj4AAUR3aGl0ZWxpc3RlZF9idXllclUEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AB8slFNldCAob3IgcmVzZXQpIHRoZSBwcmljZSBmb3IgYW4gaXRlbS4A6E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBzmQQBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEsbWF5YmVfcHJpY2WlBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGR1cmF0aW9uOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIkBRAVJlZ2lzdGVyIGEgbmV3IGF0b21pYyBzd2FwLCBkZWNsYXJpbmcgYW4gaW50ZW50aW9uIHRvIHNlbmQgYW4gYGl0ZW1gIGluIGV4Y2hhbmdlIGZvcvxgZGVzaXJlZF9pdGVtYCBmcm9tIG9yaWdpbiB0byB0YXJnZXQgb24gdGhlIGN1cnJlbnQgYmxvY2tjaGFpbi5NAVRoZSB0YXJnZXQgY2FuIGV4ZWN1dGUgdGhlIHN3YXAgZHVyaW5nIHRoZSBzcGVjaWZpZWQgYGR1cmF0aW9uYCBvZiBibG9ja3MgKGlmIHNldCku8EFkZGl0aW9uYWxseSwgdGhlIHByaWNlIGNvdWxkIGJlIHNldCBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLuwtIGBkZXNpcmVkX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBpdGVtLvQtIGBkZXNpcmVkX2l0ZW1gOiBUaGUgZGVzaXJlZCBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIHJlY2VpdmUuYQEtIGBtYXliZV9wcmljZWA6IFRoZSBwcmljZSBhbiBvd25lciBpcyB3aWxsaW5nIHRvIHBheSBvciByZWNlaXZlIGZvciB0aGUgZGVzaXJlZCBgaXRlbWAuSQEtIGBkdXJhdGlvbmA6IEEgZGVhZGxpbmUgZm9yIHRoZSBzd2FwLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZSBudW1iZXIgb2YgYmxvY2tziAlhZnRlciB3aGljaCB0aGUgc3dhcCB3aWxsIGV4cGlyZS4AfEVtaXRzIGBTd2FwQ3JlYXRlZGAgb24gc3VjY2Vzcy4sY2FuY2VsX3N3YXAIAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAIyRYQ2FuY2VsIGFuIGF0b21pYyBzd2FwLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLhUBT3JpZ2luIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYCBpZiB0aGUgZGVhZGxpbmUgaGFzbid0IGV4cGlyZWQuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLgCERW1pdHMgYFN3YXBDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuKGNsYWltX3N3YXAUATxzZW5kX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW5kX2l0ZW04ASRUOjpJdGVtSWQAAUhyZWNlaXZlX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATByZWNlaXZlX2l0ZW04ASRUOjpJdGVtSWQAATR3aXRuZXNzX3ByaWNlpQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AJDBUQ2xhaW0gYW4gYXRvbWljIHN3YXAuOQFUaGlzIG1ldGhvZCBleGVjdXRlcyBhIHBlbmRpbmcgc3dhcCwgdGhhdCB3YXMgY3JlYXRlZCBieSBhIGNvdW50ZXJwYXJ0IGJlZm9yZS4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgDsLSBgc2VuZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgc2VudC6MLSBgc2VuZF9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgc2VudC4JAS0gYHJlY2VpdmVfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHJlY2VpdmVkLqgtIGByZWNlaXZlX2l0ZW1gOiBUaGUgaXRlbSB0byBiZSByZWNlaXZlZC7kLSBgd2l0bmVzc19wcmljZWA6IEEgcHJpY2UgdGhhdCB3YXMgcHJldmlvdXNseSBhZ3JlZWQgb24uAHxFbWl0cyBgU3dhcENsYWltZWRgIG9uIHN1Y2Nlc3MuPG1pbnRfcHJlX3NpZ25lZAwBJG1pbnRfZGF0YbEEAWhCb3g8UHJlU2lnbmVkTWludE9mPFQsIEk+PgABJHNpZ25hdHVyZbUEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAlNMhNaW50IGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBdAS0gYG1pbnRfZGF0YWA6IFRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsIHRoYXQgY29uc2lzdHMgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLFEBICBpdHMgbWV0YWRhdGEsIGF0dHJpYnV0ZXMsIHdobyBjYW4gbWludCBpdCAoYE5vbmVgIGZvciBhbnlvbmUpIGFuZCB1bnRpbCB3aGF0IGJsb2NrJCAgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LjkBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBJc3N1ZXIgb2YgdGhlIGNvbGxlY3Rpb24uAGhFbWl0cyBgSXNzdWVkYCBvbiBzdWNjZXNzLtRFbWl0cyBgQXR0cmlidXRlU2V0YCBpZiB0aGUgYXR0cmlidXRlcyB3ZXJlIHByb3ZpZGVkLthFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YCBpZiB0aGUgbWV0YWRhdGEgd2FzIG5vdCBlbXB0eS5kc2V0X2F0dHJpYnV0ZXNfcHJlX3NpZ25lZAwBEGRhdGG9BAFsUHJlU2lnbmVkQXR0cmlidXRlc09mPFQsIEk+AAEkc2lnbmF0dXJltQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAEYc2lnbmVyBAEwVDo6QWNjb3VudElkACY0AQFTZXQgYXR0cmlidXRlcyBmb3IgYW4gaXRlbSBieSBwcm92aWRpbmcgdGhlIHByZS1zaWduZWQgYXBwcm92YWwuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBkYXRhLml0ZW1gLgBJAS0gYGRhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSzMICBhdHRyaWJ1dGVzIHRvIHVwZGF0ZSBhbmQgdW50aWwgd2hhdCBibG9jayBudW1iZXIuyC0gYHNpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgdGhlIGBkYXRhYCBvYmplY3QuUQEtIGBzaWduZXJgOiBUaGUgYGRhdGFgIG9iamVjdCdzIHNpZ25lci4gU2hvdWxkIGJlIGFuIEFkbWluIG9mIHRoZSBjb2xsZWN0aW9uIGZvciB0aGV4ICBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UuAMRFbWl0cyBgQXR0cmlidXRlU2V0YCBmb3IgZWFjaCBwcm92aWRlZCBhdHRyaWJ1dGUuGQFFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBpZiB0aGUgYXBwcm92YWwgd2Fzbid0IHNldCBiZWZvcmUuqEVtaXRzIGBQcmVTaWduZWRBdHRyaWJ1dGVzU2V0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5lBAwscGFsbGV0X25mdHMUdHlwZXNAQ29sbGVjdGlvbkNvbmZpZwwUUHJpY2UBNQEsQmxvY2tOdW1iZXIBODBDb2xsZWN0aW9uSWQBOAAMASBzZXR0aW5nc2kEAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx54AEsT3B0aW9uPHUzMj4AATRtaW50X3NldHRpbmdzcQQBuE1pbnRTZXR0aW5nczxQcmljZSwgQmxvY2tOdW1iZXIsIENvbGxlY3Rpb25JZD4AAGkEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFtBAAEACgBRENvbGxlY3Rpb25TZXR0aW5nAABtBAwscGFsbGV0X25mdHMUdHlwZXNEQ29sbGVjdGlvblNldHRpbmcAARREVHJhbnNmZXJhYmxlSXRlbXMAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABABEVW5sb2NrZWRNYXhTdXBwbHkACAA8RGVwb3NpdFJlcXVpcmVkABAAAHEEDCxwYWxsZXRfbmZ0cxR0eXBlczBNaW50U2V0dGluZ3MMFFByaWNlATUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgAFAEkbWludF90eXBldQQBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZTEBATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2vgAUxPcHRpb248QmxvY2tOdW1iZXI+AAEkZW5kX2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABVGRlZmF1bHRfaXRlbV9zZXR0aW5nc3kEATBJdGVtU2V0dGluZ3MAAHUEDCxwYWxsZXRfbmZ0cxR0eXBlcyBNaW50VHlwZQQwQ29sbGVjdGlvbklkATgBDBhJc3N1ZXIAAAAYUHVibGljAAEAIEhvbGRlck9mBAA4ATBDb2xsZWN0aW9uSWQAAgAAeQQMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAX0EAAQAKAEsSXRlbVNldHRpbmcAAH0EDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtU2V0dGluZwABDDBUcmFuc2ZlcmFibGUAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABAAAgQQMLHBhbGxldF9uZnRzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMAThpdGVtX21ldGFkYXRhc2ABDHUzMgABMGl0ZW1fY29uZmlnc2ABDHUzMgABKGF0dHJpYnV0ZXNgAQx1MzIAAIUEBBhPcHRpb24EBFQBiQQBCBBOb25lAAAAEFNvbWUEAIkEAAABAACJBAwscGFsbGV0X25mdHMUdHlwZXMsTWludFdpdG5lc3MIGEl0ZW1JZAE4HEJhbGFuY2UBNQEACAEob3duZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEobWludF9wcmljZTEBATxPcHRpb248QmFsYW5jZT4AAI0EDCxwYWxsZXRfbmZ0cxR0eXBlcyhJdGVtQ29uZmlnAAAEASBzZXR0aW5nc3kEATBJdGVtU2V0dGluZ3MAAJEEDCxwYWxsZXRfbmZ0cxR0eXBlc0hBdHRyaWJ1dGVOYW1lc3BhY2UEJEFjY291bnRJZAEEARAYUGFsbGV0AAAAPENvbGxlY3Rpb25Pd25lcgABACRJdGVtT3duZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAAJUEDCxwYWxsZXRfbmZ0cxR0eXBlc3xDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzAAAEAUhhY2NvdW50X2F0dHJpYnV0ZXM4AQx1MzIAAJkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQQEUwAABAChBAEYVmVjPFQ+AACdBAwscGFsbGV0X25mdHMUdHlwZXMcSXRlbVRpcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQYQW1vdW50ATUBABABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEgcmVjZWl2ZXIEASRBY2NvdW50SWQAARhhbW91bnQ1AQEYQW1vdW50AAChBAAAAp0EAKUEBBhPcHRpb24EBFQBqQQBCBBOb25lAAAAEFNvbWUEAKkEAAABAACpBAwscGFsbGV0X25mdHMUdHlwZXNIUHJpY2VXaXRoRGlyZWN0aW9uBBhBbW91bnQBNQEACAEYYW1vdW50NQEBGEFtb3VudAABJGRpcmVjdGlvbq0EAThQcmljZURpcmVjdGlvbgAArQQMLHBhbGxldF9uZnRzFHR5cGVzOFByaWNlRGlyZWN0aW9uAAEIEFNlbmQAAAAcUmVjZWl2ZQABAACxBAwscGFsbGV0X25mdHMUdHlwZXM0UHJlU2lnbmVkTWludBQwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOBxCYWxhbmNlATUBABwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEoYXR0cmlidXRlcywBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAEgbWV0YWRhdGEYARxWZWM8dTg+AAEwb25seV9hY2NvdW50qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQABKG1pbnRfcHJpY2UxAQE8T3B0aW9uPEJhbGFuY2U+AAC1BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BAC5BAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEALkEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAJEBAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAkQEBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAuQQAAANAAAAADAC9BAwscGFsbGV0X25mdHMUdHlwZXNMUHJlU2lnbmVkQXR0cmlidXRlcxAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOAAUAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZZEEAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAMEEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASRpc19mcm96ZW51AQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybnUBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzxQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7FBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAckEBFMAAAQAzQQBGFZlYzxUPgAAyQQMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlGQIBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxldQEBEGJvb2wAAM0EAAACyQQA0QQMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudHUBARBib29sAAEkaXNfZnJvemVudQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm51AQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZldQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc0UEAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QQMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBBDYWxsBARUAAEYLGNyZWF0ZV9wb29sCAEYYXNzZXQxGQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyGQIBREJveDxUOjpBc3NldEtpbmQ+AAAQGQFDcmVhdGVzIGFuIGVtcHR5IGxpcXVpZGl0eSBwb29sIGFuZCBhbiBhc3NvY2lhdGVkIG5ldyBgbHBfdG9rZW5gIGFzc2V0AQEodGhlIGlkIG9mIHdoaWNoIGlzIHJldHVybmVkIGluIHRoZSBgRXZlbnQ6OlBvb2xDcmVhdGVkYCBldmVudCkuABEBT25jZSBhIHBvb2wgaXMgY3JlYXRlZCwgc29tZW9uZSBtYXkgW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSB0byBpdC40YWRkX2xpcXVpZGl0eRwBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgABPGFtb3VudDFfZGVzaXJlZDUBAShUOjpCYWxhbmNlAAE8YW1vdW50Ml9kZXNpcmVkNQEBKFQ6OkJhbGFuY2UAASxhbW91bnQxX21pbjUBAShUOjpCYWxhbmNlAAEsYW1vdW50Ml9taW41AQEoVDo6QmFsYW5jZQABHG1pbnRfdG8EATBUOjpBY2NvdW50SWQAATjkUHJvdmlkZSBsaXF1aWRpdHkgaW50byB0aGUgcG9vbCBvZiBgYXNzZXQxYCBhbmQgYGFzc2V0MmAuDQFOT1RFOiBhbiBvcHRpbWFsIGFtb3VudCBvZiBhc3NldDEgYW5kIGFzc2V0MiB3aWxsIGJlIGNhbGN1bGF0ZWQgYW5kIQFtaWdodCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgcHJvdmlkZWQgYGFtb3VudDFfZGVzaXJlZGAvYGFtb3VudDJfZGVzaXJlZGD8dGh1cyB5b3Ugc2hvdWxkIHByb3ZpZGUgdGhlIG1pbiBhbW91bnQgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuyFBhcmFtcyBgYW1vdW50MV9taW5gL2BhbW91bnQyX21pbmAgcmVwcmVzZW50IHRoYXQuSQFgbWludF90b2Agd2lsbCBiZSBzZW50IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgcmVwcmVzZW50IHRoaXMgc2hhcmUgb2YgdGhlIHBvb2wuAF0BTk9URTogd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW5jb3JyZWN0IGV4Y2hhbmdlIHJhdGUgYW5kIG5vbi13aXRoZHJhd2FibGUgcG9vbCBsaXF1aWRpdHks3GJhdGNoIGFuIGF0b21pYyBjYWxsIHdpdGggW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSBhbmRRAVtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSUBY2FsbHMgdG8gcmVuZGVyIHRoZSBsaXF1aWRpdHkgd2l0aGRyYXdhYmxlIGFuZCByZWN0aWZ5IHRoZSBleGNoYW5nZSByYXRlLgDYT25jZSBsaXF1aWRpdHkgaXMgYWRkZWQsIHNvbWVvbmUgbWF5IHN1Y2Nlc3NmdWxseSBjYWxspFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uQHJlbW92ZV9saXF1aWRpdHkYARhhc3NldDEZAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIZAgFEQm94PFQ6OkFzc2V0S2luZD4AATRscF90b2tlbl9idXJuNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQxX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQyX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZAACDE0BQWxsb3dzIHlvdSB0byByZW1vdmUgbGlxdWlkaXR5IGJ5IHByb3ZpZGluZyB0aGUgYGxwX3Rva2VuX2J1cm5gIHRva2VucyB0aGF0IHdpbGwgYmVRAWJ1cm5lZCBpbiB0aGUgcHJvY2Vzcy4gV2l0aCB0aGUgdXNhZ2Ugb2YgYGFtb3VudDFfbWluX3JlY2VpdmVgL2BhbW91bnQyX21pbl9yZWNlaXZlYDUBaXQncyBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBtaW4gYW1vdW50IG9mIHJldHVybmVkIHRva2VucyB5b3UncmUgaGFwcHkgd2l0aC5wc3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2VucxQBEHBhdGjZBAFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlAAE4YW1vdW50X291dF9taW41AQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZldQEBEGJvb2wAAxjAU3dhcCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGludG8gYGFzc2V0MmAuLQFgYW1vdW50X291dF9taW5gIHBhcmFtIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbWluIGFtb3VudCBvZiB0aGUgYGFzc2V0MmBgeW91J3JlIGhhcHB5IHRvIHJlY2VpdmUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUucHN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMUARBwYXRo2QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AAShhbW91bnRfb3V0NQEBKFQ6OkJhbGFuY2UAATRhbW91bnRfaW5fbWF4NQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZXUBARBib29sAAQYAQFTd2FwIGFueSBhbW91bnQgb2YgYGFzc2V0MWAgdG8gZ2V0IHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuGQFgYW1vdW50X2luX21heGAgcGFyYW0gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIG1heCBhbW91bnQgb2YgdGhlIGBhc3NldDFgYHlvdSdyZSBoYXBweSB0byBwcm92aWRlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLhR0b3VjaAgBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgAFLE0BVG91Y2ggYW4gZXhpc3RpbmcgcG9vbCB0byBmdWxmaWxsIHByZXJlcXVpc2l0ZXMgYmVmb3JlIHByb3ZpZGluZyBsaXF1aWRpdHksIHN1Y2ggYXNJAWVuc3VyaW5nIHRoYXQgdGhlIHBvb2wncyBhY2NvdW50cyBhcmUgaW4gcGxhY2UuIEl0IGlzIHR5cGljYWxseSB1c2VmdWwgd2hlbiBhIHBvb2xVAWNyZWF0b3IgcmVtb3ZlcyB0aGUgcG9vbCdzIGFjY291bnRzIGFuZCBkb2VzIG5vdCBwcm92aWRlIGEgbGlxdWlkaXR5LiBUaGlzIGFjdGlvbiBtYXlVAWludm9sdmUgaG9sZGluZyBhc3NldHMgZnJvbSB0aGUgY2FsbGVyIGFzIGEgZGVwb3NpdCBmb3IgY3JlYXRpbmcgdGhlIHBvb2wncyBhY2NvdW50cy4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuACkBLSBgYXNzZXQxYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4pAS0gYGFzc2V0MmA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgRwUGFsbGV0J3MgY2FsbGFibGUgZnVuY3Rpb25zLtkEAAACGQIA3QQMPHBhbGxldF9zY2FyY2l0eRhwYWxsZXQQQ2FsbAQEVAABOERjcmVhdGVfY29sbGVjdGlvbgAABKBDcmVhdGUgYSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuLGRlZmluZV9pdGVtDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABPHRyYW5zZmVyYWJpbGl0eeEEATxUcmFuc2ZlcmFiaWxpdHkAASBtZXRhZGF0YeUEAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAEU7ERlZmluZSBvbmUgaW1tdXRhYmxlIGl0ZW0gYW5kIGl0cyBzaGFyZWQgbWV0YWRhdGEgZGVmYXVsdHMuAEUBVGhlIHN1cHBsaWVkIG1ldGFkYXRhIGlzIGluaGVyaXRlZCBieSBldmVyeSBpbnN0YW5jZSBtaW50ZWQgZnJvbSB0aGlzIGRlZmluaXRpb24uVQFJbnN0YW5jZS1zcGVjaWZpYyB2YWx1ZXMgYmVsb25nIG9uIFtgU2VsZjo6bWludGBdIG9yIFtgU2VsZjo6c2V0X2luc3RhbmNlX21ldGFkYXRhYF0uLQFgdHJhbnNmZXJhYmlsaXR5YCBpcyBmaXhlZCBoZXJlIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBvbmNlIGluc3RhbmNlcyBleGlzdC4QbWludBABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQAASBtZXRhZGF0YeUEAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAIcJQFNaW50IGFuIGluc3RhbmNlIG9mIGFuIGltbXV0YWJsZSBpdGVtIGRlZmluaXRpb24gaW50byBhbiBlbXB0eSBwdXJzZSBrZXkuAEUBVGhlIGRlc3RpbmF0aW9uIGdpdmVzIG5vIGNvbnNlbnQ7IGFueSBlbXB0eSBrZXkgaXMgYSB2YWxpZCB0YXJnZXQuIFNlZSB0aGUgbW9kdWxllGRvY3VtZW50YXRpb24gb24gcHVyc2Uta2V5IG9jY3VwYW5jeS4ARQFgbWV0YWRhdGFgIGNvbnRhaW5zIGluc3RhbmNlLXNwZWNpZmljIG92ZXJyaWRlcy4gSXRlbSBtZXRhZGF0YSByZW1haW5zIHRoZSBzaGFyZWTYZGVmYXVsdCBmb3IgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGRlZmluaXRpb24uIHRyYW5zZmVyBAEIdG8EATBUOjpBY2NvdW50SWQAAwzsVHJhbnNmZXIgYW4gTkZUIGhlbGQgYnkgdGhlIGBPcmlnaW46Ok5mdGAgcHVyc2Uta2V5IG9yaWdpbi4AFQFGYWlscyBmb3IgYW4gaW5zdGFuY2Ugb2YgYSBbYFRyYW5zZmVyYWJpbGl0eTo6U291bGJvdW5kYF0gZGVmaW5pdGlvbi4QYnVybgAEFNxCdXJuIGFuIE5GVCBoZWxkIGJ5IHRoZSBgT3JpZ2luOjpOZnRgIHB1cnNlLWtleSBvcmlnaW4uAEkBSXRlbS1kZWZpbml0aW9uIHN1cHBseSBjb3VudHMgbWludGVkLWV2ZXIgaW5zdGFuY2VzIGFuZCBpcyBkZWxpYmVyYXRlbHkgbW9ub3RvbmljLk0BSXRlbSBtZXRhZGF0YSBiZWxvbmdzIHRvIHRoZSBkZWZpbml0aW9uIGFuZCByZW1haW5zIHVudG91Y2hlZC4gSW5zdGFuY2UgbWV0YWRhdGEgaXOwcmVtb3ZlZCBhbmQgaXRzIGV4YWN0IGRlcG9zaXRzIGFyZSByZWxlYXNlZC5kbm9taW5hdGVfY29sbGVjdGlvbl9vd25lcggBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATRwZW5kaW5nX293bmVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAUQ3E5vbWluYXRlIGFuIGFjY291bnQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIGEgY29sbGVjdGlvbi4AVQFPbmx5IHRoZSBjdXJyZW50IG93bmVyIG1heSBub21pbmF0ZSBvciBjbGVhciBhIHByb3NwZWN0aXZlIG93bmVyLiBOb21pbmF0aW9uIGRvZXMgbm90iGNoYW5nZSBhdXRob3JpdHkgb3IgbW92ZSBkZXBvc2l0cy5cc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4AARR2YWx1Ze0EAWhPcHRpb248TWV0YWRhdGFWYWx1ZU9mPFQ+PgAGEMhTZXQgb3IgcmVtb3ZlIGEgY29sbGVjdGlvbi1sZXZlbCBtZXRhZGF0YSBkZWZhdWx0LgBJAU9ubHkgdGhlIGNvbGxlY3Rpb24gb3duZXIgbWF5IG11dGF0ZSBtZXRhZGF0YS4gYE5vbmVgIHJlbGVhc2VzIGFuIGV4aXN0aW5nIGVudHJ5J3PkZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuRHNldF9pdGVtX21ldGFkYXRhEAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl7QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAcUFQFTZXQgb3IgcmVtb3ZlIGEgbWV0YWRhdGEgZGVmYXVsdCBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2Ugb2YgYW4gaXRlbS4ASQFUaGlzIHNjb3BlIG92ZXJyaWRlcyB0aGUgY29sbGVjdGlvbiBkZWZhdWx0IHdpdGhvdXQgY2hhbmdpbmcgYW55IGluc3RhbmNlLXNwZWNpZmljUQFvdmVycmlkZS4gT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcFAWVudHJ5J3MgZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuaGNsYWltX2NvbGxlY3Rpb25fb3duZXJzaGlwBAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAAIFORDbGFpbSBhIGNvbGxlY3Rpb24gYWZ0ZXIgbm9taW5hdGlvbiBieSBpdHMgY3VycmVudCBvd25lci4AUQFBbiBlcXVpdmFsZW50IGFnZ3JlZ2F0ZSBjb25zaWRlcmF0aW9uIGlzIGZpcnN0IGNyZWF0ZWQgZm9yIHRoZSBjbGFpbWFudCBhbmQgdGhlbiB0aGVVAXByZXZpb3VzIG93bmVyJ3MgdGlja2V0IGlzIGRyb3BwZWQuIFRoZSBvcGVyYXRpb24gaXMgYXRvbWljOiBmYWlsdXJlIHRvIGVzdGFibGlzaCB0aGUVAWNsYWltYW50J3MgY29uc2lkZXJhdGlvbiBsZWF2ZXMgb3duZXJzaGlwIGFuZCBib3RoIHRpY2tldHMgdW5jaGFuZ2VkLlRzZXRfaW5zdGFuY2VfbWV0YWRhdGEMASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl7QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAkQ1FNldCBvciByZW1vdmUgYW4gaW5zdGFuY2Utc3BlY2lmaWMgbWV0YWRhdGEgb3ZlcnJpZGUuAEkBT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcgZW50cnknc+RkZXBvc2l0OyB3aGVuIHRoZSBrZXkgaXMgYWJzZW50IGl0IGlzIGEgc3VjY2Vzc2Z1bCBuby1vcC4oZm9yY2VfYnVybgQBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAAKFNRGb3JjZS1idXJuIG9uZSBsaXZlIGluc3RhbmNlIGFzIGl0cyBjb2xsZWN0aW9uIG93bmVyLgBZAVRoZSBjb2xsZWN0aW9uIGxheWVyIGludGVudGlvbmFsbHkgYXBwbGllcyBubyBob2xkZXItbGV2ZWwgQUNMLiBXaGVuIGEgcnVudGltZSBleHBvc2VzWQF0aGlzIGNhbGwgdG8gaXRzIGNvbnRyYWN0IGVudmlyb25tZW50LCBhIGNvbnRyYWN0LW93bmVkIGNvbGxlY3Rpb24gY2FuIGVuZm9yY2UgaXRzIG93bqRjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LixkZWxldGVfaXRlbQgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAsc1ERlbGV0ZSBhbiB1bnVzZWQgaXRlbSBkZWZpbml0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAD0BRXZlcnkgbGl2ZSBpbnN0YW5jZSBtdXN0IGJlIGJ1cm5lZCBhbmQgZXZlcnkgaXRlbSBtZXRhZGF0YSBlbnRyeSByZW1vdmVkIGZpcnN0LmEBRGVsZXRlZCBpdGVtIGluZGljZXMgYXJlIG5ldmVyIHJldXNlZCwgYW5kIHRoZSBjb2xsZWN0aW9uJ3MgbmV4dCBpbmRleCBkb2VzIG5vdCBkcm9wLCBzb1kBYW55dGhpbmcgc2VsZWN0aW5nIGFuIGl0ZW0gYnkgdGhhdCBpbmRleCBjYW4gc2VsZWN0IGEgZGVsZXRlZCBvbmUgYW5kIGZhaWwuIERlZmluaW5nIGFNAXJlcGxhY2VtZW50IHJhaXNlcyB0aGUgaW5kZXggcmF0aGVyIHRoYW4gZmlsbGluZyB0aGUgaG9sZSwgd2hpY2ggY2hhbmdlcyB3aGF0IGV2ZXJ5iG91dHN0YW5kaW5nIHNlbGVjdGlvbiByZXNvbHZlcyB0by5EZGVsZXRlX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAwQvERlbGV0ZSBhbiBlbXB0eSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAEkBRXZlcnkgaXRlbSBkZWZpbml0aW9uIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCBmaXJzdC4gRGVsZXRlZKBjb2xsZWN0aW9uIGlkZW50aWZpZXJzIGFyZSBuZXZlciByZXVzZWQuOGZvcmNlX3RyYW5zZmVyCAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQADRjkRm9yY2UtdHJhbnNmZXIgb25lIGxpdmUgaW5zdGFuY2UgYXMgaXRzIGNvbGxlY3Rpb24gb3duZXIuAFkBVGhlIGNvbGxlY3Rpb24gbGF5ZXIgaW50ZW50aW9uYWxseSBhcHBsaWVzIG5vIGhvbGRlci1sZXZlbCBBQ0wuIFdoZW4gYSBydW50aW1lIGV4cG9zZXNZAXRoaXMgY2FsbCB0byBpdHMgY29udHJhY3QgZW52aXJvbm1lbnQsIGEgY29udHJhY3Qtb3duZWQgY29sbGVjdGlvbiBjYW4gZW5mb3JjZSBpdHMgb3duXQFjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LiBUaGUgbW92ZSBpbmNyZW1lbnRzIHRoZSBpbnN0YW5jZSBzdGF0ZSBub25jZSykaW52YWxpZGF0aW5nIHByaW9yIGhvbGRlciBhdXRob3JpemF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4QQMPHBhbGxldF9zY2FyY2l0eRhwYWxsZXQ8VHJhbnNmZXJhYmlsaXR5AAEIMFRyYW5zZmVyYWJsZQAAACRTb3VsYm91bmQAAQAA5QQAAALpBADpBAAABAjdA1kBAO0EBBhPcHRpb24EBFQBWQEBCBBOb25lAAAAEFNvbWUEAFkBAAABAADxBAw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBBDYWxsCARUAARJAAEYLHNwZW5kX2xvY2FsCAEYYW1vdW50cQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AA0S4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEUBTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3QgYGFtb3VudGAuACwjIyMgRGV0YWlsc0UBTk9URTogRm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLCB0aGUgcHJvcG9zZXIgaXMgZGVlbWVkIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlMGJlbmVmaWNpYXJ5LgA4IyMjIFBhcmFtZXRlcnNBAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAu6C0gYGJlbmVmaWNpYXJ5YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB0cmFuc2Zlci4AJCMjIEV2ZW50cwC0RW1pdHMgW2BFdmVudDo6U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuPHJlbW92ZV9hcHByb3ZhbAQBLHByb3Bvc2FsX2lkYAE0UHJvcG9zYWxJbmRleAAEVC0BRm9yY2UgYSBwcmV2aW91c2x5IGFwcHJvdmVkIHByb3Bvc2FsIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgYXBwcm92YWwgcXVldWUuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwDAVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBubyBsb25nZXIgYmUgcmV0dXJuZWQuADgjIyMgUGFyYW1ldGVyc6AtIGBwcm9wb3NhbF9pZGA6IFRoZSBpbmRleCBvZiBhIHByb3Bvc2FsADgjIyMgQ29tcGxleGl0eawtIE8oQSkgd2hlcmUgYEFgIGlzIHRoZSBudW1iZXIgb2YgYXBwcm92YWxzACgjIyMgRXJyb3JzRQEtIFtgRXJyb3I6OlByb3Bvc2FsTm90QXBwcm92ZWRgXTogVGhlIGBwcm9wb3NhbF9pZGAgc3VwcGxpZWQgd2FzIG5vdCBmb3VuZCBpbiB0aGVRASAgYXBwcm92YWwgcXVldWUsIGkuZS4sIHRoZSBwcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuIFRoaXMgY291bGQgYWxzbyBtZWFuIHRoZVkBICBwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCBhbHRvZ2V0aGVyLCB0aHVzIHRoZXJlIGlzIG5vIHdheSBpdCB3b3VsZCBoYXZlIGJlZW4gYXBwcm92ZWRUICBpbiB0aGUgZmlyc3QgcGxhY2UuFHNwZW5kEAEoYXNzZXRfa2luZPUEAURCb3g8VDo6QXNzZXRLaW5kPgABGGFtb3VudHEBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5+QQBeEJveDxCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+PgABKHZhbGlkX2Zyb23gAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AAVouFByb3Bvc2UgYW5kIGFwcHJvdmUgYSBzcGVuZCBvZiB0cmVhc3VyeSBmdW5kcy4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0VQFgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgaW4gdGhlIG5hdGl2ZSBhc3NldC4gVGhlIGFtb3VudCBvZiBgYXNzZXRfa2luZGAgaXMgY29udmVydGVk1GZvciBhc3NlcnRpb24gdXNpbmcgdGhlIFtgQ29uZmlnOjpCYWxhbmNlQ29udmVydGVyYF0uACgjIyBEZXRhaWxzAEkBQ3JlYXRlIGFuIGFwcHJvdmVkIHNwZW5kIGZvciB0cmFuc2ZlcnJpbmcgYSBzcGVjaWZpYyBgYW1vdW50YCBvZiBgYXNzZXRfa2luZGAgdG8gYWEBZGVzaWduYXRlZCBiZW5lZmljaWFyeS4gVGhlIHNwZW5kIG11c3QgYmUgY2xhaW1lZCB1c2luZyB0aGUgYHBheW91dGAgZGlzcGF0Y2hhYmxlIHdpdGhpbnR0aGUgW2BDb25maWc6OlBheW91dFBlcmlvZGBdLgA4IyMjIFBhcmFtZXRlcnMVAS0gYGFzc2V0X2tpbmRgOiBBbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmljIGFzc2V0IGNsYXNzIHRvIGJlIHNwZW50LkEBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC64LSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgb2YgdGhlIHNwZW5kLlUBLSBgdmFsaWRfZnJvbWA6IFRoZSBibG9jayBudW1iZXIgZnJvbSB3aGljaCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQuIEl0IGNhbiByZWZlciB0bxkBICB0aGUgcGFzdCBpZiB0aGUgcmVzdWx0aW5nIHNwZW5kIGhhcyBub3QgeWV0IGV4cGlyZWQgYWNjb3JkaW5nIHRvIHRoZUUBICBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uIElmIGBOb25lYCwgdGhlIHNwZW5kIGNhbiBiZSBjbGFpbWVkIGltbWVkaWF0ZWx5IGFmdGVyLCAgYXBwcm92YWwuACQjIyBFdmVudHMAyEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuGHBheW91dAQBFGluZGV4OAEoU3BlbmRJbmRleAAGTDhDbGFpbSBhIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADhNdXN0IGJlIHNpZ25lZAAoIyMgRGV0YWlscwBVAVNwZW5kcyBtdXN0IGJlIGNsYWltZWQgd2l0aGluIHNvbWUgdGVtcG9yYWwgYm91bmRzLiBBIHNwZW5kIG1heSBiZSBjbGFpbWVkIHdpdGhpbiBvbmXUW2BDb25maWc6OlBheW91dFBlcmlvZGBdIGZyb20gdGhlIGB2YWxpZF9mcm9tYCBibG9jay5VAUluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIHNwZW5kIHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUgYGNoZWNrX3N0YXR1c2DcZGlzcGF0Y2hhYmxlIGJlZm9yZSByZXRyeWluZyB3aXRoIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAkEVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMEARRpbmRleDgBKFNwZW5kSW5kZXgAB0wpAUNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZW5kIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgc3RvcmFnZSBpZiBwcm9jZXNzZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwABAVRoZSBzdGF0dXMgY2hlY2sgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIHJldHJ5aW5nIGEgZmFpbGVkIHBheW91dC5JAUlmIGEgc3BlbmQgaGFzIGVpdGhlciBzdWNjZWVkZWQgb3IgZXhwaXJlZCwgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlIGJ5IHRoaXPsZnVuY3Rpb24uIEluIHN1Y2ggaW5zdGFuY2VzLCB0cmFuc2FjdGlvbiBmZWVzIGFyZSByZWZ1bmRlZC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAPhFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIHNwZW5kIHBheW91dCBoYXMgZmFpbGVkLgEBRW1pdHMgW2BFdmVudDo6U3BlbmRQcm9jZXNzZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBzdWNjZWVkLih2b2lkX3NwZW5kBAEUaW5kZXg4AShTcGVuZEluZGV4AAhAfFZvaWQgcHJldmlvdXNseSBhcHByb3ZlZCBzcGVuZC4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAB0BQSBzcGVuZCB2b2lkIGlzIG9ubHkgcG9zc2libGUgaWYgdGhlIHBheW91dCBoYXMgbm90IGJlZW4gYXR0ZW1wdGVkIHlldC4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAMBFbWl0cyBbYEV2ZW50OjpBc3NldFNwZW5kVm9pZGVkYF0gaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu9QQMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFGltcGxzXFZlcnNpb25lZExvY2F0YWJsZUFzc2V0AAEMCFYzCAEgbG9jYXRpb27JAQFEeGNtOjp2Mzo6TG9jYXRpb24AASBhc3NldF9pZGkCAUB4Y206OnYzOjpBc3NldElkAAMACFY0CAEgbG9jYXRpb27lAQFEeGNtOjp2NDo6TG9jYXRpb24AASBhc3NldF9pZN0CAUB4Y206OnY0OjpBc3NldElkAAQACFY1CAEgbG9jYXRpb24ZAgFEeGNtOjp2NTo6TG9jYXRpb24AASBhc3NldF9pZCkDAUB4Y206OnY1OjpBc3NldElkAAUAAPkEDERwYXJhY2hhaW5zX2NvbW1vbgxwYXlkVmVyc2lvbmVkTG9jYXRhYmxlQWNjb3VudAABCAhWNAgBIGxvY2F0aW9u5QEBRHhjbTo6djQ6OkxvY2F0aW9uAAEoYWNjb3VudF9pZOUBAUR4Y206OnY0OjpMb2NhdGlvbgAEAAhWNQgBIGxvY2F0aW9uGQIBRHhjbTo6djU6OkxvY2F0aW9uAAEoYWNjb3VudF9pZBkCAUR4Y206OnY1OjpMb2NhdGlvbgAFAAD9BAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBBDYWxsCARUAARJAAEYEHZvdGUIAShwb2xsX2luZGV4YAFEUG9sbEluZGV4T2Y8VCwgST4AARB2b3RlAQUBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AACQZAVZvdGUgaW4gYSBwb2xsLiBJZiBgdm90ZS5pc19heWUoKWAsIHRoZSB2b3RlIGlzIHRvIGVuYWN0IHRoZSBwcm9wb3NhbDu4b3RoZXJ3aXNlIGl0IGlzIGEgdm90ZSB0byBrZWVwIHRoZSBzdGF0dXMgcXVvLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AyC0gYHBvbGxfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHBvbGwgdG8gdm90ZSBmb3IuhC0gYHZvdGVgOiBUaGUgdm90ZSBjb25maWd1cmF0aW9uLgAVAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgaGFzIHZvdGVkIG9uLiBkZWxlZ2F0ZRABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AAQh0bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoY29udmljdGlvbgkFAShDb252aWN0aW9uAAEcYmFsYW5jZTUBATxCYWxhbmNlT2Y8VCwgST4AAVxNAURlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgKHdpdGggc29tZSBnaXZlbiBjb252aWN0aW9uKSBvZiB0aGUgc2VuZGluZyBhY2NvdW50IGZvciBhaHBhcnRpY3VsYXIgY2xhc3Mgb2YgcG9sbHMuAFUBVGhlIGJhbGFuY2UgZGVsZWdhdGVkIGlzIGxvY2tlZCBmb3IgYXMgbG9uZyBhcyBpdCdzIGRlbGVnYXRlZCwgYW5kIHRoZXJlYWZ0ZXIgZm9yIHRoZch0aW1lIGFwcHJvcHJpYXRlIGZvciB0aGUgY29udmljdGlvbidzIGxvY2sgcGVyaW9kLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgZWl0aGVyOnQgIC0gYmUgZGVsZWdhdGluZyBhbHJlYWR5OyBvckUBICAtIGhhdmUgbm8gdm90aW5nIGFjdGl2aXR5IChpZiB0aGVyZSBpcywgdGhlbiBpdCB3aWxsIG5lZWQgdG8gYmUgcmVtb3ZlZCB0aHJvdWdoTCAgICBgcmVtb3ZlX3ZvdGVgKS4ARQEtIGB0b2A6IFRoZSBhY2NvdW50IHdob3NlIHZvdGluZyB0aGUgYHRhcmdldGAgYWNjb3VudCdzIHZvdGluZyBwb3dlciB3aWxsIGZvbGxvdy5dAS0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIGRlbGVnYXRlLiBUbyBkZWxlZ2F0ZSBtdWx0aXBsZSBjbGFzc2VzLCBtdWx0aXBsZSBjYWxsc4AgIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHJlcXVpcmVkLlUBLSBgY29udmljdGlvbmA6IFRoZSBjb252aWN0aW9uIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgZGVsZWdhdGVkIHZvdGVzLiBXaGVuIHRoZUEBICBhY2NvdW50IGlzIHVuZGVsZWdhdGVkLCB0aGUgZnVuZHMgd2lsbCBiZSBsb2NrZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHBlcmlvZC5hAS0gYGJhbGFuY2VgOiBUaGUgYW1vdW50IG9mIHRoZSBhY2NvdW50J3MgYmFsYW5jZSB0byBiZSB1c2VkIGluIGRlbGVnYXRpbmcuIFRoaXMgbXVzdCBub3S0ICBiZSBtb3JlIHRoYW4gdGhlIGFjY291bnQncyBjdXJyZW50IGJhbGFuY2UuAEhFbWl0cyBgRGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLih1bmRlbGVnYXRlBAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgACOE0BVW5kZWxlZ2F0ZSB0aGUgdm90aW5nIHBvd2VyIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGEgcGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AXQFUb2tlbnMgbWF5IGJlIHVubG9ja2VkIGZvbGxvd2luZyBvbmNlIGFuIGFtb3VudCBvZiB0aW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9jayBwZXJpb2QJAW9mIHRoZSBjb252aWN0aW9uIHdpdGggd2hpY2ggdGhlIGRlbGVnYXRpb24gd2FzIGlzc3VlZCBoYXMgcGFzc2VkLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZVRjdXJyZW50bHkgZGVsZWdhdGluZy4A8C0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHJlbW92ZSB0aGUgZGVsZWdhdGlvbiBmcm9tLgBQRW1pdHMgYFVuZGVsZWdhdGVkYC4AJQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGRlbGVnYXRpbmcgdG8gaGFzTQEgIHZvdGVkIG9uLiBXZWlnaHQgaXMgaW5pdGlhbGx5IGNoYXJnZWQgYXMgaWYgbWF4aW11bSB2b3RlcywgYnV0IGlzIHJlZnVuZGVkIGxhdGVyLhh1bmxvY2sIARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyRdAVJlbW92ZSB0aGUgbG9jayBjYXVzZWQgYnkgcHJpb3Igdm90aW5nL2RlbGVnYXRpbmcgd2hpY2ggaGFzIGV4cGlyZWQgd2l0aGluIGEgcGFydGljdWxhchhjbGFzcy4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAKAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byB1bmxvY2suuC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSB0aGUgbG9jayBvbi4AvFdlaWdodDogYE8oUilgIHdpdGggUiBudW1iZXIgb2Ygdm90ZSBvZiB0YXJnZXQuLHJlbW92ZV92b3RlCAEUY2xhc3MNBQFUT3B0aW9uPENsYXNzT2Y8VCwgST4+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAEdGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAAxJZjpwLSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBvcmQtIHRoZSBwb2xsIGlzIG9uZ29pbmcsIG9yeC0gdGhlIHBvbGwgaGFzIGVuZGVkIHN1Y2ggdGhhdPwgIC0gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQgd2FzIGluIG9wcG9zaXRpb24gdG8gdGhlIHJlc3VsdDsgb3LUICAtIHRoZXJlIHdhcyBubyBjb252aWN0aW9uIHRvIHRoZSBhY2NvdW50J3Mgdm90ZTsgb3KEICAtIHRoZSBhY2NvdW50IG1hZGUgYSBzcGxpdCB2b3RlXQEuLi50aGVuIHRoZSB2b3RlIGlzIHJlbW92ZWQgY2xlYW5seSBhbmQgYSBmb2xsb3dpbmcgY2FsbCB0byBgdW5sb2NrYCBtYXkgcmVzdWx0IGluIG1vcmVYZnVuZHMgYmVpbmcgYXZhaWxhYmxlLgCQSWYsIGhvd2V2ZXIsIHRoZSBwb2xsIGhhcyBlbmRlZCBhbmQ67C0gaXQgZmluaXNoZWQgY29ycmVzcG9uZGluZyB0byB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCwgYW5k3C0gdGhlIGFjY291bnQgbWFkZSBhIHN0YW5kYXJkIHZvdGUgd2l0aCBjb252aWN0aW9uLCBhbmS8LSB0aGUgbG9jayBwZXJpb2Qgb2YgdGhlIGNvbnZpY3Rpb24gaXMgbm90IG92ZXJZAS4uLnRoZW4gdGhlIGxvY2sgd2lsbCBiZSBhZ2dyZWdhdGVkIGludG8gdGhlIG92ZXJhbGwgYWNjb3VudCdzIGxvY2ssIHdoaWNoIG1heSBpbnZvbHZlWQEqb3ZlcmxvY2tpbmcqICh3aGVyZSB0aGUgdHdvIGxvY2tzIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvY2sgdGhhdCBpcyB0aGUgbWF4aW11beRvZiBib3RoIHRoZSBhbW91bnQgbG9ja2VkIGFuZCB0aGUgdGltZSBpcyBpdCBsb2NrZWQgZm9yKS4ASQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25lciBtdXN0IGhhdmUgYSB2b3RlcHJlZ2lzdGVyZWQgZm9yIHBvbGwgYGluZGV4YC4A3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC5VAS0gYGNsYXNzYDogT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiBnaXZlbiBpdCBpbmRpY2F0ZXMgdGhlIGNsYXNzIG9mIHRoZSBwb2xsLiBGb3IgcG9sbHPwICB3aGljaCBoYXZlIGZpbmlzaGVkIG9yIGFyZSBjYW5jZWxsZWQsIHRoaXMgbXVzdCBiZSBgU29tZWAuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLkRyZW1vdmVfb3RoZXJfdm90ZQwBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABFGluZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4ABUBkUmVtb3ZlIGEgdm90ZSBmb3IgYSBwb2xsLgBNAUlmIHRoZSBgdGFyZ2V0YCBpcyBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvLQFgcmVtb3ZlX3ZvdGVgLiBJZiBub3QgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGUgdm90ZSBtdXN0IGhhdmUgZXhwaXJlZCwlAWVpdGhlciBiZWNhdXNlIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIGJlY2F1c2UgdGhlIHZvdGVyIGxvc3QgdGhlIHBvbGwgb3KYYmVjYXVzZSB0aGUgY29udmljdGlvbiBwZXJpb2QgaXMgb3Zlci4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAGEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZDsgdGhpcyBhY2NvdW50IG11c3QgaGF2ZSB2b3RlZCBmb3IgcG9sbCggIGBpbmRleGAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC6ELSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgdGhlIHBvbGwuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4BBQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUsQWNjb3VudFZvdGUEHEJhbGFuY2UBNQEBDCBTdGFuZGFyZAgBEHZvdGUFBQEQVm90ZQABHGJhbGFuY2U1AQEcQmFsYW5jZQAAABRTcGxpdAgBDGF5ZTUBARxCYWxhbmNlAAEMbmF5NQEBHEJhbGFuY2UAAQAwU3BsaXRBYnN0YWluDAEMYXllNQEBHEJhbGFuY2UAAQxuYXk1AQEcQmFsYW5jZQABHGFic3RhaW41AQEcQmFsYW5jZQACAAAFBQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUQVm90ZQAABAAMAAAACQUMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZyhjb252aWN0aW9uKENvbnZpY3Rpb24AARwQTm9uZQAAACBMb2NrZWQxeAABACBMb2NrZWQyeAACACBMb2NrZWQzeAADACBMb2NrZWQ0eAAEACBMb2NrZWQ1eAAFACBMb2NrZWQ2eAAGAAANBQQYT3B0aW9uBARUAe0DAQgQTm9uZQAAABBTb21lBADtAwAAAQAAEQUMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0EENhbGwIBFQABEkAASQYc3VibWl0DAE8cHJvcG9zYWxfb3JpZ2lu8QMBXEJveDxQYWxsZXRzT3JpZ2luT2Y8VD4+AAEgcHJvcG9zYWwVBQFMQm91bmRlZENhbGxPZjxULCBJPgABQGVuYWN0bWVudF9tb21lbnQdBQGIRGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAAJLBQcm9wb3NlIGEgcmVmZXJlbmR1bSBvbiBhIHByaXZpbGVnZWQgYWN0aW9uLgBZAS0gYG9yaWdpbmA6IG11c3QgYmUgYFN1Ym1pdE9yaWdpbmAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBgU3VibWlzc2lvbkRlcG9zaXRgIGZ1bmRzMCAgYXZhaWxhYmxlLi0BLSBgcHJvcG9zYWxfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZXhlY3V0ZWQubC0gYHByb3Bvc2FsYDogVGhlIHByb3Bvc2FsLhUBLSBgZW5hY3RtZW50X21vbWVudGA6IFRoZSBtb21lbnQgdGhhdCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGVuYWN0ZWQuAEhFbWl0cyBgU3VibWl0dGVkYC5YcGxhY2VfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEgrFBvc3QgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgcmVmZXJlbmR1bS4AOQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgZnVuZHMgYXZhaWxhYmxlIGZvciB0aGWgICByZWZlcmVuZHVtJ3MgdHJhY2sncyBEZWNpc2lvbiBEZXBvc2l0LlEBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHN1Ym1pdHRlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaXMgeWV0IHRvIGJlJCAgcG9zdGVkLgB4RW1pdHMgYERlY2lzaW9uRGVwb3NpdFBsYWNlZGAuXHJlZnVuZF9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAhwpAVJlZnVuZCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5NAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIBFbWl0cyBgRGVjaXNpb25EZXBvc2l0UmVmdW5kZWRgLhhjYW5jZWwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAADGHRDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtLgCcLSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYENhbmNlbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4ASEVtaXRzIGBDYW5jZWxsZWRgLhBraWxsBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABBjQQ2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bSBhbmQgc2xhc2ggdGhlIGRlcG9zaXRzLgCULSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYEtpbGxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAJBFbWl0cyBgS2lsbGVkYCBhbmQgYERlcG9zaXRTbGFzaGVkYC5AbnVkZ2VfcmVmZXJlbmR1bQQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAUQHQFBZHZhbmNlIGEgcmVmZXJlbmR1bSBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAupC0gYGluZGV4YDogdGhlIHJlZmVyZW5kdW0gdG8gYmUgYWR2YW5jZWQuSG9uZV9mZXdlcl9kZWNpZGluZwQBFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgAGJAkBQWR2YW5jZSBhIHRyYWNrIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6QLSBgdHJhY2tgOiB0aGUgdHJhY2sgdG8gYmUgYWR2YW5jZWQuAFEBQWN0aW9uIGl0ZW0gZm9yIHdoZW4gdGhlcmUgaXMgbm93IG9uZSBmZXdlciByZWZlcmVuZHVtIGluIHRoZSBkZWNpZGluZyBwaGFzZSBhbmQgdGhlFQFgRGVjaWRpbmdDb3VudGAgaXMgbm90IHlldCB1cGRhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGVpdGhlcjolAS0gYmVnaW4gZGVjaWRpbmcgYW5vdGhlciByZWZlcmVuZHVtIChhbmQgbGVhdmUgYERlY2lkaW5nQ291bnRgIGFsb25lKTsgb3JwLSBkZWNyZW1lbnQgYERlY2lkaW5nQ291bnRgLmRyZWZ1bmRfc3VibWlzc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABxwxAVJlZnVuZCB0aGUgU3VibWlzc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLlUBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBTdWJtaXNzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCIRW1pdHMgYFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWRgLjBzZXRfbWV0YWRhdGEIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAABKG1heWJlX2hhc2ghBQE8T3B0aW9uPFQ6Okhhc2g+AAgcmFNldCBvciBjbGVhciBtZXRhZGF0YSBvZiBhIHJlZmVyZW5kdW0uACxQYXJhbWV0ZXJzOkUBLSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYCBieSBhIGNyZWF0b3Igb2YgYSByZWZlcmVuZHVtIG9yIGJ5IGFueW9uZSB0byBjbGVhciBhkCAgbWV0YWRhdGEgb2YgYSBmaW5pc2hlZCByZWZlcmVuZHVtLg0BLSBgaW5kZXhgOiAgVGhlIGluZGV4IG9mIGEgcmVmZXJlbmR1bSB0byBzZXQgb3IgY2xlYXIgbWV0YWRhdGEgZm9yLlEBLSBgbWF5YmVfaGFzaGA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZS4gYE5vbmVgIHRvIGNsZWFyIGEgbWV0YWRhdGEuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUFEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyRwcmVpbWFnZXMcQm91bmRlZAgEVAEgBEgBGQUBDBhMZWdhY3kEARBoYXNoPAEkSDo6T3V0cHV0AAAAGElubGluZQQAXQQBNEJvdW5kZWRJbmxpbmUAAQAYTG9va3VwCAEQaGFzaDwBJEg6Ok91dHB1dAABDGxlbjgBDHUzMgACAAAZBQwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAHQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIHNjaGVkdWxlMERpc3BhdGNoVGltZQQsQmxvY2tOdW1iZXIBOAEICEF0BAA4ASxCbG9ja051bWJlcgAAABRBZnRlcgQAOAEsQmxvY2tOdW1iZXIAAQAAIQUEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAAAlBQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQQQ2FsbAQEVAABEDh3aGl0ZWxpc3RfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAABccmVtb3ZlX3doaXRlbGlzdGVkX2NhbGwEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEAZGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGwMASRjYWxsX2hhc2g8ARxUOjpIYXNoAAFAY2FsbF9lbmNvZGVkX2xlbjgBDHUzMgABTGNhbGxfd2VpZ2h0X3dpdG5lc3MRAQEYV2VpZ2h0AAIAnGRpc3BhdGNoX3doaXRlbGlzdGVkX2NhbGxfd2l0aF9wcmVpbWFnZQQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikFDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0EENhbGwIBFQABEkAASw4cHJvcG9zZV9ib3VudHkIARR2YWx1ZXEBATxCYWxhbmNlT2Y8VCwgST4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AADBUUHJvcG9zZSBhIG5ldyBib3VudHkuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQFQYXltZW50OiBgVGlwUmVwb3J0RGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQsIGFzIHdlbGwgYXNRAWBEYXRhRGVwb3NpdFBlckJ5dGVgIGZvciBlYWNoIGJ5dGUgaW4gYHJlYXNvbmAuIEl0IHdpbGwgYmUgdW5yZXNlcnZlZCB1cG9uIGFwcHJvdmFsLGRvciBzbGFzaGVkIHdoZW4gcmVqZWN0ZWQuAPgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuJQEtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eSwgY3VyYXRvciBmZWUgaW5jbHVkZWQuwC0gYGRlc2NyaXB0aW9uYDogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYm91bnR5LjhhcHByb3ZlX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcXQFBcHByb3ZlIGEgYm91bnR5IHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBib3VudHkgd2lsbCBiZSBmdW5kZWQgYW5kIGJlY29tZSBhY3RpdmWoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuPHByb3Bvc2VfY3VyYXRvcgwBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBPEJhbGFuY2VPZjxULCBJPgACGJRQcm9wb3NlIGEgY3VyYXRvciB0byBhIGZ1bmRlZCBib3VudHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuQHVuYXNzaWduX2N1cmF0b3IEASRib3VudHlfaWRgASxCb3VudHlJbmRleAADRHxVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBib3VudHkuAB0BVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIGEgc2lnbmVkIG9yaWdpbi4APQFJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzMQFtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuAGEBSWYgdGhlIG9yaWdpbiBpcyB0aGUgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iIGFuZF0BdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byByZWNvdmVyIHRoZWlyNQFkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZiBpdCBpcyBhYnVzZWQuKQBdAUZpbmFsbHksIHRoZSBvcmlnaW4gY2FuIGJlIGFueW9uZSBpZiBhbmQgb25seSBpZiB0aGUgY3VyYXRvciBpcyAiaW5hY3RpdmUiLiBUaGlzIGFsbG93c2EBYW55b25lIGluIHRoZSBjb21tdW5pdHkgdG8gY2FsbCBvdXQgdGhhdCBhIGN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZDkBd2Ugc2hvdWxkIHBpY2sgYSBuZXcgY3VyYXRvci4gSW4gdGhpcyBjYXNlIHRoZSBjdXJhdG9yIHNob3VsZCBhbHNvIGJlIHNsYXNoZWQuADQjIyBDb21wbGV4aXR5HC0gTygxKS44YWNjZXB0X2N1cmF0b3IEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAEHJRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBib3VudHkuKQFBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgCQTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGN1cmF0b3IuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wYXdhcmRfYm91bnR5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAUoWQFBd2FyZCBib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50LiBUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kczhhZnRlciBhIGRlbGF5LgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGF3YXJkLhkBLSBgYmVuZWZpY2lhcnlgOiBUaGUgYmVuZWZpY2lhcnkgYWNjb3VudCB3aG9tIHdpbGwgcmVjZWl2ZSB0aGUgcGF5b3V0LgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsYWltX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAYg7ENsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGJlbmVmaWNpYXJ5IG9mIHRoaXMgYm91bnR5LgCILSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNsYWltLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGNsb3NlX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAckOQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgYm91bnR5LiBBbGwgdGhlIGZ1bmRzIHdpbGwgYmUgc2VudCB0byB0cmVhc3VyeSBhbmTMdGhlIGN1cmF0b3IgZGVwb3NpdCB3aWxsIGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAMhPbmx5IGBUOjpSZWplY3RPcmlnaW5gIGlzIGFibGUgdG8gY2FuY2VsIGEgYm91bnR5LgCMLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGNhbmNlbC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLlBleHRlbmRfYm91bnR5X2V4cGlyeQgBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEYcmVtYXJrGAEcVmVjPHU4PgAIJKxFeHRlbmQgdGhlIGV4cGlyeSB0aW1lIG9mIGFuIGFjdGl2ZSBib3VudHkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gZXh0ZW5kLowtIGByZW1hcmtgOiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkubGFwcHJvdmVfYm91bnR5X3dpdGhfY3VyYXRvcgwBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBPEJhbGFuY2VPZjxULCBJPgAJLNRBcHByb3ZlIGJvdW50cnkgYW5kIHByb3Bvc2UgYSBjdXJhdG9yIHNpbXVsdGFuZW91c2x5LlUBVGhpcyBjYWxsIGlzIGEgc2hvcnRjdXQgdG8gY2FsbGluZyBgYXBwcm92ZV9ib3VudHlgIGFuZCBgcHJvcG9zZV9jdXJhdG9yYCBzZXBhcmF0ZWx5LgCkTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlNwZW5kT3JpZ2luYC4AkC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBhcHByb3ZlLvgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wcG9rZV9kZXBvc2l0BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgACjzkUG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgY3JlYXRpbmcgYSBib3VudHkgcHJvcG9zYWwuAPRUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHVwZGF0ZSB0aGVpciByZXNlcnZlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGJvdW50eV9pZGA6IFRoZSBib3VudHkgaWQgZm9yIHdoaWNoIHRvIGFkanVzdCB0aGUgZGVwb3NpdC4AOQFJZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLCB0aGUgZGlmZmVyZW5jZSB3aWxsIGJlIHJlc2VydmVkL3VucmVzZXJ2ZWQgZnJvbSB0aGVMcHJvcG9zZXIncyBhY2NvdW50LgApAVRoZSB0cmFuc2FjdGlvbiBpcyBtYWRlIGZyZWUgaWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZCBhbmQgcGFpZCBvdGhlcndpc2UuALxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4tBQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBBDYWxsBARUAAEcQGFkZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AAExcQWRkIGEgbmV3IGNoaWxkLWJvdW50eS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHBhcmVudNxib3VudHkgYW5kIHRoZSBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gImFjdGl2ZSIgc3RhdGUuAAUBQ2hpbGQtYm91bnR5IGdldHMgYWRkZWQgc3VjY2Vzc2Z1bGx5ICYgZnVuZCBnZXRzIHRyYW5zZmVycmVkIGZyb20JAXBhcmVudCBib3VudHkgdG8gY2hpbGQtYm91bnR5IGFjY291bnQsIGlmIHBhcmVudCBib3VudHkgaGFzIGVub3VnaGxmdW5kcywgZWxzZSB0aGUgY2FsbCBmYWlscy4ADQFVcHBlciBib3VuZCB0byBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlqGFkZGVkIGFyZSBtYW5hZ2VkIHZpYSBydW50aW1lIHRyYWl0IGNvbmZpZ5hbYENvbmZpZzo6TWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGBdLgABAUlmIHRoZSBjYWxsIGlzIHN1Y2Nlc3MsIHRoZSBzdGF0dXMgb2YgY2hpbGQtYm91bnR5IGlzIHVwZGF0ZWQgdG8gIkFkZGVkIi4ATQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLrAtIGB2YWx1ZWA6IFZhbHVlIGZvciBleGVjdXRpbmcgdGhlIHByb3Bvc2FsLtwtIGBkZXNjcmlwdGlvbmA6IFRleHQgZGVzY3JpcHRpb24gZm9yIHRoZSBjaGlsZC1ib3VudHkuPHByb3Bvc2VfY3VyYXRvchABQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVlcQEBMEJhbGFuY2VPZjxUPgABPKBQcm9wb3NlIGN1cmF0b3IgZm9yIGZ1bmRlZCBjaGlsZC1ib3VudHkuAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgY3VyYXRvciBvZiBwYXJlbnQgYm91bnR5LgARAVBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvFHdvcmsuAA0BQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gIkFkZGVkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZAUBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJDdXJhdG9yUHJvcG9zZWQiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS60LSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgY2hpbGQtYm91bnR5IGN1cmF0b3Iu7C0gYGZlZWA6IHBheW1lbnQgZmVlIHRvIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZvciBleGVjdXRpb24uOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAAky0QWNjZXB0IHRoZSBjdXJhdG9yIHJvbGUgZm9yIHRoZSBjaGlsZC1ib3VudHkuAPRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzNGNoaWxkLWJvdW50eS4A7EEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uiHN1Y2Nlc3NmdWwgcGF5b3V0IG9yIGNhbmNlbGxhdGlvbi4A+EZlZSBmb3IgY3VyYXRvciBpcyBkZWR1Y3RlZCBmcm9tIGN1cmF0b3IgZmVlIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQ3VyYXRvclByb3Bvc2VkIiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlCQFjYWxsLiBBbmQgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJBY3RpdmUiIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAOIlFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGNoaWxkLWJvdW50eS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgY2FuIGJlIGVpdGhlciBgUmVqZWN0T3JpZ2luYCwgb3LcdGhlIGN1cmF0b3Igb2YgdGhlIHBhcmVudCBib3VudHksIG9yIGFueSBzaWduZWQgb3JpZ2luLgD4Rm9yIHRoZSBvcmlnaW4gb3RoZXIgdGhhbiBUOjpSZWplY3RPcmlnaW4gYW5kIHRoZSBjaGlsZC1ib3VudHkBAWN1cmF0b3IsIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNhbGwgdG8JAXdvcmsuIFdlIGFsbG93IGNoaWxkLWJvdW50eSBjdXJhdG9yIGFuZCBUOjpSZWplY3RPcmlnaW4gdG8gZXhlY3V0Zch0aGlzIGNhbGwgaXJyZXNwZWN0aXZlIG9mIHRoZSBwYXJlbnQgYm91bnR5IHN0YXRlLgDcSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZQUBcGFyZW50IGJvdW50eSBjdXJhdG9yLCB3ZSBhc3N1bWUgdGhhdCB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMNAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4ABQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbgkBdGhhdCB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iLCBhbmQgYXJlIHdpbGxpbmdseSBnaXZpbmcgdXAuCQFXZSBjb3VsZCBzbGFzaCB0aGUgZGVwb3NpdCwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byB1bnJlc2VydmURAXRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmOGl0IGlzIGFidXNlZC4pAAUBRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmZiB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgaXMJASJpbmFjdGl2ZSIuIEV4cGlyeSB1cGRhdGUgZHVlIG9mIHBhcmVudCBib3VudHkgaXMgdXNlZCB0byBlc3RpbWF0ZZxpbmFjdGl2ZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4ADQFUaGlzIGFsbG93cyBhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY2hpbGQtYm91bnR5CQFjdXJhdG9yIGlzIG5vdCBkb2luZyB0aGVpciBkdWUgZGlsaWdlbmNlLCBhbmQgd2Ugc2hvdWxkIHBpY2sgYSBuZXf4b25lLiBJbiB0aGlzIGNhc2UgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGRlcG9zaXQgaXMgc2xhc2hlZC4AAQFTdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gQWRkZWQgc3RhdGUgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5Lkhhd2FyZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABESQQXdhcmQgY2hpbGQtYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkuAPhUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kcyBhZnRlciBhIGRlbGF5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhcmVudCBjdXJhdG9yIG9ydGN1cmF0b3Igb2YgdGhpcyBjaGlsZC1ib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ACQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZSBjYWxsLiBBbmQRAXN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiUGVuZGluZ1BheW91dCIgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LpQtIGBiZW5lZmljaWFyeWA6IEJlbmVmaWNpYXJ5IGFjY291bnQuSGNsYWltX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAVABQFDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBjaGlsZC1ib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG1heSBiZSBhbnkgc2lnbmVkIG9yaWdpbi4ABQFDYWxsIHdvcmtzIGluZGVwZW5kZW50IG9mIHBhcmVudCBib3VudHkgc3RhdGUsIE5vIG5lZWQgZm9yIHBhcmVudHRib3VudHkgdG8gYmUgaW4gYWN0aXZlIHN0YXRlLgARAVRoZSBCZW5lZmljaWFyeSBpcyBwYWlkIG91dCB3aXRoIGFncmVlZCBib3VudHkgdmFsdWUuIEN1cmF0b3IgZmVlIGlzlHBhaWQgJiBjdXJhdG9yIGRlcG9zaXQgaXMgdW5yZXNlcnZlZC4ABQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiUGVuZGluZ1BheW91dCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZfxjYWxsLiBBbmQgaW5zdGFuY2Ugb2YgY2hpbGQtYm91bnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhdGUgb25sc3VjY2Vzc2Z1bCBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkhjbG9zZV9jaGlsZF9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAAGWBEBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGNoaWxkLWJvdW50eS4gQ2hpbGQtYm91bnR5IGFjY291bnQgZnVuZHMJAWFyZSB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgYm91bnR5IGFjY291bnQuIFRoZSBjaGlsZC1ib3VudHkgY3VyYXRvcphkZXBvc2l0IG1heSBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlciBwYXJlbnQgY3VyYXRvciBvckhgVDo6UmVqZWN0T3JpZ2luYC4A8ElmIHRoZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgYEFjdGl2ZWAsIGN1cmF0b3IgZGVwb3NpdCBpcyx1bnJlc2VydmVkLgD0SWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgUGVuZGluZ1BheW91dGAsIGNhbGwgZmFpbHMgJnhyZXR1cm5zIGBQZW5kaW5nUGF5b3V0YCBlcnJvci4ADQFGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGlu8GFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8gd29yay4gRm9yIG9yaWdpbpBUOjpSZWplY3RPcmlnaW4gZXhlY3V0aW9uIGlzIGZvcmNlZC4AAQFJbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjEFDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQQQ2FsbAQEVAABDBhjcmVhdGUIAShhc3NldF9raW5k9QQBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZTUFASRGaXhlZFUxMjgAABANAUluaXRpYWxpemUgYSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHVwZGF0ZQgBKGFzc2V0X2tpbmT1BAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlNQUBJEZpeGVkVTEyOAABEAUBVXBkYXRlIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHJlbW92ZQQBKGFzc2V0X2tpbmT1BAFEQm94PFQ6OkFzc2V0S2luZD4AAhAlAVJlbW92ZSBhbiBleGlzdGluZyBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUFDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAA1AQEQdTEyOAAAOQUMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABKCxmdW5kX2JvdW50eRABKGFzc2V0X2tpbmT1BAFEQm94PFQ6OkFzc2V0S2luZD4AARR2YWx1ZXEBAShUOjpCYWxhbmNlAAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbWV0YWRhdGE8ARxUOjpIYXNoAABoKQFGdW5kIGEgbmV3IGJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZbhmdW5kaW5nIHNvdXJjZSB0byB0aGUgYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AHQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdEEBdGhlIGJvdW50eSB2YWx1ZSBjb252ZXJ0ZWQgdG8gbmF0aXZlIGJhbGFuY2UgdXNpbmcgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS41AVRoZSBjb252ZXJ0ZWQgbmF0aXZlIGFtb3VudCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgbWF4aW11bSBzcGVuZGFibGUgYW1vdW50kHJldHVybmVkIGJ5IFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdLgAoIyMgRGV0YWlscwAhAS0gVGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gZnVuZCB0aGUgYm91bnR5LlkBLSBUaGUgYm91bnR5IGB2YWx1ZWAgKGluIGFzc2V0IGJhbGFuY2UpIGlzIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdmFsaWRhdGlvbi4pAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGJvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlAQEgIGBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVycxkBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgZnVuZGVkLswtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eS6cLSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgYm91bnR5IGN1cmF0b3IuLQEtIGBtZXRhZGF0YWA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZSB3aXRoIGJvdW50eSBtZXRhZGF0YS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNyZWF0ZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuRGZ1bmRfY2hpbGRfYm91bnR5EAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQABIG1ldGFkYXRhPAEcVDo6SGFzaAABHGN1cmF0b3JVBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABYF0BRnVuZCBhIG5ldyBjaGlsZC1ib3VudHkgd2l0aCBhIHByb3Bvc2VkIGN1cmF0b3IsIGluaXRpYXRpbmcgdGhlIHBheW1lbnQgZnJvbSB0aGUgcGFyZW50sGJvdW50eSB0byB0aGUgY2hpbGQtYm91bnR5IGFjY291bnQvbG9jYXRpb24uAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwYXJlbnQgY3VyYXRvci4AKCMjIERldGFpbHMARQEtIElmIGBjdXJhdG9yYCBpcyBub3QgcHJvdmlkZWQsIHRoZSBjaGlsZC1ib3VudHkgd2lsbCBkZWZhdWx0IHRvIHVzaW5nIHRoZSBwYXJlbnQ1ASAgY3VyYXRvciwgYWxsb3dpbmcgdGhlIHBhcmVudCBjdXJhdG9yIHRvIGltbWVkaWF0ZWx5IGNhbGwgYGNoZWNrX3N0YXR1c2AgYW5ksCAgYGF3YXJkX2JvdW50eWAgdG8gcGF5b3V0IHRoZSBjaGlsZC1ib3VudHkuRQEtIEluIGNhc2Ugb2YgYSBmdW5kaW5nIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzTQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLswtIGB2YWx1ZWA6IFRoZSBwYXltZW50IGFtb3VudCBvZiB0aGlzIGNoaWxkLWJvdW50eS5FAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggY2hpbGQtYm91bnR5IG1ldGFkYXRhLrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci4AJCMjIEV2ZW50cwAZAUVtaXRzIFtgRXZlbnQ6OkNoaWxkQm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC48cHJvcG9zZV9jdXJhdG9yDAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACVDEBUHJvcG9zZSBhIG5ldyBjdXJhdG9yIGZvciBhIGNoaWxkLS9ib3VudHkgYWZ0ZXIgdGhlIHByZXZpb3VzIHdhcyB1bmFzc2lnbmVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEEBTXVzdCBiZSBzaWduZWQgYnkgYFQ6OlNwZW5kT3JpZ2luYCBmb3IgYSBib3VudHksIG9yIGJ5IHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3JMZm9yIGEgY2hpbGQtYm91bnR5LgAoIyMgRGV0YWlscwD0LSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQ3VyYXRvclVuYXNzaWduZWRgIHN0YXRlLkUBLSBGb3IgYSBib3VudHksIHRoZSBgU3BlbmRPcmlnaW5gIG11c3QgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHByb3Bvc2UgdGhlKCAgY3VyYXRvci4AOCMjIyBQYXJhbWV0ZXJzmC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS7MLSBgY3VyYXRvcmA6IEFjY291bnQgdG8gYmUgcHJvcG9zZWQgYXMgdGhlIGN1cmF0b3IuACQjIyBFdmVudHMAvEVtaXRzIFtgRXZlbnQ6OkN1cmF0b3JQcm9wb3NlZGBdIGlmIHN1Y2Nlc3NmdWwuOGFjY2VwdF9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgADTLBBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAJxNdXN0IGJlIHNpZ25lZCBieSB0aGUgcHJvcG9zZWQgY3VyYXRvci4AKCMjIERldGFpbHMAyC0gVGhlIGNoaWxkLS9ib3VudHkgbXVzdCBiZSBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUu8C0gVGhlIGN1cmF0b3IgbXVzdCBhY2NlcHQgdGhlIHJvbGUgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLkkBLSBBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBjdXJhdG9yIGFuZCByZWZ1bmRlZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgc3VjY2Vzc2Z1bC5AdW5hc3NpZ25fY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ABGSYVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gLCBvciBieSB0aGUgcGFyZW50IGN1cmF0b3IgaW4gdGhlIGNhc2VZASAgb2YgYSBjaGlsZCBib3VudHksIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzIG1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsqCAgd2Ugd2lsbCBzbGFzaCB0aGUgY3VyYXRvciB3aGVuIHBvc3NpYmxlLl0BLSBJZiB0aGUgb3JpZ2luIGlzIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IsIHdlIHRha2UgdGhpcyBhcyBhIHNpZ24gdGhleSBhcmUgdW5hYmxlIHRvUQEgIGRvIHRoZWlyIGpvYiBhbmQgdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3dZASAgdGhlbSB0byByZWNvdmVyIHRoZWlyIGRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmQCAgaXQgaXMgYWJ1c2VkKS49AS0gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYEN1cmF0b3JVbmFzc2lnbmVkYC4gVG9FASAgcmVhY3RpdmF0ZSB0aGUgYm91bnR5LCBhIG5ldyBjdXJhdG9yIG11c3QgYmUgcHJvcG9zZWQgYW5kIG11c3QgYWNjZXB0IHRoZSByb2xlLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwDERW1pdHMgW2BFdmVudDo6Q3VyYXRvclVuYXNzaWduZWRgXSBpZiBzdWNjZXNzZnVsLjBhd2FyZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnn5BAFkQmVuZWZpY2lhcnlMb29rdXBPZjxULCBJPgAFYOxBd2FyZHMgdGhlIGNoaWxkLS9ib3VudHkgdG8gYSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLB0BaW5pdGlhdGluZyB0aGUgcGF5b3V0IHBheW1lbnRzIHRvIGJvdGggdGhlIGJlbmVmaWNpYXJ5IGFuZCB0aGUgY3VyYXRvci4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS49AS0gaWYgYXdhcmRpbmcgYSBwYXJlbnQgYm91bnR5IGl0IG11c3Qgbm90IGhhdmUgYWN0aXZlIG9yIGZ1bmRlZCBjaGlsZCBib3VudGllcy5ZAS0gSW5pdGlhdGVzIHBheW91dCBwYXltZW50IGZyb20gdGhlIGNoaWxkLS9ib3VudHkgdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uJQEtIElmIHN1Y2Nlc3NmdWwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgdG8gYFBheW91dEF0dGVtcHRlZGAuMQEtIEluIGNhc2Ugb2YgYSBwYXlvdXQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRo+GBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgkBLSBgYmVuZWZpY2lhcnlgOiBBY2NvdW50L2xvY2F0aW9uIHRvIGJlIGF3YXJkZWQgdGhlIGNoaWxkLS9ib3VudHkuACQjIyBFdmVudHMABQFFbWl0cyBbYEV2ZW50OjpCb3VudHlBd2FyZGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjbG9zZV9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAZcYQFDYW5jZWwgYW4gYWN0aXZlIGNoaWxkLS9ib3VudHkuIEEgcGF5bWVudCB0byBzZW5kIGFsbCB0aGUgZnVuZHMgdG8gdGhlIGZ1bmRpbmcgc291cmNlIGlzMGluaXRpYWxpemVkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBwYXJlbnQgYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAD0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEZ1bmRlZGAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgYEFjdGl2ZWAgc3RhdGUsIGEgcmVmdW5kIHBheW1lbnQgaXMgaW5pdGlhdGVkIGFuZCB0aGURASAgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJhdG9yIGFjY291bnQvbG9jYXRpb24uQQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBmdW5kaW5nIG9yIHBheW91dCBwaGFzZSwgaXQgY2Fubm90IGJlIGNhbmNlbGVkLkEBLSBJbiBjYXNlIG9mIGEgcmVmdW5kIGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGX4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMACQFFbWl0cyBbYEV2ZW50OjpCb3VudHlDYW5jZWxlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2hlY2tfc3RhdHVzCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAHZNxDaGVjayBhbmQgdXBkYXRlIHRoZSBwYXltZW50IHN0YXR1cyBvZiBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBVAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBmdW5kaW5nIHBheW1lbnQNASAgaGFzIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGJvdW50eSBzdGF0dXMgYmVjb21lcyBgRnVuZGVkYC5dAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIHJlZnVuZCBwYXltZW50IGhhcxkBICBzdWNjZWVkZWQuIElmIHN1Y2Nlc3NmdWwsIHRoZSBjaGlsZC0vYm91bnR5IGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFBheW91dEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAF0BRW1pdHMgW2BFdmVudDo6Qm91bnR5QmVjYW1lQWN0aXZlYF0gaWYgdGhlIGNoaWxkL2JvdW50eSBzdGF0dXMgdHJhbnNpdGlvbnMgdG8gYEFjdGl2ZWAuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlSZWZ1bmRQcm9jZXNzZWRgXSBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzIHN1Y2NlZWQuJQFFbWl0cyBbYEV2ZW50OjpCb3VudHlQYXlvdXRQcm9jZXNzZWRgXSBpZiB0aGUgcGF5b3V0IHBheW1lbnQgaGFzIHN1Y2NlZWQuVQFFbWl0cyBbYEV2ZW50OjpQYXltZW50RmFpbGVkYF0gaWYgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvdXIgcGF5bWVudCBwYXltZW50IGhhcyBmYWlsZWQuNHJldHJ5X3BheW1lbnQIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAhYtFJldHJ5IHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAYQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgRnVuZGluZ0F0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIGZ1bmRpbmcgcGF5bWVudCBmcm9t0CAgZnVuZGluZyBzb3VyY2UgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbi5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBSZWZ1bmRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSByZWZ1bmQgcGF5bWVudCBmcm9t7CAgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbiB0byB0aGUgZnVuZGluZyBzb3VyY2UuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgcGF5b3V0IHBheW1lbnQgZnJvbSUBICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwA1AUVtaXRzIFtgRXZlbnQ6OlBhaWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG9yIHBheW91dCBwYXltZW50IGhhcyBpbml0aWF0ZWQuOGluY3JlYXNlX3ZhbHVlCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACXjMSW5jcmVhc2UgdGhlIHZhbHVlIG9mIGFuIGFjdGl2ZSBib3VudHkgYnkgYGFtb3VudGAuAEgjIyBEaXNwYXRjaCBPcmlnaW4AlE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMArC0gVGhlIGJvdW50eSBtdXN0IGJlIGluIHRoZSBgQWN0aXZlYCBzdGF0ZS5NAS0gUmFpc2VzIHRoZSByZWNvcmRlZCBgdmFsdWVgIGJ5IGBhbW91bnRgLiBUaGlzIGlzIHVzZWQgdG8gcmVnaXN0ZXIgZnVuZHMgdGhhdCB3ZXJlXQEgIHRyYW5zZmVycmVkIGludG8gdGhlIGJvdW50eSBhY2NvdW50IG91dC1vZi1iYW5kIChlLmcuIHJlY3VycmluZyBleHRlcm5hbCB0b3AtdXBzKSwgc29VASAgdGhleSBiZWNvbWUgYXZhaWxhYmxlIHRvIGF3YXJkIG9yIHRvIGFsbG9jYXRlIHRvIGNoaWxkIGJvdW50aWVzLiBJdCBtdXN0IGJlIGdyZWF0ZXIkICB0aGFuIDAuVQEtIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgcmUtZXZhbHVhdGVkIGZvciB0aGUgbmV3IHZhbHVlIGFuZCBhbnkgYWRkaXRpb25hbCBkZXBvc2l0IGlzdCAgY29sbGVjdGVkIGZyb20gdGhlIGN1cmF0b3IuUQEtIFRoZSB2YWx1ZSBjYW4gb25seSBiZSBpbmNyZWFzZWQsIG5ldmVyIGRlY3JlYXNlZCwgc28gdGhlIGludmFyaWFudCB0aGF0IHRoZSBzdW0gb2YJASAgY2hpbGQtYm91bnR5IHZhbHVlcyBuZXZlciBleGNlZWRzIHRoZSBwYXJlbnQgdmFsdWUgaXMgcHJlc2VydmVkLkUBLSBUaGlzIGNhbGwgZG9lcyAqKm5vdCoqIGNoZWNrIHRoYXQgdGhlIGJvdW50eSBhY2NvdW50IGhvbGRzIGBuZXdfdmFsdWVgOyBpdCBvbmx5TQEgIHVwZGF0ZXMgdGhlIHJlY29yZGVkIHZhbHVlLiBQYXlvdXRzIHN0YXkgYm91bmRlZCBieSB0aGUgYWNjb3VudCdzIHJlYWwgYmFsYW5jZSBhdFUBICBzZXR0bGVtZW50LCBzbyBpbmNyZWFzaW5nIHRoZSB2YWx1ZSBiZXlvbmQgdGhlIGF2YWlsYWJsZSBmdW5kcyBzaW1wbHkgbWFrZXMgYSBsYXRlcsggIHBheW91dCBmYWlsIOKAlCBubyBmdW5kcyBhcmUgbW92ZWQgYnkgdGhpcyBjYWxsLvgtIE9ubHkgYSBwYXJlbnQgYm91bnR5J3MgdmFsdWUgY2FuIGJlIGluY3JlYXNlZCB2aWEgdGhpcyBjYWxsLgA4IyMjIFBhcmFtZXRlcnMNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiB0aGUgYm91bnR5IHdob3NlIHZhbHVlIGlzIGluY3JlYXNlZC7ILSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBhZGQgdG8gdGhlIGJvdW50eSB2YWx1ZS4AJCMjIEV2ZW50cwDQRW1pdHMgW2BFdmVudDo6Qm91bnR5VmFsdWVJbmNyZWFzZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49BQwocGFsbGV0X2RhcBhwYWxsZXQQQ2FsbAQEVAABBFRzZXRfYnVkZ2V0X2FsbG9jYXRpb24EATxuZXdfYWxsb2NhdGlvbnNBBQFMQnVkZ2V0QWxsb2NhdGlvbk1hcAAAEHhTZXQgdGhlIGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4AOQFFYWNoIGtleSBtdXN0IG1hdGNoIGEgcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50YC4gVGhlIHN1bSBvZiBhbGwgcGVyY2VudGFnZXMlAW11c3QgYmUgZXhhY3RseSAxMDAlLiBSZWNpcGllbnRzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWFwIHJlY2VpdmUgbm90aGluZy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuQQUMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAd0DBFYBRQUEUwAABABJBQE4QlRyZWVNYXA8SywgVj4AAEUFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAEkFBCBCVHJlZU1hcAgESwHdAwRWAUUFAAQATQUAAABNBQAAAlEFAFEFAAAECN0DRQUAVQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnWQUBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzXQUBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlcjgBDHUzMgABMHdpdG5lc3NfdGFza2EFAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5czQBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZTgBDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290GAEcVmVjPHU4PgABKGNoaWxkX2tleXM0ATBWZWM8VmVjPHU4Pj4AASh0b3RhbF9zaXplOAEMdTMyAAMYEQFNaWdyYXRlIHRoZSBsaXN0IG9mIGNoaWxkIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgANAUFsbCBvZiB0aGUgZ2l2ZW4gY2hpbGQga2V5cyBtdXN0IGJlIHByZXNlbnQgdW5kZXIgb25lIGBjaGlsZF9yb290YC4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlRzZXRfc2lnbmVkX21heF9saW1pdHMEARhsaW1pdHNdBQE8TWlncmF0aW9uTGltaXRzAAQEuFNldCB0aGUgbWF4aW11bSBsaW1pdCBvZiB0aGUgc2lnbmVkIG1pZ3JhdGlvbi5IZm9yY2Vfc2V0X3Byb2dyZXNzCAEwcHJvZ3Jlc3NfdG9wZQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZGUFATRQcm9ncmVzc09mPFQ+AAUkyEZvcmNlZnVsbHkgc2V0IHRoZSBwcm9ncmVzcyB0aGUgcnVubmluZyBtaWdyYXRpb24uAF0BVGhpcyBpcyBvbmx5IHVzZWZ1bCBpbiBvbmUgY2FzZTogdGhlIG5leHQga2V5IHRvIG1pZ3JhdGUgaXMgdG9vIGJpZyB0byBiZSBtaWdyYXRlZCB3aXRoVQFhIHNpZ25lZCBhY2NvdW50LCBpbiBhIHBhcmFjaGFpbiBjb250ZXh0LCBhbmQgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC4gQSByZWFzb25hYmxlYQFleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgYDpjb2RlOmAsIHdoaWNoIGlzIGJvdGggdmVyeSBleHBlbnNpdmUgdG8gbWlncmF0ZSwgYW5kIGNvbW1vbmx5pHVzZWQsIHNvIHByb2JhYmx5IGl0IGlzIGFscmVhZHkgbWlncmF0ZWQuAF0BSW4gY2FzZSB5b3UgbWVzcyB0aGluZ3MgdXAsIHlvdSBjYW4gYWxzbywgaW4gcHJpbmNpcGxlLCB1c2UgdGhpcyB0byByZXNldCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlkFBBhPcHRpb24EBFQBXQUBCBBOb25lAAAAEFNvbWUEAF0FAAABAABdBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDxNaWdyYXRpb25MaW1pdHMAAAgBEHNpemU4AQx1MzIAARBpdGVtOAEMdTMyAABhBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDRNaWdyYXRpb25UYXNrBARUAAAUATBwcm9ncmVzc190b3BlBQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkZQUBNFByb2dyZXNzT2Y8VD4AARBzaXplOAEMdTMyAAEkdG9wX2l0ZW1zOAEMdTMyAAEsY2hpbGRfaXRlbXM4AQx1MzIAAGUFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0IFByb2dyZXNzBCRNYXhLZXlMZW4AAQwcVG9TdGFydAAAABxMYXN0S2V5BABpBQFkQm91bmRlZFZlYzx1OCwgTWF4S2V5TGVuPgABACBDb21wbGV0ZQACAABpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAG0FDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50cQEBMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYXEFAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHNxAQEwQmFsYW5jZU9mPFQ+AAN8RQFVbmJvbmQgdXAgdG8gYHVuYm9uZGluZ19wb2ludHNgIG9mIHRoZSBgbWVtYmVyX2FjY291bnRgJ3MgZnVuZHMgZnJvbSB0aGUgcG9vbC4gSXRFAWltcGxpY2l0bHkgY29sbGVjdHMgdGhlIHJld2FyZHMgb25lIGxhc3QgdGltZSwgc2luY2Ugbm90IGRvaW5nIHNvIHdvdWxkIG1lYW4gc29tZWxyZXdhcmRzIHdvdWxkIGJlIGZvcmZlaXRlZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaC4AXQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuIFRoaXMgaXMgcmVmZXJlZWQgdG8wICBhcyBhIGtpY2su9CogVGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgdGhlIG1lbWJlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIHBvb2wgaXMgZGVzdHJveWluZywgdGhlIG1lbWJlciBpcyB0aGUgZGVwb3NpdG9yIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgARASMjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaCAoaS5lLiB0aGUgY2FsbGVyIGlzIGFsc28gdGhlSGBtZW1iZXJfYWNjb3VudGApOgCIKiBUaGUgY2FsbGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgY2FsbGVyIGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABgjIE5vdGUAHQFJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byB1bmJvbmQgd2l0aCB0aGUgcG9vbCBhY2NvdW50LFEBW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF0gY2FuIGJlIGNhbGxlZCB0byB0cnkgYW5kIG1pbmltaXplIHVubG9ja2luZyBjaHVua3MuWQFUaGUgW2BTdGFraW5nSW50ZXJmYWNlOjp1bmJvbmRgXSB3aWxsIGltcGxpY2l0bHkgY2FsbCBbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXVUBdG8gdHJ5IHRvIGZyZWUgY2h1bmtzIGlmIG5lY2Vzc2FyeSAoaWUuIGlmIHVuYm91bmQgd2FzIGNhbGxlZCBhbmQgbm8gdW5sb2NraW5nIGNodW5rc2EBYXJlIGF2YWlsYWJsZSkuIEhvd2V2ZXIsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsZWFzZSB0aGUgY3VycmVudCB1bmxvY2tpbmcgY2h1bmtzLF0BaW4gd2hpY2ggY2FzZSwgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwgd2lsbCBsaWtlbHkgYmUgdGhlIGBOb01vcmVDaHVua3NgIGVycm9yIGZyb20gdGhlPHN0YWtpbmcgc3lzdGVtLlhwb29sX3dpdGhkcmF3X3VuYm9uZGVkCAEccG9vbF9pZDgBGFBvb2xJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAEGFUBQ2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIGZvciB0aGUgcG9vbHMgYWNjb3VudC4gVGhpcyBjYWxsIGNhbiBiZSBtYWRlIGJ5IGFueSBhY2NvdW50LgBBAVRoaXMgaXMgdXNlZnVsIGlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIGNhbGwgYHVuYm9uZGAsIGFuZCBzb21lYQFjYW4gYmUgY2xlYXJlZCBieSB3aXRoZHJhd2luZy4gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MsIHRoZSB1c2VyUQF3b3VsZCBwcm9iYWJseSBzZWUgYW4gZXJyb3IgbGlrZSBgTm9Nb3JlQ2h1bmtzYCBlbWl0dGVkIGZyb20gdGhlIHN0YWtpbmcgc3lzdGVtIHdoZW5cdGhleSBhdHRlbXB0IHRvIHVuYm9uZC5Ed2l0aGRyYXdfdW5ib25kZWQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAVYVQFXaXRoZHJhdyB1bmJvbmRlZCBmdW5kcyBmcm9tIGBtZW1iZXJfYWNjb3VudGAuIElmIG5vIGJvbmRlZCBmdW5kcyBjYW4gYmUgdW5ib25kZWQsIGFuSGVycm9yIGlzIHJldHVybmVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCoIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoAAkBKiBUaGUgcG9vbCBpcyBpbiBkZXN0cm95IG1vZGUgYW5kIHRoZSB0YXJnZXQgaXMgbm90IHRoZSBkZXBvc2l0b3IuMQEqIFRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciBhbmQgdGhleSBhcmUgdGhlIG9ubHkgbWVtYmVyIGluIHRoZSBzdWIgcG9vbHMuDQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuAJgjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaADoKiBUaGUgY2FsbGVyIGlzIHRoZSB0YXJnZXQgYW5kIHRoZXkgYXJlIG5vdCB0aGUgZGVwb3NpdG9yLgAYIyBOb3RlAPQtIElmIHRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQuYQEtIElmIHRoZSBwb29sIGhhcyBhbnkgcGVuZGluZyBzbGFzaCwgd2UgYWxzbyB0cnkgdG8gc2xhc2ggdGhlIG1lbWJlciBiZWZvcmUgbGV0dGluZyB0aGVtXQF3aXRoZHJhdy4gVGhpcyBjYWxjdWxhdGlvbiBhZGRzIHNvbWUgd2VpZ2h0IG92ZXJoZWFkIGFuZCBpcyBvbmx5IGRlZmVuc2l2ZS4gSW4gcmVhbGl0eSxVAXBvb2wgc2xhc2hlcyBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGFwcGxpZWQgdmlhIHBlcm1pc3Npb25sZXNzIFtgQ2FsbDo6YXBwbHlfc2xhc2hgXS4YY3JlYXRlEAEYYW1vdW50cQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAZEdENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wuACwjIEFyZ3VtZW50cwBVASogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIGZ1bmRzIHRvIGRlbGVnYXRlIHRvIHRoZSBwb29sLiBUaGlzIGFsc28gYWN0cyBvZiBhIHNvcnQgb2ZNASAgZGVwb3NpdCBzaW5jZSB0aGUgcG9vbHMgY3JlYXRvciBjYW5ub3QgZnVsbHkgdW5ib25kIGZ1bmRzIHVudGlsIHRoZSBwb29sIGlzIGJlaW5nMCAgZGVzdHJveWVkLlEBKiBgaW5kZXhgIC0gQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBmb3IgY3JlYXRpbmcgdGhlIGFjY291bnQuIExpa2VseSBvbmx5IHVzZWZ1bCB3aGVuwCAgY3JlYXRpbmcgbXVsdGlwbGUgcG9vbHMgaW4gdGhlIHNhbWUgZXh0cmluc2ljLtQqIGByb290YCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyBbYFBvb2xSb2xlczo6cm9vdGBdLg0BKiBgbm9taW5hdG9yYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6Om5vbWluYXRvcmBdLvwqIGBib3VuY2VyYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6OmJvdW5jZXJgXS4AGCMgTm90ZQBhAUluIGFkZGl0aW9uIHRvIGBhbW91bnRgLCB0aGUgY2FsbGVyIHdpbGwgdHJhbnNmZXIgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQ7IHNvIHRoZSBjYWxsZXINAW5lZWRzIGF0IGhhdmUgYXQgbGVhc3QgYGFtb3VudCArIGV4aXN0ZW50aWFsX2RlcG9zaXRgIHRyYW5zZmVyYWJsZS5MY3JlYXRlX3dpdGhfcG9vbF9pZBQBGGFtb3VudHEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc3kBAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgAYIyBOb3RlAFkBSW4gYWRkaXRpb24gdG8gYSBgcm9vdGAgb3IgYG5vbWluYXRvcmAgcm9sZSBvZiBgb3JpZ2luYCwgdGhlIHBvb2wncyBkZXBvc2l0b3IgbmVlZHMgdG8NAWhhdmUgYXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZDgBGFBvb2xJZAABFHN0YXRldQUBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkOAEYUG9vbElkAAEgbWV0YWRhdGEYARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZHkFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25keQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHN9BQE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJzfQUBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbH0FATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9ugQUBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZDgBGFBvb2xJZAABIG5ld19yb290hQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9yhQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcoUFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQ4ARhQb29sSWQADURwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoOlUBKiBXaGVuIHBvb2wgZGVwb3NpdG9yIGhhcyBsZXNzIHRoYW4gYE1pbk5vbWluYXRvckJvbmRgIHN0YWtlZCwgb3RoZXJ3aXNlIHBvb2wgbWVtYmVyc1wgIGFyZSB1bmFibGUgdG8gdW5ib25kLgCcIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2g6tCogVGhlIGNhbGxlciBpcyB0aGUgcG9vbCdzIG5vbWluYXRvciBvciByb290LkBib25kX2V4dHJhX290aGVyCAEYbWVtYmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYXEFAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9uiQUBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgQBMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABOG5ld19jb21taXNzaW9ujQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbkUFARxQZXJiaWxsABIUlFNldCB0aGUgbWF4aW11bSBjb21taXNzaW9uIG9mIGEgcG9vbC4AOQEtIEluaXRpYWwgbWF4IGNhbiBiZSBzZXQgdG8gYW55IGBQZXJiaWxsYCwgYW5kIG9ubHkgc21hbGxlciB2YWx1ZXMgdGhlcmVhZnRlci41AS0gQ3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgbG93ZXJlZCBpbiB0aGUgZXZlbnQgaXQgaXMgaGlnaGVyIHRoYW4gYSBuZXcgbWF4NCAgY29tbWlzc2lvbi5oc2V0X2NvbW1pc3Npb25fY2hhbmdlX3JhdGUIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGWVBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+ABMQqFNldCB0aGUgY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBmb3IgYSBwb29sLgA9AUluaXRpYWwgY2hhbmdlIHJhdGUgaXMgbm90IGJvdW5kZWQsIHdoZXJlYXMgc3Vic2VxdWVudCB1cGRhdGVzIGNhbiBvbmx5IGJlIG1vcmV0cmVzdHJpY3RpdmUgdGhhbiB0aGUgY3VycmVudC5AY2xhaW1fY29tbWlzc2lvbgQBHHBvb2xfaWQ4ARhQb29sSWQAFEBkQ2xhaW0gcGVuZGluZyBjb21taXNzaW9uLgA9AVRoZSBgcm9vdGAgcm9sZSBvZiB0aGUgcG9vbCBpcyBfYWx3YXlzXyBhbGxvd2VkIHRvIGNsYWltIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AVQFJZiB0aGUgcG9vbCBoYXMgc2V0IGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uOjpQZXJtaXNzaW9ubGVzc2AsIHRoZW4gYW55IGFjY291bnQgY2Fu2HRyaWdnZXIgdGhlIHByb2Nlc3Mgb2YgY2xhaW1pbmcgdGhlIHBvb2wncyBjb21taXNzaW9uLgBBAUlmIHRoZSBwb29sIGhhcyBzZXQgaXRzIGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uYCB0byBgQWNjb3VudChhY2MpYCwgdGhlbiBvbmx5IGFjY291bnRzMCogYGFjY2AsIGFuZGQqIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50ALhtYXkgY2FsbCB0aGlzIGV4dHJpbnNpYyBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAC0BUGVuZGluZyBjb21taXNzaW9ucyBhcmUgcGFpZCBvdXQgYW5kIGFkZGVkIHRvIHRoZSB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb24uuFRoZSB0b3RhbCBwZW5kaW5nIGNvbW1pc3Npb24gaXMgcmVzZXQgdG8gemVyby5MYWRqdXN0X3Bvb2xfZGVwb3NpdAQBHHBvb2xfaWQ4ARhQb29sSWQAFRzsVG9wIHVwIHRoZSBkZWZpY2l0IG9yIHdpdGhkcmF3IHRoZSBleGNlc3MgRUQgZnJvbSB0aGUgcG9vbC4AUQFXaGVuIGEgcG9vbCBpcyBjcmVhdGVkLCB0aGUgcG9vbCBkZXBvc2l0b3IgdHJhbnNmZXJzIEVEIHRvIHRoZSByZXdhcmQgYWNjb3VudCBvZiB0aGVVAXBvb2wuIEVEIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFuZCBvdmVyIHRpbWUsIHRoZSBkZXBvc2l0IGluIHRoZSByZXdhcmQgYWNjb3VudCBtYXkgYmVRAWluc3VmZmljaWVudCB0byBjb3ZlciB0aGUgRUQgZGVmaWNpdCBvZiB0aGUgcG9vbCBvciB2aWNlLXZlcnNhIHdoZXJlIHRoZXJlIGlzIGV4Y2VzczEBZGVwb3NpdCB0byB0aGUgcG9vbC4gVGhpcyBjYWxsIGFsbG93cyBhbnlvbmUgdG8gYWRqdXN0IHRoZSBFRCBkZXBvc2l0IG9mIHRoZfRwb29sIGJ5IGVpdGhlciB0b3BwaW5nIHVwIHRoZSBkZWZpY2l0IG9yIGNsYWltaW5nIHRoZSBleGNlc3MufHNldF9jb21taXNzaW9uX2NsYWltX3Blcm1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbpkFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAWEMxTZXQgb3IgcmVtb3ZlIGEgcG9vbCdzIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbi4AYQFEZXRlcm1pbmVzIHdobyBjYW4gY2xhaW0gdGhlIHBvb2wncyBwZW5kaW5nIGNvbW1pc3Npb24uIE9ubHkgdGhlIGBSb290YCByb2xlIG9mIHRoZSBwb29syGlzIGFibGUgdG8gY29uZmlndXJlIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbnMuLGFwcGx5X3NsYXNoBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXJIhBcHBseSBhIHBlbmRpbmcgc2xhc2ggb24gYSBtZW1iZXIuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBdAVRoZSBwZW5kaW5nIHNsYXNoIGFtb3VudCBvZiB0aGUgbWVtYmVyIG11c3QgYmUgZXF1YWwgb3IgbW9yZSB0aGFuIGBFeGlzdGVudGlhbERlcG9zaXRgLlEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgZXhlY3V0aW9uSQFpcyBzdWNjZXNzZnVsLCBmZWUgaXMgcmVmdW5kZWQgYW5kIGNhbGxlciBtYXkgYmUgcmV3YXJkZWQgd2l0aCBhIHBhcnQgb2YgdGhlIHNsYXNoDQFiYXNlZCBvbiB0aGUgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGNvbmZpZ3VyYXRpb24uSG1pZ3JhdGVfZGVsZWdhdGlvbgQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkOAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBNQEBCCxGcmVlQmFsYW5jZQQANQEBHEJhbGFuY2UAAAAcUmV3YXJkcwABAAB1BQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFN0YXRlAAEMEE9wZW4AAAAcQmxvY2tlZAABAChEZXN0cm95aW5nAAIAAHkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE1AQEMEE5vb3AAAAAMU2V0BAA1AQEEVAABABhSZW1vdmUAAgAAfQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAgQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAUUFAQwQTm9vcAAAAAxTZXQEAEUFAQRUAAEAGFJlbW92ZQACAACFBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBBAEMEE5vb3AAAAAMU2V0BAAEAQRUAAEAGFJlbW92ZQACAACJBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAAjQUEGE9wdGlvbgQEVAGRBQEIEE5vbmUAAAAQU29tZQQAkQUAAAEAAJEFAAAECEUFBACVBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNlRQUBHFBlcmJpbGwAASRtaW5fZGVsYXk4ASxCbG9ja051bWJlcgAAmQUEGE9wdGlvbgQEVAGdBQEIEE5vbmUAAAAQU29tZQQAnQUAAAEAAJ0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc2RDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uBCRBY2NvdW50SWQBBAEIOFBlcm1pc3Npb25sZXNzAAAAHEFjY291bnQEAAQBJEFjY291bnRJZAABAAChBQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQQQ2FsbAgEVAAESQABDBRyZWJhZwQBKGRpc2xvY2F0ZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKNBNb3ZlIHRoZSBjYWxsZXIncyBJZCBkaXJlY3RseSBpbiBmcm9udCBvZiBgbGlnaHRlcmAuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgSWQgb2Y1AXRoZSBhY2NvdW50IGdvaW5nIGluIGZyb250IG9mIGBsaWdodGVyYC4gRmVlIGlzIHBheWVkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsOGNpcmN1bXN0YW5jZXMuADhPbmx5IHdvcmtzIGlmOgCULSBib3RoIG5vZGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgYmFnLNAtIGFuZCBgb3JpZ2luYCBoYXMgYSBncmVhdGVyIGBTY29yZWAgdGhhbiBgbGlnaHRlcmAuVHB1dF9pbl9mcm9udF9vZl9vdGhlcggBHGhlYXZpZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqUFDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0EENhbGwEBFQAARBQcmVsYXlfc2Vzc2lvbl9yZXBvcnQEARhyZXBvcnSpBQFsU2Vzc2lvblJlcG9ydDxUOjpBY2NvdW50SWQ+AAAEBQFDYWxsZWQgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHNlc3Npb24gb24gdGhlIHJlbGF5IGNoYWluLlxyZWxheV9uZXdfb2ZmZW5jZV9wYWdlZAQBIG9mZmVuY2VzvQUBqFZlYzwoU2Vzc2lvbkluZGV4LCBPZmZlbmNlPFQ6OkFjY291bnRJZD4pPgABACBzZXRfa2V5cwwBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZTEBAVBPcHRpb248QmFsYW5jZU9mPFQ+PgAKfFUBU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleXMgYXJlIHZhbGlkYXRlZCBvbiBBc3NldEh1YiBhbmQgZm9yd2FyZGVkIHRvIFJDLgBVAU9uIHRoZSBmaXJzdCBjYWxsLCBhIGRlcG9zaXQgb2YgYEtleURlcG9zaXRgIGlzIGhlbGQgZnJvbSB0aGUgc3Rhc2guIFN1YnNlcXVlbnQgY2FsbHP0ZG8gbm90IGNoYXJnZSBhZ2Fpbi4gVGhlIGRlcG9zaXQgaXMgcmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgBsKipWYWxpZGF0aW9uIG9uIEFzc2V0SHViOioqTQEtIEtleXMgYXJlIGRlY29kZWQgYXMgYFQ6OlJlbGF5Q2hhaW5TZXNzaW9uS2V5c2AgdG8gZW5zdXJlIHRoZXkgbWF0Y2ggUkMncyBleHBlY3RlZCQgIGZvcm1hdC4xAS0gT3duZXJzaGlwIHByb29mIGlzIHZhbGlkYXRlZCB1c2luZyBgT3BhcXVlS2V5czo6b3duZXJzaGlwX3Byb29mX2lzX3ZhbGlkYC4AQQFJZiB2YWxpZGF0aW9uIHBhc3Nlcywgb25seSB0aGUgdmFsaWRhdGVkIGtleXMgYXJlIHNlbnQgdG8gUkMgKHdpdGggZW1wdHkgcHJvb2YpLIBzaW5jZSBSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uLgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuUQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIHN0YXNoIGFjY291bnQgaXMgY2hhcmdlZCBhbiBYQ01JAWZlZSAoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW49AXVzZXMgYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSzYd2hpbGUgdGhlIHN0YXNoIChkZWxlZ2F0aW5nIGFjY291bnQpIHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgBZAU5PVEU6IHVubGlrZSB0aGUgY3VycmVudCBmbG93IGZvciBuZXcgdmFsaWRhdG9ycyBvbiBSQyAoYm9uZCAtPiBzZXRfa2V5cyAtPiB2YWxpZGF0ZSksVQF1c2VycyBvbiBBc3NldCBIdWIgTVVTVCBjYWxsIGJvbmQgYW5kIHZhbGlkYXRlIEJFRk9SRSBjYWxsaW5nIHNldF9rZXlzLiBBdHRlbXB0aW5nIHRvJQFzZXQga2V5cyBiZWZvcmUgZGVjbGFyaW5nIGludGVudCB0byB2YWxpZGF0ZSB3aWxsIGZhaWwgd2l0aCBOb3RWYWxpZGF0b3IuKHB1cmdlX2tleXMEAZRtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlMQEBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAtoAQFSZW1vdmUgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvciBhbmQgcmVsZWFzZSB0aGUga2V5IGRlcG9zaXQuAKhUaGlzIHB1cmdlcyB0aGUga2V5cyBmcm9tIHRoZSBSZWxheSBDaGFpbi4ARQFVbmxpa2UgYHNldF9rZXlzYCwgdGhpcyBkb2VzIG5vdCByZXF1aXJlIHRoZSBjYWxsZXIgdG8gYmUgYSByZWdpc3RlcmVkIHZhbGlkYXRvci5JAVRoaXMgaXMgaW50ZW50aW9uYWw6IGEgdmFsaWRhdG9yIHdobyBoYXMgY2hpbGxlZCAoc3RvcHBlZCB2YWxpZGF0aW5nKSBzaG91bGQgc3RpbGw5AWJlIGFibGUgdG8gcHVyZ2UgdGhlaXIgc2Vzc2lvbiBrZXlzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvcmlnaW5hbPBgcGFsbGV0LXNlc3Npb246OnB1cmdlX2tleXNgIHdoaWNoIGFsbG93cyBhbnlvbmUgdG8gY2FsbCBpdC4AOQFUaGUgUmVsYXkgQ2hhaW4gd2lsbCByZWplY3QgdGhlIGNhbGwgd2l0aCBgTm9LZXlzYCBlcnJvciBpZiB0aGUgYWNjb3VudCBoYXMgbm8ka2V5cyBzZXQuACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5FAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgY2FsbGVyIGlzIGNoYXJnZWQgYW4gWENNIGZlZU0BKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluIHVzZXMpAWBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsuHdoaWxlIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkFCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ0U2Vzc2lvblJlcG9ydAQkQWNjb3VudElkAQQAEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFAdmFsaWRhdG9yX3BvaW50c60FAVRWZWM8KEFjY291bnRJZCwgdTMyKT4AAVBhY3RpdmF0aW9uX3RpbWVzdGFtcLUFAUhPcHRpb248KHU2NCwgdTMyKT4AASBsZWZ0b3ZlcnUBARBib29sAACtBQAAArEFALEFAAAECAQ4ALUFBBhPcHRpb24EBFQBuQUBCBBOb25lAAAAEFNvbWUEALkFAAABAAC5BQAABAgoOAC9BQAAAsEFAMEFAAAECDjFBQDFBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50HE9mZmVuY2UEJEFjY291bnRJZAEEAAwBIG9mZmVuZGVyBAEkQWNjb3VudElkAAEkcmVwb3J0ZXJzeQEBOFZlYzxBY2NvdW50SWQ+AAE4c2xhc2hfZnJhY3Rpb25FBQEcUGVyYmlsbAAAyQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQQQ2FsbAQEVAABCBhtYW5hZ2UEAQhvcM0FAUxNYW5hZ2VyT3BlcmF0aW9uPFQ+AAAUTE1hbmFnZSB0aGlzIHBhbGxldC4A6FRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4ACQFTZWUgW2BNYW5hZ2VyT3BlcmF0aW9uYF0gZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGFyZSBwb3NzaWJsZS4UYWRtaW4EAQhvcNUFAURBZG1pbk9wZXJhdGlvbjxUPgABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrQE1hbmFnZXJPcGVyYXRpb24EBFQAAQxARm9yY2VSb3RhdGVSb3VuZAAAADRGb3JjZVNldFBoYXNlBADRBQEgUGhhc2U8VD4AAQBERW1lcmdlbmN5RmFsbGJhY2sAAgAA0QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlcxRQaGFzZQQEVAABIAxPZmYAAAAYU2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgABAEBTaWduZWRWYWxpZGF0aW9uBAA4AURCbG9ja051bWJlckZvcjxUPgACACBVbnNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwAgU25hcHNob3QEADgBJFBhZ2VJbmRleAAEABBEb25lAAUAGEV4cG9ydAQAOAEkUGFnZUluZGV4AAYAJEVtZXJnZW5jeQAHAADVBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOEFkbWluT3BlcmF0aW9uBARUAAEIUEVtZXJnZW5jeVNldFNvbHV0aW9uCADZBQGEQm94PEJvdW5kZWRTdXBwb3J0c09mPFBhbGxldDxUPj4+AAD5BQE0RWxlY3Rpb25TY29yZQAAAFBTZXRNaW5VbnRydXN0ZWRTY29yZQQA+QUBNEVsZWN0aW9uU2NvcmUAAQAA2QUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ8Qm91bmRlZFN1cHBvcnRzDCRBY2NvdW50SWQBBBhCT3V0ZXIAGEJJbm5lcgAABADdBQEJAUJvdW5kZWRWZWM8KEFjY291bnRJZCwgQm91bmRlZFN1cHBvcnQ8QWNjb3VudElkLCBCSW5uZXI+KSwgQk91dGVyPgAA3QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHhBQRTAAAEAPUFARhWZWM8VD4AAOEFAAAECATlBQDlBQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDhCb3VuZGVkU3VwcG9ydAgkQWNjb3VudElkAQQUQm91bmQAAAgBFHRvdGFsNQEBPEV4dGVuZGVkQmFsYW5jZQABGHZvdGVyc+kFAbxCb3VuZGVkVmVjPChBY2NvdW50SWQsIEV4dGVuZGVkQmFsYW5jZSksIEJvdW5kPgAA6QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtBQRTAAAEAPEFARhWZWM8VD4AAO0FAAAECAQ1AQDxBQAAAu0FAPUFAAAC4QUA+QUIRHNwX25wb3NfZWxlY3Rpb25zNEVsZWN0aW9uU2NvcmUAAAwBNG1pbmltYWxfc3Rha2U1AQE8RXh0ZW5kZWRCYWxhbmNlAAEkc3VtX3N0YWtlNQEBPEV4dGVuZGVkQmFsYW5jZQABRHN1bV9zdGFrZV9zcXVhcmVkNQEBPEV4dGVuZGVkQmFsYW5jZQAA/QUUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4BBhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHVuc2lnbmVkGHBhbGxldBBDYWxsBARUAAEEPHN1Ym1pdF91bnNpZ25lZAQBOHBhZ2VkX3NvbHV0aW9uBQYBlEJveDxQYWdlZFJhd1NvbHV0aW9uPFQ6Ok1pbmVyQ29uZmlnPj4AADxwU3VibWl0IGFuIHVuc2lnbmVkIHNvbHV0aW9uLgBVAVRoaXMgd29ya3MgdmVyeSBtdWNoIGxpa2UgYW4gaW5oZXJlbnQsIGFzIG9ubHkgdGhlIHZhbGlkYXRvcnMgYXJlIHBlcm1pdHRlZCB0byBzdWJtaXRZAWFueXRoaW5nLiBCeSBkZWZhdWx0IHZhbGlkYXRvcnMgd2lsbCBjb21wdXRlIHRoaXMgY2FsbCBpbiB0aGVpciBgb2ZmY2hhaW5fd29ya2VyYCBob29rbGFuZCB0cnkgYW5kIHN1Ym1pdCBpdCBiYWNrLgBFAVRoaXMgaXMgZGlmZmVyZW50IGZyb20gc2lnbmVkIHBhZ2Ugc3VibWlzc2lvbiBtYWlubHkgaW4gdGhhdCB0aGUgc29sdXRpb24gcGFnZSBpc1B2ZXJpZmllZCBvbiB0aGUgZmx5LgA9AVRoZSBgcGFnZWRfc29sdXRpb25gIG1heSBjb250YWluIGF0IG1vc3QgW2BDb25maWc6Ok1pbmVyUGFnZXNgXSBwYWdlcy4gVGhleSBhcmUNAWludGVycHJldGVkIGFzIG1zcCAtPiBsc3AsIGFzIHBlciBbYGNyYXRlOjpQYWxsZXQ6Om1zcF9yYW5nZV9mb3JgXS4AXQFGb3IgZXhhbXBsZSwgaWYgYFBhZ2VzID0gNGAsIGFuZCBgTWluZXJQYWdlcyA9IDJgLCBvdXIgZnVsbCBzbmFwc2hvdCByYW5nZSB3b3VsZCBiZSBbMCxVATEsIDIsIDNdLCB3aXRoIDMgYmVpbmcgbXNwLiBCdXQsIGluIHRoaXMgY2FzZSwgdGhlbiB0aGUgYHBhZ2VkX3Jhd19zb2x1dGlvbi5wYWdlc2AgaXPcZXhwZWN0ZWQgdG8gY29ycmVzcG9uZCB0byBgW3NuYXBzaG90KDIpLCBzbmFwc2hvdCgzKV1gLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FBgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzQFBhZ2VkUmF3U29sdXRpb24EBFQAAAwBOHNvbHV0aW9uX3BhZ2VzCQYBSFZlYzxTb2x1dGlvbk9mPFQ+PgABFHNjb3Jl+QUBNEVsZWN0aW9uU2NvcmUAARRyb3VuZDgBDHUzMgAACQYAAAINBgANBgxwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxzdGFraW5nVE5wb3NDb21wYWN0U29sdXRpb24xNgAAQAEYdm90ZXMxEQYAAAEYdm90ZXMyHQYAAAEYdm90ZXMzMQYAAAEYdm90ZXM0PQYAAAEYdm90ZXM1SQYAAAEYdm90ZXM2VQYAAAEYdm90ZXM3YQYAAAEYdm90ZXM4bQYAAAEYdm90ZXM5eQYAAAEcdm90ZXMxMIUGAAABHHZvdGVzMTGRBgAAARx2b3RlczEynQYAAAEcdm90ZXMxM6kGAAABHHZvdGVzMTS1BgAAARx2b3RlczE1wQYAAAEcdm90ZXMxNs0GAAAAEQYAAAIVBgAVBgAABAhgGQYAGQYAAAbtAwAdBgAAAiEGACEGAAAEDGAlBhkGACUGAAAECBkGKQYAKQYAAAYtBgAtBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzGFBlclUxNgAABADtAwEMdTE2AAAxBgAAAjUGADUGAAAEDGA5BhkGADkGAAADAgAAACUGAD0GAAACQQYAQQYAAAQMYEUGGQYARQYAAAMDAAAAJQYASQYAAAJNBgBNBgAABAxgUQYZBgBRBgAAAwQAAAAlBgBVBgAAAlkGAFkGAAAEDGBdBhkGAF0GAAADBQAAACUGAGEGAAACZQYAZQYAAAQMYGkGGQYAaQYAAAMGAAAAJQYAbQYAAAJxBgBxBgAABAxgdQYZBgB1BgAAAwcAAAAlBgB5BgAAAn0GAH0GAAAEDGCBBhkGAIEGAAADCAAAACUGAIUGAAACiQYAiQYAAAQMYI0GGQYAjQYAAAMJAAAAJQYAkQYAAAKVBgCVBgAABAxgmQYZBgCZBgAAAwoAAAAlBgCdBgAAAqEGAKEGAAAEDGClBhkGAKUGAAADCwAAACUGAKkGAAACrQYArQYAAAQMYLEGGQYAsQYAAAMMAAAAJQYAtQYAAAK5BgC5BgAABAxgvQYZBgC9BgAAAw0AAAAlBgDBBgAAAsUGAMUGAAAEDGDJBhkGAMkGAAADDgAAACUGAM0GAAAC0QYA0QYAAAQMYNUGGQYA1QYAAAMPAAAAJQYA2QYQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0EENhbGwEBFQAARQgcmVnaXN0ZXIEATRjbGFpbWVkX3Njb3Jl+QUBNEVsZWN0aW9uU2NvcmUAAATEUmVnaXN0ZXIgb25lc2VsZiBmb3IgYW4gdXBjb21pbmcgc2lnbmVkIGVsZWN0aW9uLixzdWJtaXRfcGFnZQgBEHBhZ2U4ASRQYWdlSW5kZXgAAThtYXliZV9zb2x1dGlvbt0GAZxPcHRpb248Qm94PFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AASCMU3VibWl0IGEgc2luZ2xlIHBhZ2Ugb2YgYSBzb2x1dGlvbi4AsE11c3QgYWx3YXlzIGNvbWUgYWZ0ZXIgW2BQYWxsZXQ6OnJlZ2lzdGVyYF0uAOBgbWF5YmVfc29sdXRpb25gIGNhbiBiZSBzZXQgdG8gYE5vbmVgIHRvIGVyYXNlIHRoZSBwYWdlLgA1AUNvbGxlY3RzIGRlcG9zaXRzIGZyb20gdGhlIHNpZ25lZCBvcmlnaW4gYmFzZWQgb24gW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYW5kbFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdLhBiYWlsAAIUVFJldHJhY3QgYSBzdWJtaXNzaW9uLgBNAUEgcG9ydGlvbiBvZiB0aGUgZGVwb3NpdCBtYXkgYmUgcmV0dXJuZWQsIGJhc2VkIG9uIHRoZSBbYENvbmZpZzo6RWplY3RHcmFjZVJhdGlvYF0uAMRUaGlzIHdpbGwgZnVsbHkgcmVtb3ZlIHRoZSBzb2x1dGlvbiBmcm9tIHN0b3JhZ2UuUGNsZWFyX29sZF9yb3VuZF9kYXRhCAEUcm91bmQ4AQx1MzIAATR3aXRuZXNzX3BhZ2VzOAEMdTMyAAMYwENsZWFyIHRoZSBkYXRhIG9mIGEgc3VibWl0dGVyIGZvcm0gYW4gb2xkIHJvdW5kLgAxAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkLCBhbmQgdGhlIG9yaWdpbmFsIHN1Ym1pdHRlci4AXQFUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3Igc3VibWlzc2lvbnMgdGhhdCBlbmQgdXAgYmVpbmcgZGlzY2FyZGVkLCBhcyBpbiB0aGV5IGFyZSBub3TEcHJvY2Vzc2VkIGFuZCB0aGV5IGVuZCB1cCBsaW5nZXJpbmcgaW4gdGhlIHF1ZXVlLkRzZXRfaW52dWxuZXJhYmxlcwQBDGludnkBAURWZWM8VDo6QWNjb3VudElkPgAEDGhTZXQgdGhlIGludnVsbmVyYWJsZSBsaXN0LgARAURpc3BhdGNoIG9yaWdpbiBtdXN0IHRoZSB0aGUgc2FtZSBhcyBbYGNyYXRlOjpDb25maWc6OkFkbWluT3JpZ2luYF0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLt0GBBhPcHRpb24EBFQBDQYBCBBOb25lAAAAEFNvbWUEAA0GAAABAADhBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBBDYWxsBARUAAGIEGJvbmQIARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AARRwYXllZeUGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAAwYQFUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxsgGJlIHRoZSBhY2NvdW50IHRoYXQgY29udHJvbHMgaXQuAC0BYHZhbHVlYCBtdXN0IGJlIG1vcmUgdGhhbiB0aGUgYG1pbmltdW1fYmFsYW5jZWAgc3BlY2lmaWVkIGJ5IGBUOjpDdXJyZW5jeWAuACEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuADxFbWl0cyBgQm9uZGVkYC4ATQFOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZFkBdW5sZXNzIHRoZSBgb3JpZ2luYCBmYWxscyBiZWxvdyBfZXhpc3RlbnRpYWwgZGVwb3NpdF8gKG9yIGVxdWFsIHRvIDApIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4oYm9uZF9leHRyYQQBOG1heF9hZGRpdGlvbmFscQEBMEJhbGFuY2VPZjxUPgABKGEBQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggYGZyZWVfYmFsYW5jZWAgaW50byB0aGUgYmFsYW5jZSB1cDBmb3Igc3Rha2luZy4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci4ATQFVc2UgdGhpcyBpZiB0aGVyZSBhcmUgYWRkaXRpb25hbCBmdW5kcyBpbiB5b3VyIHN0YXNoIGFjY291bnQgdGhhdCB5b3Ugd2lzaCB0byBib25kLlUBVW5saWtlIFtgYm9uZGBdKFNlbGY6OmJvbmQpIG9yIFtgdW5ib25kYF0oU2VsZjo6dW5ib25kKSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZbxhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50IHRoYXQgY2FuIGJlIGFkZGVkLgA8RW1pdHMgYEJvbmRlZGAuGHVuYm9uZAQBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgACTFEBU2NoZWR1bGUgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCB0byBiZSB1bmxvY2tlZCByZWFkeSBmb3IgdHJhbnNmZXIgb3V0IGFmdGVyIHRoZSBib25k/HBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiEBW2Bhc3NldDo6ZXhpc3RlbnRpYWxfZGVwb3NpdGBdLCB0aGVuIGl0IGlzIGluY3JlYXNlZCB0byB0aGUgZnVsbCBhbW91bnQuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAEUBT25jZSB0aGUgdW5sb2NrIHBlcmlvZCBpcyBkb25lLCB5b3UgY2FuIGNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCB0byBhY3R1YWxseSBtb3ZlvHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuADEBTm8gbW9yZSB0aGFuIGEgbGltaXRlZCBudW1iZXIgb2YgdW5sb2NraW5nIGNodW5rcyAoc2VlIGBNYXhVbmxvY2tpbmdDaHVua3NgKUEBY2FuIGNvLWV4aXN0cyBhdCB0aGUgc2FtZSB0aW1lLiBJZiB0aGVyZSBhcmUgbm8gdW5sb2NraW5nIGNodW5rcyBzbG90cyBhdmFpbGFibGVFAVtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXSBpcyBjYWxsZWQgdG8gcmVtb3ZlIHNvbWUgb2YgdGhlIGNodW5rcyAoaWYgcG9zc2libGUpLgA5AUlmIGEgdXNlciBlbmNvdW50ZXJzIHRoZSBgSW5zdWZmaWNpZW50Qm9uZGAgZXJyb3Igd2hlbiBjYWxsaW5nIHRoaXMgZXh0cmluc2ljLBkBdGhleSBzaG91bGQgY2FsbCBgY2hpbGxgIGZpcnN0IGluIG9yZGVyIHRvIGZyZWUgdXAgdGhlaXIgYm9uZGVkIGZ1bmRzLgBERW1pdHMgYFVuYm9uZGVkYC4AlFNlZSBhbHNvIFtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXS5Ed2l0aGRyYXdfdW5ib25kZWQEAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAA0wpAVJlbW92ZSBhbnkgc3Rha2UgdGhhdCBoYXMgYmVlbiBmdWxseSB1bmJvbmRlZCBhbmQgaXMgcmVhZHkgZm9yIHdpdGhkcmF3YWwuAFUBU3Rha2UgaXMgY29uc2lkZXJlZCBmdWxseSB1bmJvbmRlZCBvbmNlIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBoYXMgZWxhcHNlZCBzaW5jZV0BdGhlIHVuYm9uZGluZyB3YXMgaW5pdGlhdGVkLiBJbiByYXJlIGNhc2Vz4oCUc3VjaCBhcyB3aGVuIG9mZmVuY2VzIGZvciB0aGUgdW5ib25kZWQgZXJhVQFoYXZlIGJlZW4gcmVwb3J0ZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2Vk4oCUd2l0aGRyYXdhbCBpcyByZXN0cmljdGVkIHRvIGVyYXMgZm9yIHdoaWNohGFsbCBvZmZlbmNlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLgAlAVRoZSB1bmxvY2tlZCBzdGFrZSB3aWxsIGJlIHJldHVybmVkIGFzIGZyZWUgYmFsYW5jZSBpbiB0aGUgc3Rhc2ggYWNjb3VudC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlci4ASEVtaXRzIGBXaXRoZHJhd25gLgBoU2VlIGFsc28gW2BDYWxsOjp1bmJvbmRgXS4ANCMjIFBhcmFtZXRlcnMAWQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiAqKkRlcHJlY2F0ZWQqKi4gUmV0YWluZWQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsgdGhpc2ggIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiB2YWxpZGF0ZQQBFHByZWZz6QYBOFZhbGlkYXRvclByZWZzAAQU5ERlY2xhcmUgdGhlIGRlc2lyZSB0byB2YWxpZGF0ZSBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guIG5vbWluYXRlBAEcdGFyZ2V0c/EGAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+AAUUDQFEZWNsYXJlIHRoZSBkZXNpcmUgdG8gbm9taW5hdGUgYHRhcmdldHNgIGZvciB0aGUgb3JpZ2luIGNvbnRyb2xsZXIuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4UY2hpbGwABijERGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR55C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LlAtIENvbnRhaW5zIG9uZSByZWFkLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJHNldF9wYXllZQQBFHBheWVl5QYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4ABxS0KFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guOHNldF9jb250cm9sbGVyAAggRQEoUmUtKXNldHMgdGhlIGNvbnRyb2xsZXIgb2YgYSBzdGFzaCB0byB0aGUgc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uIHByZXZpb3VzbHlNAWFjY2VwdGVkIGEgYGNvbnRyb2xsZXJgIGFyZ3VtZW50IHRvIHNldCB0aGUgY29udHJvbGxlciB0byBhbiBhY2NvdW50IG90aGVyIHRoYW4gdGhlWQFzdGFzaCBpdHNlbGYuIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbm93IGJlZW4gcmVtb3ZlZCwgbm93IG9ubHkgc2V0dGluZyB0aGUgY29udHJvbGxlcox0byB0aGUgc3Rhc2gsIGlmIGl0IGlzIG5vdCBhbHJlYWR5LgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLkxzZXRfdmFsaWRhdG9yX2NvdW50BAEMbmV3YAEMdTMyAAkMkFNldHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuYGluY3JlYXNlX3ZhbGlkYXRvcl9jb3VudAQBKGFkZGl0aW9uYWxgAQx1MzIAChDoSW5jcmVtZW50cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgdXAgdG8gbWF4aW11bSBvZlRgVDo6TWF4VmFsaWRhdG9yU2V0YC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LlRzY2FsZV92YWxpZGF0b3JfY291bnQEARhmYWN0b3L1BgEcUGVyY2VudAALEBEBU2NhbGUgdXAgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIGJ5IGEgZmFjdG9yIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40Zm9yY2Vfbm9fZXJhcwAMJKxGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS45AVRodXMgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IGJlIG9uZ29pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4gSW4gdGhpcyBjYXNlIHRoZdxlbGVjdGlvbiB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBuZXh0IGVyYSBpcyB0cmlnZ2VyZWQuNGZvcmNlX25ld19lcmEADShJAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHNlc3Npb24uIEFmdGVyIHRoaXMsIGl0IHdpbGwgYmWccmVzZXQgdG8gbm9ybWFsIChub24tZm9yY2VkKSBiZWhhdmlvdXIuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC40Zm9yY2VfdW5zdGFrZQgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAA8gCQFGb3JjZSBhIGN1cnJlbnQgc3Rha2VyIHRvIGJlY29tZSBjb21wbGV0ZWx5IHVuc3Rha2VkLCBpbW1lZGlhdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LjQjIyBQYXJhbWV0ZXJzALAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHVuc3Rha2VkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuUGZvcmNlX25ld19lcmFfYWx3YXlzABAkAQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiBzZXNzaW9ucyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC5UY2FuY2VsX2RlZmVycmVkX3NsYXNoCAEMZXJhOAEgRXJhSW5kZXgAAUR2YWxpZGF0b3Jfc2xhc2hlc/kGAXBWZWM8KFQ6OkFjY291bnRJZCwgUGVyYmlsbCk+ABEsCQFDYW5jZWxzIHNjaGVkdWxlZCBzbGFzaGVzIGZvciBhIGdpdmVuIGVyYSBiZWZvcmUgdGhleSBhcmUgYXBwbGllZC4AYQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBgVDo6QWRtaW5PcmlnaW5gIHRvIGNhbmNlbCBwZW5kaW5nIHNsYXNoZXMgZm9yIHNwZWNpZmllZCB2YWxpZGF0b3JzSQFpbiBhIGdpdmVuIGVyYS4gVGhlIGNhbmNlbGxlZCBzbGFzaGVzIGFyZSBzdG9yZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCB3aGVuIGFwcGx5aW5nIHNsYXNoZXMuADQjIyBQYXJhbWV0ZXJzVQEtIGBlcmFgOiBUaGUgc3Rha2luZyBlcmEgZm9yIHdoaWNoIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZC4gVGhpcyBpcyB0aGUgZXJhIHdoZXJlNQEgIHRoZSBzbGFzaCB3b3VsZCBiZSBhcHBsaWVkLCBub3QgdGhlIGVyYSBpbiB3aGljaCB0aGUgb2ZmZW5jZSB3YXMgY29tbWl0dGVkLlkBLSBgdmFsaWRhdG9yX3NsYXNoZXNgOiBBIGxpc3Qgb2YgdmFsaWRhdG9yIHN0YXNoIGFjY291bnRzIGFuZCB0aGVpciBzbGFzaCBmcmFjdGlvbnMgdG88ICBiZSBjYW5jZWxsZWQuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEMZXJhOAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgATDNxSZWJvbmQgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCBzY2hlZHVsZWQgdG8gYmUgdW5sb2NrZWQuANRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBjb250cm9sbGVyLihyZWFwX3N0YXNoCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAFGBdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToAFQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC4hATIuIG9yLCB0aGUgYGxlZGdlci50b3RhbGAgb2YgdGhlIHN0YXNoIGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LgBVAVRoZSBmb3JtZXIgY2FuIGhhcHBlbiBpbiBjYXNlcyBsaWtlIGEgc2xhc2g7IHRoZSBsYXR0ZXIgd2hlbiBhIGZ1bGx5IHVuYm9uZGVkIGFjY291bnQJAWlzIHN0aWxsIHJlY2VpdmluZyBzdGFraW5nIHJld2FyZHMgaW4gYFJld2FyZERlc3RpbmF0aW9uOjpTdGFrZWRgLgBFAVRoZSBnYXRlIGlzIGludGVudGlvbmFsbHkgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYW5kICpub3QqIGBtaW5fY2hpbGxlZF9ib25kYDogYVUBZ292ZXJuYW5jZSBjaGFuZ2UgdG8gYE1pblZhbGlkYXRvckJvbmRgIC8gYE1pbk5vbWluYXRvckJvbmRgIG11c3Qgbm90IHR1cm4gcHJldmlvdXNseUkBc2FmZSBzdGFzaGVzIGludG8gcGVybWlzc2lvbmxlc3NseSByZWFwYWJsZSBvbmVzLiBBY2NvdW50cyB0aGF0IGZhbGwgYmVsb3cgdGhlIG5ld1UBbWluaW11bXMgYWZ0ZXIgc3VjaCBhIGNoYW5nZSBzaG91bGQgYmUgYGNoaWxsX290aGVyYC1lZCAod2hpY2ggaGFzIGEgZGVuc2l0eSBnYXRlIGFuZKRkb2VzIG5vdCBkZXN0cm95IHRoZSBsZWRnZXIpLCBub3QgcmVhcGVkLgAxAUl0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLCBhcyBsb25nIGFzIGBzdGFzaGAgbWVldHMgdGhlIGFib3ZlIHJlcXVpcmVtZW50cy4A3FJlZnVuZHMgdGhlIHRyYW5zYWN0aW9uIGZlZXMgdXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4ANCMjIFBhcmFtZXRlcnMAqC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgdG8gYmUgcmVhcGVkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuEGtpY2sEAQx3aG/xBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAVLOBSZW1vdmUgdGhlIGdpdmVuIG5vbWluYXRpb25zIGZyb20gdGhlIGNhbGxpbmcgdmFsaWRhdG9yLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAE0BLSBgd2hvYDogQSBsaXN0IG9mIG5vbWluYXRvciBzdGFzaCBhY2NvdW50cyB3aG8gYXJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3Igd2hpY2jAICBzaG91bGQgbm8gbG9uZ2VyIGJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3IuAFUBTm90ZTogTWFraW5nIHRoaXMgY2FsbCBvbmx5IG1ha2VzIHNlbnNlIGlmIHlvdSBmaXJzdCBzZXQgdGhlIHZhbGlkYXRvciBwcmVmZXJlbmNlcyB0b3hibG9jayBhbnkgZnVydGhlciBub21pbmF0aW9ucy5Mc2V0X3N0YWtpbmdfY29uZmlncyABSG1pbl9ub21pbmF0b3JfYm9uZAEHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFIbWluX3ZhbGlkYXRvcl9ib25kAQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW50BQcBNENvbmZpZ09wPHUzMj4AAUxtYXhfdmFsaWRhdG9yX2NvdW50BQcBNENvbmZpZ09wPHUzMj4AATxjaGlsbF90aHJlc2hvbGQJBwFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbg0HAURDb25maWdPcDxQZXJiaWxsPgABSG1heF9zdGFrZWRfcmV3YXJkcwkHAURDb25maWdPcDxQZXJjZW50PgABYGFyZV9ub21pbmF0b3JzX3NsYXNoYWJsZREHAThDb25maWdPcDxib29sPgAWRKxVcGRhdGUgdGhlIHZhcmlvdXMgc3Rha2luZyBjb25maWd1cmF0aW9ucyAuACUBKiBgbWluX25vbWluYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgbm9taW5hdG9yLiUBKiBgbWluX3ZhbGlkYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgdmFsaWRhdG9yLlUBKiBgbWF4X25vbWluYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSBub21pbmF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlUBKiBgbWF4X3ZhbGlkYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSB2YWxpZGF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlkBKiBgY2hpbGxfdGhyZXNob2xkYDogVGhlIHJhdGlvIG9mIGBtYXhfbm9taW5hdG9yX2NvdW50YCBvciBgbWF4X3ZhbGlkYXRvcl9jb3VudGAgd2hpY2gZASAgc2hvdWxkIGJlIGZpbGxlZCBpbiBvcmRlciBmb3IgdGhlIGBjaGlsbF9vdGhlcmAgdHJhbnNhY3Rpb24gdG8gd29yay5hASogYG1pbl9jb21taXNzaW9uYDogVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi5VASAgVGhpcyBpcyBjaGVja2VkIG9ubHkgdXBvbiBjYWxsaW5nIGB2YWxpZGF0ZWAuIEV4aXN0aW5nIHZhbGlkYXRvcnMgYXJlIG5vdCBhZmZlY3RlZC4AxFJ1bnRpbWVPcmlnaW4gbXVzdCBiZSBSb290IHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4ANQFOT1RFOiBFeGlzdGluZyBub21pbmF0b3JzIGFuZCB2YWxpZGF0b3JzIHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IHRoaXMgdXBkYXRlLhEBdG8ga2ljayBwZW9wbGUgdW5kZXIgdGhlIG5ldyBsaW1pdHMsIGBjaGlsbF9vdGhlcmAgc2hvdWxkIGJlIGNhbGxlZC4sY2hpbGxfb3RoZXIEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAXaEEBRGVjbGFyZSBhIGBjb250cm9sbGVyYCB0byBzdG9wIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBidXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAFkBSWYgdGhlIGNhbGxlciBpcyB0aGUgc2FtZSBhcyB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlbiBubyBmdXJ0aGVyIGNoZWNrcyBhcmXYZW5mb3JjZWQsIGFuZCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMganVzdCBsaWtlIGBjaGlsbGAuAF0BSWYgdGhlIGNhbGxlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zMG11c3QgYmUgbWV0OgAdASogYGNvbnRyb2xsZXJgIG11c3QgYmVsb25nIHRvIGEgbm9taW5hdG9yIHdobyBoYXMgYmVjb21lIG5vbi1kZWNvZGFibGUsAAxPcjoAPQEqIEEgYENoaWxsVGhyZXNob2xkYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCB3aGljaCBkZWZpbmVzIGhvdyBjbG9zZSB0byB0aGUgbWF4VQEgIG5vbWluYXRvcnMgb3IgdmFsaWRhdG9ycyB3ZSBtdXN0IHJlYWNoIGJlZm9yZSB1c2VycyBjYW4gc3RhcnQgY2hpbGxpbmcgb25lLWFub3RoZXIuWQEqIEEgYE1heE5vbWluYXRvckNvdW50YCBhbmQgYE1heFZhbGlkYXRvckNvdW50YCBtdXN0IGJlIHNldCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZZAgIGhvdyBjbG9zZSB3ZSBhcmUgdG8gdGhlIHRocmVzaG9sZC5dASogQSBgTWluTm9taW5hdG9yQm9uZGAgYW5kIGBNaW5WYWxpZGF0b3JCb25kYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCwgd2hpY2ggZGV0ZXJtaW5lc1EBICBpZiB0aGlzIGlzIGEgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGNoaWxsZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm90IG1ldCB0aGUgdGhyZXNob2xkQCAgYm9uZCByZXF1aXJlZC4AVQFUaGlzIGNhbiBiZSBoZWxwZnVsIGlmIGJvbmQgcmVxdWlyZW1lbnRzIGFyZSB1cGRhdGVkLCBhbmQgd2UgbmVlZCB0byByZW1vdmUgb2xkIHVzZXJzmHdobyBkbyBub3Qgc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuaGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uBAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkABgQOQFDbGFtcHMgYSB2YWxpZGF0b3IncyBjb21taXNzaW9uIHRvIHRoZSBgW01pbkNvbW1pc3Npb24sIE1heENvbW1pc3Npb25dYCByYW5nZS4AOQFOYW1lZCBgZm9yY2VfYXBwbHlfbWluX2NvbW1pc3Npb25gIGZvciBsZWdhY3kgcmVhc29ucyDigJQgaXQgYWxzbyBlbmZvcmNlcyB0aGWMbWF4aW11bS4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcy5Ic2V0X21pbl9jb21taXNzaW9uBAEMbmV3RQUBHFBlcmJpbGwAGRAlAVNldHMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi4AWQFUaGlzIGNhbGwgaGFzIGxvd2VyIHByaXZpbGVnZSByZXF1aXJlbWVudHMgdGhhbiBgc2V0X3N0YWtpbmdfY29uZmlnYCBhbmQgY2FuIGJlIGNhbGxlZMxieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4gUm9vdCBjYW4gYWx3YXlzIGNhbGwgdGhpcy5YcGF5b3V0X3N0YWtlcnNfYnlfcGFnZQwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAEQcGFnZTgBEFBhZ2UAGlQxAVBheSBvdXQgYSBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYSBhbmQgcGFnZS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4xAS0gYHBhZ2VgIGlzIHRoZSBwYWdlIGluZGV4IG9mIG5vbWluYXRvcnMgdG8gcGF5IG91dCB3aXRoIHZhbHVlIGJldHdlZW4gMCBhbmSwICBgbnVtX25vbWluYXRvcnMgLyBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAD0BSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdIG5vbWluYXRvcnMgYmFja2luZykBdGhlbSwgdGhlbiB0aGUgbGlzdCBvZiBub21pbmF0b3JzIGlzIHBhZ2VkLCB3aXRoIGVhY2ggcGFnZSBiZWluZyBjYXBwZWQgYXRVAVtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYF0uIElmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gb25lIHBhZ2Ugb2Ygbm9taW5hdG9ycyxJAXRoZSBjYWxsIG5lZWRzIHRvIGJlIG1hZGUgZm9yIGVhY2ggcGFnZSBzZXBhcmF0ZWx5IGluIG9yZGVyIGZvciBhbGwgdGhlIG5vbWluYXRvcnNVAWJhY2tpbmcgYSB2YWxpZGF0b3IgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLiBUaGUgbm9taW5hdG9ycyBhcmUgbm90IHNvcnRlZCBhY3Jvc3MgcGFnZXNhAWFuZCBzbyBpdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlIGhpZ2hlc3Qgc3Rha2VyIHdvdWxkIGJlIG9uIHRoZSB0b3Btb3N0IHBhZ2UgYW5kIHZpY2VJAXZlcnNhLiBJZiByZXdhcmRzIGFyZSBub3QgY2xhaW1lZCBpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcywgdGhleSBhcmUgbG9zdC4ASQFUaGUgdmFsaWRhdG9yJ3Mgb3duIHJld2FyZCAoY29tbWlzc2lvbiArIG93bi1zdGFrZSBzaGFyZSkgaXMgcHJvcmF0ZWQgYWNyb3NzIHBhZ2VzSQFwcm9wb3J0aW9uYWwgdG8gZWFjaCBwYWdlJ3Mgc3Rha2UuIFRoZSBmdWxsIHZhbGlkYXRvciByZXdhcmQgaXMgdGhlIHN1bSBhY3Jvc3MgYWxsGHBhZ2VzLjB1cGRhdGVfcGF5ZWUEAShjb250cm9sbGVyBAEwVDo6QWNjb3VudElkABsY4E1pZ3JhdGVzIGFuIGFjY291bnQncyBgUmV3YXJkRGVzdGluYXRpb246OkNvbnRyb2xsZXJgIHRvpGBSZXdhcmREZXN0aW5hdGlvbjo6QWNjb3VudChjb250cm9sbGVyKWAuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuADEBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgdGhlIGBwYXllZWAgaXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLmhkZXByZWNhdGVfY29udHJvbGxlcl9iYXRjaAQBLGNvbnRyb2xsZXJzFQcB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASxtYXliZV90b3RhbDEBAVBPcHRpb248QmFsYW5jZU9mPFQ+PgABPG1heWJlX3VubG9ja2luZxkHARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLkBtaWdyYXRlX2N1cnJlbmN5BAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAHhzYTWlncmF0ZXMgcGVybWlzc2lvbmxlc3NseSBhIHN0YXNoIGZyb20gbG9ja3MgdG8gaG9sZHMuAEkBVGhpcyByZW1vdmVzIHRoZSBvbGQgbG9jayBvbiB0aGUgc3Rha2UgYW5kIGNyZWF0ZXMgYSBob2xkIG9uIGl0IGF0b21pY2FsbHkuIElmIGFsbGEBc3Rha2UgY2Fubm90IGJlIGhlbGQsIHRoZSBiZXN0IGVmZm9ydCBpcyBtYWRlIHRvIGhvbGQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhlIHJlbWFpbmluZ4RzdGFrZSBpcyByZW1vdmVkIGZyb20gdGhlIGxlZGdlci4AxFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBtaWdyYXRpb24gaXMgc3VjY2Vzc2Z1bC4sYXBwbHlfc2xhc2gIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2tleSkHAXAoVDo6QWNjb3VudElkLCBQZXJiaWxsLCB1MzIpAB+IHQFNYW51YWxseSBhbmQgcGVybWlzc2lvbmxlc3NseSBhcHBsaWVzIGEgZGVmZXJyZWQgc2xhc2ggZm9yIGEgZ2l2ZW4gZXJhLgBdAU5vcm1hbGx5LCBzbGFzaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgc2hvcnRseSBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIGBzbGFzaF9lcmFgLlkBVGhlIGF1dG9tYXRpYyBhcHBsaWNhdGlvbiBvZiBzbGFzaGVzIGlzIGhhbmRsZWQgYnkgdGhlIHBhbGxldCdzIGludGVybmFsIGxvZ2ljLCBhbmQgaXTMdHJpZXMgdG8gYXBwbHkgb25lIHNsYXNoIHBhZ2UgcGVyIGJsb2NrIG9mIHRoZSBlcmEuVQFJZiBmb3Igc29tZSByZWFzb24sIG9uZSBlcmEgaXMgbm90IGVub3VnaCBmb3IgYXBwbHlpbmcgYWxsIHNsYXNoIHBhZ2VzLCB0aGUgcmVtYWluaW5n3HNsYXNoZXMgbmVlZCB0byBiZSBtYW51YWxseSAocGVybWlzc2lvbmxlc3NseSkgYXBwbGllZC4ASQFGb3IgYSBnaXZlbiBlcmEgeCwgaWYgYXQgZXJhIHgrMSwgc2xhc2hlcyBhcmUgc3RpbGwgdW5hcHBsaWVkLCBhbGwgd2l0aGRyYXdhbHMgZ2V0IQFibG9ja2VkLCBhbmQgdGhlc2UgbmVlZCB0byBiZSBtYW51YWxseSBhcHBsaWVkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5NAVRoaXMgZnVuY3Rpb24gZXhpc3RzIGFzIGEgKipmYWxsYmFjayBtZWNoYW5pc20qKiBmb3IgdGhpcyBleHRyZW1lIHNpdHVhdGlvbiwgYnV0IHdlzG5ldmVyIGV4cGVjdCB0byBlbmNvdW50ZXIgdGhpcyBpbiBub3JtYWwgc2NlbmFyaW9zLgBhAVRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGNhbGwgY2FuIGJlIHF1ZXJpZWQgYnkgbG9va2luZyBhdCB0aGUgYFVuYXBwbGllZFNsYXNoZXNgIHN0b3JhZ2WMZm9yIGVyYXMgb2xkZXIgdGhhbiB0aGUgYWN0aXZlIGVyYS4ANCMjIFBhcmFtZXRlcnNVAS0gYHNsYXNoX2VyYWA6IFRoZSBhcHBsaWNhdGlvbiBlcmEgKGBvZmZlbmNlX2VyYSArIFNsYXNoRGVmZXJEdXJhdGlvbmApLCBpLmUuIHRoZSBrZXlwICBpbnRvIFtgVW5hcHBsaWVkU2xhc2hlc2BdLiUBLSBgc2xhc2hfa2V5YDogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNsYXNoLCByZXByZXNlbnRlZCBhcyBhIHR1cGxlOvggIC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvciBiZWluZyBzbGFzaGVkLgUBICAtIGBzbGFzaF9mcmFjdGlvbmA6IFRoZSBmcmFjdGlvbiBvZiB0aGUgc3Rha2UgdGhhdCB3YXMgc2xhc2hlZC4FASAgLSBgcGFnZV9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgZXhwb3N1cmUgcGFnZSBiZWluZyBwcm9jZXNzZWQuACwjIyBCZWhhdmlvcugtIFRoZSBmdW5jdGlvbiBpcyAqKnBlcm1pc3Npb25sZXNzKirigJRhbnlvbmUgY2FuIGNhbGwgaXQu8C0gVGhlIGBzbGFzaF9lcmFgICoqbXVzdCBiZSB0aGUgY3VycmVudCBlcmEgb3IgYSBwYXN0IGVyYSoqLmxJZiBpdCBpcyBpbiB0aGUgZnV0dXJlLCB0aGWIICBjYWxsIGZhaWxzIHdpdGggYEVyYU5vdFN0YXJ0ZWRgLuQtIFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBzbGFzaCBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZC4AVCMjIEZ1dHVyZSBJbXByb3ZlbWVudGEBLSBJbXBsZW1lbnQgYW4gKipvZmYtY2hhaW4gd29ya2VyIChPQ1cpIHRhc2sqKiB0byBhdXRvbWF0aWNhbGx5IGFwcGx5IHNsYXNoZXMgd2hlbiB0aGVyZbggIGlzIHVudXNlZCBibG9jayBzcGFjZSwgaW1wcm92aW5nIGVmZmljaWVuY3kuOHBydW5lX2VyYV9zdGVwBAEMZXJhOAEgRXJhSW5kZXgAICxhAVBlcmZvcm0gb25lIHN0ZXAgb2YgZXJhIHBydW5pbmcgdG8gcHJldmVudCBQb1Ygc2l6ZSBleGhhdXN0aW9uIGZyb20gdW5ib3VuZGVkIGRlbGV0aW9ucy4AMQFUaGlzIGV4dHJpbnNpYyBlbmFibGVzIHBlcm1pc3Npb25sZXNzIGxhenkgcHJ1bmluZyBvZiBlcmEgZGF0YSBieSBwZXJmb3JtaW5nLQFpbmNyZW1lbnRhbCBkZWxldGlvbiBvZiBzdG9yYWdlIGl0ZW1zLiBFYWNoIGNhbGwgcHJvY2Vzc2VzIGEgbGltaXRlZCBudW1iZXIlAW9mIGl0ZW1zIGJhc2VkIG9uIGF2YWlsYWJsZSBibG9jayB3ZWlnaHQgdG8gYXZvaWQgZXhjZWVkaW5nIGJsb2NrIGxpbWl0cy4ANQFSZXR1cm5zIGBQYXlzOjpOb2Agd2hlbiB3b3JrIGlzIHBlcmZvcm1lZCB0byBpbmNlbnRpdml6ZSByZWd1bGFyIG1haW50ZW5hbmNlLgUBQW55b25lIGNhbiBjYWxsIHRoaXMgdG8gaGVscCBtYWludGFpbiB0aGUgY2hhaW4ncyBzdG9yYWdlIGhlYWx0aC4ADQFUaGUgZXJhIG11c3QgYmUgZWxpZ2libGUgZm9yIHBydW5pbmcgKG9sZGVyIHRoYW4gSGlzdG9yeURlcHRoICsgMSkuOQFDaGVjayBgRXJhUHJ1bmluZ1N0YXRlYCBzdG9yYWdlIHRvIHNlZSBpZiBhbiBlcmEgbmVlZHMgcHJ1bmluZyBiZWZvcmUgY2FsbGluZy5Ic2V0X21heF9jb21taXNzaW9uBAEMbmV3RQUBHFBlcmJpbGwAIQzQU2V0cyB0aGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAupHNldF92YWxpZGF0b3Jfc2VsZl9zdGFrZV9pbmNlbnRpdmVfY29uZmlnDAFIb3B0aW11bV9zZWxmX3N0YWtlAQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlAQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAVxzZWxmX3N0YWtlX3Nsb3BlX2ZhY3Rvcg0HAURDb25maWdPcDxQZXJiaWxsPgAiFOBDb25maWd1cmUgdGhlIHZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBwYXJhbWV0ZXJzLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuAAEBQ2hhbmdlcyB0YWtlIGVmZmVjdCBpbiB0aGUgbmV4dCBlcmEgd2hlbiByZXdhcmRzIGFyZSBjYWxjdWxhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lBghQcGFsbGV0X3N0YWtpbmdfYXN5bmNEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAA6QYIUHBhbGxldF9zdGFraW5nX2FzeW5jOFZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9u7QYBHFBlcmJpbGwAARxibG9ja2VkdQEBEGJvb2wAAO0GAAAGRQUA8QYAAAIAAPUGDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAA+QYAAAL9BgD9BgAABAgERQUAAQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBNQEBDBBOb29wAAAADFNldAQANQEBBFQAAQAYUmVtb3ZlAAIAAAUHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAACQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQB9QYBDBBOb29wAAAADFNldAQA9QYBBFQAAQAYUmVtb3ZlAAIAAA0HEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAUUFAQwQTm9vcAAAAAxTZXQEAEUFAQRUAAEAGFJlbW92ZQACAAARBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAF1AQEMEE5vb3AAAAAMU2V0BAB1AQEEVAABABhSZW1vdmUAAgAAFQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAAGQcEGE9wdGlvbgQEVAEdBwEIEE5vbmUAAAAQU29tZQQAHQcAAAEAAB0HDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQcEUwAABAAlBwEYVmVjPFQ+AAAhBwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyLFVubG9ja0NodW5rBBxCYWxhbmNlATUBAAgBFHZhbHVlcQEBHEJhbGFuY2UAAQxlcmFgASBFcmFJbmRleAAAJQcAAAIhBwApBwAABAwERQU4AC0HDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxhwYWxsZXQQQ2FsbAQEVAABDFByZWNlaXZlX2NyZWRpdF90cmVlcwQBFGJhdGNoMQcBSENyZWRpdFRyZWVCYXRjaDxUPgAAHOxTdG9yZXMgdGhlIGNyZWRpdCB0cmVlcyBvZiBhIGJhdGNoIHNlbnQgYnkgdGhlIGdhbWUgcGFsbGV0LgAkIyMgT3JpZ2lu/FJlcXVpcmVzIHRoZSBnYW1lIGNoYWluJ3MgWENNIG9yaWdpbiAoYEVuc3VyZUdhbWVDaGFpbk9yaWdpbmApLgA0IyMgUGFyYW1ldGVyc/wtIGBiYXRjaGA6IFRoZSBjcmVkaXQgdHJlZXMgdG8gc3RvcmUsIGluIGFzY2VuZGluZyBibG9jayBvcmRlci4UY2xhaW0cASBjbGFpbWFudEkHATBDbGFpbWFudEtpbmQAARRibG9jazgBKEF3YXJkQmxvY2sAARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAABKGxlYWZfaW5kZXg4AQx1MzIAARRwcm9vZk0HAbRCb3VuZGVkVmVjPENyZWRpdFByb29mTm9kZSwgVDo6TWF4UHJvb2ZOb2Rlcz4AAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABZCEBTWludHMgdGhlIE5GVCBvZiBvbmUgTkZUIGNsYWltIGNyZWRpdCB0aGUgZ2FtZSBjaGFpbiBhd2FyZGVkIGluIGBibG9ja2AuAFkBVGhlIGNyZWRpdCBpcyBzcGVudCBieSB0aGUgY2xhaW06IGl0cyBsZWFmIGlzIHJlY29yZGVkLCBhbmQgYSBzZWNvbmQgY2xhaW0gb2YgdGhlIHNhbWWEY3JlZGl0IGZhaWxzLCB3aG9ldmVyIHN1Ym1pdHMgaXQuACQjIyBPcmlnaW5JAVRoZSBzaWduZXIgb2YgdGhlIGNsYWltYW50IHRoZSBjcmVkaXQgd2FzIGF3YXJkZWQgdG8gKFtgQ29uZmlnOjpFbnN1cmVDbGFpbWFudGBdKS4ANCMjIFBhcmFtZXRlcnNJAS0gYGNsYWltYW50YDogV2hpY2ggb2YgdGhlIHNpZ25lcidzIGlkZW50aXRpZXMgdGhlIGNyZWRpdCB3YXMgYXdhcmRlZCB0by4gQSBwZXJzb25hASAgY2xhaW1zIGFzIFtgQ2xhaW1hbnRLaW5kOjpQZXJzb25gXSwgd2hpY2ggcmVzb2x2ZXMgdG8gdGhlIGFsaWFzIHRoZWlyIGFjY291bnQgaXMgYm91bmQUICB0by5VAS0gYGJsb2NrYDogVGhlIFBlb3BsZS1jaGFpbiBibG9jayB0aGUgY3JlZGl0IHdhcyBhd2FyZGVkIGluLCB3aGljaCBuYW1lcyB0aGUgdHJlZSB0aGVwICBwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0LlUBLSBgY3JlZGl0YDogVGhlIGNyZWRpdCBiZWluZyBjbGFpbWVkLiBIYXNoZWQgdG9nZXRoZXIgd2l0aCB0aGUgb3JpZ2luJ3MgaWRlbnRpdHkgaW50b0UBICB0aGUgbGVhZiwgc28gYSBjcmVkaXQgb2Ygc29tZWJvZHkgZWxzZSdzIHJlaGFzaGVzIHRvIGEgbGVhZiB0aGF0IGlzIGluIG5vIHRyZWUuQQEtIGBsZWFmX2luZGV4YDogVGhlIHBvc2l0aW9uIG9mIHRoYXQgbGVhZiBpbiB0aGUgYmxvY2sncyBsZWF2ZXMsIGluIGF3YXJkIG9yZGVyLlkBLSBgcHJvb2ZgOiBUaGUgc2libGluZyBoYXNoZXMgdGhhdCByZWhhc2ggdGhlIGxlYWYgdXAgdG8gdGhlIHRyZWUncyByb290LCBib3R0b20gbGF5ZXIRASAgZmlyc3QsIGFzIHRoZSBnYW1lIGNoYWluJ3MgYG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZzYCByZXR1cm5zIHRoZW0uPQEtIGBjb2xsZWN0aW9uYDogVGhlIFNjYXJjaXR5IGNvbGxlY3Rpb24gdGhlIE5GVCBpcyBtaW50ZWQgaW50bywgd2hpY2ggaGFzIHRvIGJlVQEgIHJlZ2lzdGVyZWQgdGhyb3VnaCBbYFBhbGxldDo6c2V0X2NvbGxlY3Rpb25fbWludGVyYF0uIEl0cyBbYEl0ZW1TZWxlY3Rpb25gXSBkZWNpZGVzLCAgdGhlIGl0ZW0uXQEtIGBtaW50X3RvYDogVGhlIFNjYXJjaXR5IHB1cnNlIGtleSB0aGUgTkZUIGlzIG1pbnRlZCB0by4gQSBwdXJzZSBrZXkgaG9sZHMgb25lIE5GVCwgc29RASAgdGhpcyBoYXMgdG8gYmUgYW4gZW1wdHkgb25lLCBhbmQgaG9sZGVycyBhcmUgbWVhbnQgdG8gdXNlIGEgZnJlc2gga2V5IHRoZXkgY29udHJvbNggIHJhdGhlciB0aGFuIGFuIGFjY291bnQgdGhhdCBhbHJlYWR5IGhvbGRzIHNvbWV0aGluZy5Uc2V0X2NvbGxlY3Rpb25fbWludGVyCAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJHNlbGVjdGlvblUHAVRPcHRpb248SXRlbVNlbGVjdGlvbj4AAkQ9AVJlZ2lzdGVycyBgY29sbGVjdGlvbmAgZm9yIGNsYWltcyB3aXRoIGBzZWxlY3Rpb25gIGRlY2lkaW5nIHRoZSBtaW50ZWQgaXRlbSwgb3Jkd2l0aGRyYXdzIGl0IHdpdGggYE5vbmVgLgBVAVJlZ2lzdHJhdGlvbiBpcyB0aGUgb3duZXIncyBvcHQtaW4gdG8gZGVwb3NpdC1mcmVlIHN1cHBseSBncm93dGg6IHdpdGhvdXQgaXQgbm8gY2xhaW1FAWNhbiBtaW50IGludG8gdGhlIGNvbGxlY3Rpb24uIFdpdGhkcmF3aW5nIHN0b3BzIGZ1cnRoZXIgY2xhaW1zIGFuZCBzcGVuZHMgbm90aGluZyEBYWxyZWFkeSBjbGFpbWVkLiBEZWxldGluZyB0aGUgY29sbGVjdGlvbiBjbGVhcnMgaXRzIHJlZ2lzdHJhdGlvbiB0aHJvdWdoRQFbYHBhbGxldF9zY2FyY2l0eTo6T25Db2xsZWN0aW9uRGVsZXRlZGBdLCBzbyBhbiB1bmtub3duIGNvbGxlY3Rpb24gY2FuIGJlIG5laXRoZXINAXJlZ2lzdGVyZWQgbm9yIHdpdGhkcmF3bi4gQSBjb250cmFjdCBzZWxlY3Rpb24gaXMgdmFsaWRhdGVkIHRocm91Z2hZAVtgQ29sbGVjdGlvblNlbGVjdG9yOjp2YWxpZGF0ZWBdLCBzbyBhbiBhZGRyZXNzIHdpdGggbm8gY29kZSBmYWlscyBoZXJlIHJhdGhlciB0aGFuIG9uQHRoZSBmaXJzdCBjbGFpbS4AJCMjIE9yaWdpboBUaGUgY29sbGVjdGlvbidzIFNjYXJjaXR5IG93bmVyLgA0IyMgUGFyYW1ldGVycwEBLSBgY29sbGVjdGlvbmA6IFRoZSBTY2FyY2l0eSBjb2xsZWN0aW9uIHRvIHJlZ2lzdGVyIG9yIHdpdGhkcmF3Lh0BLSBgc2VsZWN0aW9uYDogSG93IGNsYWltcyBwaWNrIHRoZSBpdGVtIHRvIG1pbnQsIG9yIGBOb25lYCB0byB3aXRoZHJhdy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzPENyZWRpdFRyZWVCYXRjaAQgTWF4VHJlZXMAAAgBLHNvdXJjZV90aW1lKAEMdTY0AAEUdHJlZXM1BwGgQm91bmRlZFZlYzxDcmVkaXRUcmVlRGVsaXZlcnksIE1heFRyZWVzPgAANQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5BwRTAAAEAEUHARhWZWM8VD4AADkHDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hDcmVkaXRUcmVlRGVsaXZlcnkAAAwBIHNlcXVlbmNl/AFQT3B0aW9uPFRyZWVTZXF1ZW5jZT4AARRibG9jazgBKEF3YXJkQmxvY2sAARB0cmVlPQcBSE5mdENsYWltQ3JlZGl0VHJlZQAAPQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzSE5mdENsYWltQ3JlZGl0VHJlZQAAEAEoZ2FtZV9pbmRleDgBDHUzMgABEHJvb3RBBwE8Q3JlZGl0UHJvb2ZOb2RlAAEobGVhZl9jb3VudDgBDHUzMgABJHRpbWVzdGFtcDgBDHUzMgAAQQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzPENyZWRpdFByb29mTm9kZQAABAAIASBbdTg7IDMyXQAARQcAAAI5BwBJBwxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMUdHlwZXMwQ2xhaW1hbnRLaW5kAAEIHEFjY291bnQAAAAYUGVyc29uAAEAAE0HDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQcEUwAABABRBwEYVmVjPFQ+AABRBwAAAkEHAFUHBBhPcHRpb24EBFQBWQcBCBBOb25lAAAAEFNvbWUEAFkHAAABAABZBwxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMUdHlwZXM0SXRlbVNlbGVjdGlvbgABCBhSYW5kb20AAAAgQ29udHJhY3QEAF0HARBIMTYwAAEAAF0HCDxwcmltaXRpdmVfdHlwZXMQSDE2MAAABAAcASBbdTg7IDIwXQAAYQcMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIYcGFsbGV0EENhbGwEBFQAARRUaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzCAE0cmluZ19leHBvbmVudGUHATBSaW5nRXhwb25lbnQAARRyb290c2kHAVxSaW5nUm9vdFVwZGF0ZXNCYXRjaDxUPgAAIEUBU3RvcmVzIHRoZSBpbml0aWFsIHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIgdXBvbiBzdWJzY3JpcHRpb24gc3RhcnQuQQFBY2NlcHRzIG11bHRpLXBhcnQgY29udGludWF0aW9ucyAoc2FtZSBzZXF1ZW5jZSkuIFJlamVjdHMgY2FsbHMgd2l0aCBhIGRpZmZlcmVudFEBc2VxdWVuY2Ugd2hpbGUgc3Vic2NyaXB0aW9uIGlzIGBBY3RpdmVgIOKAlCBhIHN1YnNjcmlwdGlvbiBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuHQFDYW4gb25seSBiZSBjYWxsZWQgYnkgbm90aWZpZXIgWENNIG9yaWdpbiAodmlhIGBFbnN1cmVOb3RpZmllck9yaWdpbmApLgA0IyMgUGFyYW1ldGVyc4AtIGBvcmlnaW5gOiBOb3RpZmllciBYQ00gb3JpZ2luLpwtIGByb290c2A6IEluaXRpYWwgYmF0Y2ggb2YgcmluZyByb290cy5QcHJvY2Vzc19yaW5nX3VwZGF0ZXMEARRiYXRjaGkHAVxSaW5nUm9vdFVwZGF0ZXNCYXRjaDxUPgABFNhQcm9jZXNzIHJpbmcgcm9vdHMgdXBkYXRlcyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllci4ANCMjIFBhcmFtZXRlcnPULSBgb3JpZ2luYDogTXVzdCBiZSB0aGUgWENNIG9yaWdpbiBmcm9tIHRoZSBub3RpZmllci7ELSBgYmF0Y2hgOiBCYXRjaCBvZiByaW5nIHJvb3QgdXBkYXRlcyB0byBwcm9jZXNzLlh0ZXJtaW5hdGVfc3Vic2NyaXB0aW9uAAIocFRlcm1pbmF0ZXMgdGhlIHN1YnNjcmlwdGlvbi4ALQFBY2NlcHRzIGVpdGhlciBub3RpZmllciBvcmlnaW4gKGBFbnN1cmVOb3RpZmllck9yaWdpbmApIG9yIGxvY2FsIGdvdmVybmFuY2UVAW9yaWdpbiAoYEVuc3VyZVRlcm1pbmF0aW9uT3JpZ2luYCkuIFdoZW4gY2FsbGVkIGxvY2FsbHksIHNlbmRzIGFuIFhDTS0BdW5zdWJzY3JpYmUgbWVzc2FnZSB0byB0aGUgbm90aWZpZXIuIFdoZW4gY2FsbGVkIGZyb20gdGhlIG5vdGlmaWVyIChlLmcuIG9uDQFnb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKSwgbm8gWENNIGlzIHNlbnQgYmFjay4gSWRlbXBvdGVudCBpZiBhbHJlYWR5LHRlcm1pbmF0ZWQuADQjIyBQYXJhbWV0ZXJz6C0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4gb3Igcm9vdC9nb3Zlcm5hbmNlIG9yaWdpbi5QcmVwbGF5X21pc3Npbmdfcm9vdHMIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABHGluZGljZXOBBwHYQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heE1pc3NpbmdSb290c1BlckNvbGxlY3Rpb24+AAMU9FNlbmRzIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIgZm9yIG1pc3NpbmcgcmluZyByb290cy4AIQFTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciBhcyBhbiBhdXRob3JpemVkIHRyYW5zYWN0aW9uLiBWYWxpZGF0ZXMpAXRoYXQgdGhlIHN1YnNjcmlwdGlvbiBpcyBhY3RpdmUgYW5kIHRoYXQgdGhlIHByb3ZpZGVkIGluZGljZXMgYXJlIGFjdHVhbGx5rG1pc3NpbmcgYmVmb3JlIHNlbmRpbmcgWENNIHJlcGxheSByZXF1ZXN0cy5YcHVyZ2Vfc3RhbGVfcmluZ19yb290cwAEDNxSZW1vdmVzIGEgcGFnZSBvZiBzdGFsZS1nZW5lcmF0aW9uIGBSaW5nUm9vdHNgIGVudHJpZXMuAPhTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciBhcyBhbiBhdXRob3JpemVkIHRyYW5zYWN0aW9uLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5lBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAABpBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlc20HAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAABtBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEHBFMAAAQAfQcBGFZlYzxUPgAAcQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3B1BwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAB1Bww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgF5BwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdHkHAQRSAAAAHERlbGV0ZWQAAQAAeQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADIAEAAAwAfQcAAAJxBwCBBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABZBAEYVmVjPFQ+AACFBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEYTHVuc2V0X2FsaWFzX2FjY291bnQAARCgUmVtb3ZlIHRoZSBhbGlhcyBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgY3VycmVudGx5IGJvdW5kIHRvIGEgcmluZyBhbGlhcy4gVGhlmG1hcHBpbmcgaXMgcmVtb3ZlZCBpbiBib3RoIGRpcmVjdGlvbnMuRHNldF9hbGlhc19hY2NvdW50GAEUcHJvb2aJBwEoUHJvb2ZPZjxUPgABKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcY29udGV4dAgBHENvbnRleHQAAThwcm9vZl92YWxpZF9hdCgBDHU2NAADMOhMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzLCBvbiBwYXltZW50IG9mIGEgUEdBUyBmZWUuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZDsgdGhlIHNpZ25lciBiZWNvbWVzIHRoZSBib3VuZCBhY2NvdW50LiBUaGUgUEdBUyBmZWVZAShbYENvbmZpZzo6QWxpYXNGZWVgXSkgaXMgYnVybmVkIGZyb20gdGhlIHNpZ25lcidzIFBHQVMgYmFsYW5jZS4gVGhlIGFsaWFzIG11c3QgdmVyaWZ5QQFhZ2FpbnN0IHRoZSBzdXBwbGllZCBgY29sbGVjdGlvbmAvYHJpbmdfaW5kZXhgL2ByaW5nX3JldmlzaW9uYCBpbiBgY29udGV4dGAuIFRoZbxjb2xsZWN0aW9uIG11c3Qgc3RpbGwgYmUgUGVvcGxlIG9yIFBlb3BsZSBMaXRlLgBJAUlmIGEgZGlmZmVyZW50IGFjY291bnQgaXMgYWxyZWFkeSBib3VuZCB0byB0aGUgc2FtZSBhbGlhcyB1bmRlciB0aGlzIGNvbnRleHQsIHRoYXT4bWFwcGluZyBpcyBkcm9wcGVkIGFuZCB0aGUgc3dhcCBpcyBwYWlkIGZvciBieSB0aGUgbmV3IHNpZ25lci4AKQFSZS1wcm92aW5nIHRoZSBzYW1lIGFsaWFzIHVuZGVyIGEgZnJlc2hlciByaW5nIHJldmlzaW9uIHNob3VsZCBpbnN0ZWFkIHVzZcRbYFBhbGxldDo6cmVwcm92ZV9hbGlhc19hY2NvdW50YF0sIHdoaWNoIGlzIGZyZWUuVHJlcHJvdmVfYWxpYXNfYWNjb3VudBABFHByb29miQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmluZ19yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAThwcm9vZl92YWxpZF9hdCgBDHU2NAAEHGEBUmUtcHJvdmUgdGhlIGhvbGRlcidzIGFsaWFzIGFnYWluc3QgYSBmcmVzaGVyIHJpbmcgcmV2aXNpb24sIGZyZWUgb2YgY2hhcmdlIGluIGNhc2Ugb2YgYVhzdWNjZXNzZnVsIG9wZXJhdGlvbnMuABEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBhbmQgbXVzdCBhbHJlYWR5IGhvbGQgYSBhbGlhcyBtYXBwaW5nLiBUaGUZAXByb29mIGlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHN0b3JlZCBjb250ZXh0OyB0aGUgcmVzdWx0aW5nIGFsaWFzIG11c3QRAW1hdGNoIHRoZSBzdG9yZWQgYWxpYXMuIE9ubHkgdGhlIGByZXZpc2lvbmAgYW5kIGByaW5nYCBmaWVsZHMgb2YgdGhlEQFzdG9yZWQgbWFwcGluZyBjaGFuZ2U7IGNvbGxlY3Rpb24sIGNvbnRleHQsIGFuZCBhbGlhcyBhcmUgcHJlc2VydmVkLlByZXBvcnRfc3RhbGVfYWxpYXNlcwQBIGFjY291bnRzjQcBvEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTdGFsZUFsaWFzQmF0Y2g+AAYs8FN0YW1wIFtgU3RhbGVTaW5jZWBdIG9uIGVhY2ggbWFwcGluZyBpbiBgYWNjb3VudHNgLCBzdGFydGluZ3RbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdLgBhAUEgbWFwcGluZyBpcyBzdGFsZSBvbmNlIFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0gc3RvcHMgYWNjZXB0aW5nIGl0cyByZXZpc2lvbiwgd2hpY2ggaXNZAXdoZW4gdGhlIHJpbmcgd2FzIHJlYnVpbHQgYW5kIHRoZSBvbGQgcmV2aXNpb24gcmFuIG91dCBvZiByZXRlbnRpb24gdGhlcmUsIG9yIHdoZW4gdGhlJQFyaW5nIHdhcyBkZWxldGVkLiBTdGFtcGluZyByZW1vdmVzIG5vdGhpbmcsIGJlY2F1c2UgYSBjb25zdW1lciB0aGF0IHJlYWRzMQFbYEFjY291bnRUb0FsaWFzYF0gd2l0aG91dCBjaGVja2luZyB0aGUgcmV2aXNpb24gc3RpbGwgcmVzb2x2ZXMgdGhlIG1hcHBpbmc7LQFbYFBhbGxldDo6cmV0aXJlX3N0YWxlX2FsaWFzZXNgXSByZW1vdmVzIGl0IG9uY2UgdGhlIHJldGVudGlvbiBoYXMgcnVuIG91dC4AWQFgYWNjb3VudHNgIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLCBzbyBvbmUgYWNjb3VudCBjYW5ub3QgYmUgc3RhbXBlZCB0d2ljZTkBaW4gYSBiYXRjaCwgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVtIG11c3QgaG9sZCBhIHN0YWxlIG1hcHBpbmcgd2l0aCBubyBzdGFtcCB5ZXQuUHJldGlyZV9zdGFsZV9hbGlhc2VzBAEgYWNjb3VudHONBwG8Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFN0YWxlQWxpYXNCYXRjaD4ABxRJAVJlbW92ZSBlYWNoIG1hcHBpbmcgaW4gYGFjY291bnRzYCwgd2hvc2UgW2BDb25maWc6Ok1hcHBpbmdSZXRlbnRpb25gXSBoYXMgcnVuIG91dC4AUQFCb3RoIGRpcmVjdGlvbnMgb2YgdGhlIG1hcHBpbmcgZ28sIGFsb25nIHdpdGggdGhlIHN0YW1wIGFuZCB0aGUgYWNjb3VudCdzIHN1ZmZpY2llbnRVAXJlZmVyZW5jZS4gYGFjY291bnRzYCBtdXN0IGJlIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlciwgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVtIG11c3QhAWhvbGQgYSBzdGFsZSBtYXBwaW5nIHN0YW1wZWQgW2BDb25maWc6Ok1hcHBpbmdSZXRlbnRpb25gXSBhZ28gb3IgbG9uZ2VyLmRjbGVhcl9zdGFsZV9hbGlhc19yZXBvcnRzBAEgYWNjb3VudHONBwG8Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFN0YWxlQWxpYXNCYXRjaD4ACCRJAURyb3AgdGhlIFtgU3RhbGVTaW5jZWBdIHN0YW1wIG9mIGVhY2ggbWFwcGluZyBpbiBgYWNjb3VudHNgLCB3aGljaCB2ZXJpZmllcyBhZ2Fpbi4ATQFBIHJldmlzaW9uIGNhbiB2ZXJpZnkgYWdhaW4gYWZ0ZXIgaXQgc3RvcHBlZDogYSBjb2xsZWN0aW9uIHRvcm4gZG93biBhbmQgcmUtY3JlYXRlZFUBdW5kZXIgdGhlIHNhbWUgaWRlbnRpZmllciByZXN0YXJ0cyBpdHMgcmV2aXNpb25zIGF0IHplcm8sIHNvIGEgc3RvcmVkIHJldmlzaW9uIGNhbiBiZfxyZWlzc3VlZC4gRHJvcHBpbmcgdGhlIHN0YW1wIGtlZXBzIHRoZSBuZXh0IHN0YWxlbmVzcyB0byBhIGZ1bGxNAVtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0gcmF0aGVyIHRoYW4gbGV0dGluZyBpdCByZW1vdmUgdGhlIG1hcHBpbmcgb24gdGhlIHNwb3QuAEUBYGFjY291bnRzYCBtdXN0IGJlIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlciwgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVtIG11c3QgaG9sZCBhoHN0YW1wZWQgbWFwcGluZyB3aG9zZSByZXZpc2lvbiB2ZXJpZmllcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuiQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACNBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAB5AQEYVmVjPFQ+AACRBwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAAkBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXSB0cmFuc2FjdGlvbiBleHRlbnNpb24sIHdoaWNoUQF2ZXJpZmllcyB0aGUgcmluZy1WUkYgcHJvb2YgYW5kIHByb2R1Y2VzIGFuIFtgT3JpZ2luOjpDbGFpbUFsaWFzYF0uIFRoZSBvdXRlciBvcmlnaW5VAW11c3QgYmUgYE5vbmVgICh0aGUgZXh0ZW5zaW9uIHJlcGxhY2VzIGl0IHdpdGggdGhlIGxvY2FsIG9yaWdpbik7IGFueSBvdGhlciBvcmlnaW4gaXMkcmVqZWN0ZWQuAFkBYHNsb3RfaW5kZXhgIGlzIHBhcnQgb2YgdGhlIGNhbGwgcGF5bG9hZCBzbyB0aGUgZXh0ZW5zaW9uIGNhbiBkZXJpdmUgdGhlIGNsYWltIGNvbnRleHRRAW9uLWNoYWluIGFuZCBzbyB0aGUgcHJvb2YgYmluZHMgdG8gdGhlIHJlcXVlc3RlZCBzbG90IHZpYSB0aGUgaW5oZXJpdGVkIGltcGxpY2F0aW9uLkRjcmVhdGVfcGdhc19hc3NldAABCFUBQ3JlYXRlIHRoZSBQR0FTIGFzc2V0LiBUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgYXV0aG9yaXplZCBjYWxsIHRoYXQgY2FuIG9ubHkgc3VjY2VlZKRpZiB0aGUgUEdBUyBhc3NldCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LmBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHMIASRkYXlfaW5kZXg4AQx1MzIAASxmaXJzdF9hbGlhcwgBFEFsaWFzAAIk5FJlbW92ZSBvbGQgUEdBUyBjbGFpbSByZWNvcmRzIGZvciBhIHNwZWNpZmljIGBkYXlfaW5kZXhgLgAFAVRoaXMgaXMgYW4gYXV0aG9yaXplZCBleHRyaW5zaWMgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuNQFPbmx5IHJlY29yZHMgZnJvbSBkYXlzIHRoYXQgaGF2ZSBmdWxseSBlbGFwc2VkIChvdXRzaWRlIHRoZSBncmFjZSB3aW5kb3cpIGNhbikBYmUgY2xlYW5lZC4gVXAgdG8gW2BDb25maWc6Ok1heFBnYXNDbGFpbVJlY29yZENsZWFudXBQZXJDYWxsYF0gZW50cmllcyBhcmVEcmVtb3ZlZCBwZXIgY2FsbC4AYQFgZmlyc3RfYWxpYXNgIGlzIHRoZSBmaXJzdCBhbGlhcyBjdXJyZW50bHkgc3RvcmVkIGZvciBgZGF5X2luZGV4YCBhbmQgaXMgaW5jbHVkZWQgaW4gdGhlgHRhZ3MgZm9yIHRyYW5zYWN0aW9uIHVuaXF1ZW5lc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpUHDDRwYWxsZXRfcmV2aXZlGHBhbGxldBBDYWxsBARUAAE4MGV0aF90cmFuc2FjdAQBHHBheWxvYWQYARxWZWM8dTg+AAAwLQFBIHJhdyBFVk0gdHJhbnNhY3Rpb24sIHR5cGljYWxseSBkaXNwYXRjaGVkIGJ5IGFuIEV0aGVyZXVtIEpTT04tUlBDIHNlcnZlci4AMCMgUGFyYW1ldGVycwDsKiBgcGF5bG9hZGA6IFRoZSBlbmNvZGVkIFtgY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRgXS4AGCMgTm90ZQBRAVRoaXMgY2FsbCBjYW5ub3QgYmUgZGlzcGF0Y2hlZCBkaXJlY3RseTsgYXR0ZW1wdGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIGZhaWxlZFEBdHJhbnNhY3Rpb24uIEl0IHNlcnZlcyBhcyBhIHdyYXBwZXIgZm9yIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLiBXaGVuIHN1Ym1pdHRlZCwgdGhlWQFydW50aW1lIGNvbnZlcnRzIGl0IGludG8gYSBbYHNwX3J1bnRpbWU6OmdlbmVyaWM6OkNoZWNrZWRFeHRyaW5zaWNgXSBieSByZWNvdmVyaW5nIHRoZZhzaWduZXIgYW5kIHZhbGlkYXRpbmcgdGhlIHRyYW5zYWN0aW9uLhBjYWxsFAEQZGVzdF0HARBIMTYwAAEUdmFsdWVxAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdHEBATBCYWxhbmNlT2Y8VD4AARBkYXRhGAEcVmVjPHU4PgABQAUBTWFrZXMgYSBjYWxsIHRvIGFuIGFjY291bnQsIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nIHNvbWUgYmFsYW5jZS4AMCMgUGFyYW1ldGVycwCoKiBgZGVzdGA6IEFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIGNhbGwu/CogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gYGRlc3RgLi0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkIGZyb20gdGhlpCAgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuxCogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdC4AJQEqIElmIHRoZSBhY2NvdW50IGlzIGEgc21hcnQtY29udHJhY3QgYWNjb3VudCwgdGhlIGFzc29jaWF0ZWQgY29kZSB3aWxsIGJlrGV4ZWN1dGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4VASogSWYgdGhlIGFjY291bnQgaXMgYSByZWd1bGFyIGFjY291bnQsIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLkUBKiBJZiBubyBhY2NvdW50IGV4aXN0cyBhbmQgdGhlIGNhbGwgdmFsdWUgaXMgbm90IGxlc3MgdGhhbiBgZXhpc3RlbnRpYWxfZGVwb3NpdGAsEQFhIHJlZ3VsYXIgYWNjb3VudCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLixpbnN0YW50aWF0ZRgBFHZhbHVlcQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRxAQEwQmFsYW5jZU9mPFQ+AAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdJkHAUBPcHRpb248W3U4OyAzMl0+AAIU9Eluc3RhbnRpYXRlcyBhIGNvbnRyYWN0IGZyb20gYSBwcmV2aW91c2x5IGRlcGxveWVkIHZtIGJpbmFyeS4ANQFUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdIGJ1dCB3aXRob3V0IHRoZUEBY29kZSBkZXBsb3ltZW50IHN0ZXAuIEluc3RlYWQsIHRoZSBgY29kZV9oYXNoYCBvZiBhbiBvbi1jaGFpbiBkZXBsb3llZCB2bSBiaW5hcnlEbXVzdCBiZSBzdXBwbGllZC5UaW5zdGFudGlhdGVfd2l0aF9jb2RlGAEUdmFsdWVxAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdHEBATBCYWxhbmNlT2Y8VD4AARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdJkHAUBPcHRpb248W3U4OyAzMl0+AANsMQFJbnN0YW50aWF0ZXMgYSBuZXcgY29udHJhY3QgZnJvbSB0aGUgc3VwcGxpZWQgYGNvZGVgIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nNHNvbWUgYmFsYW5jZS4AIQFUaGlzIGRpc3BhdGNoYWJsZSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGNhbGxpbmcgW2BTZWxmOjp1cGxvYWRfY29kZWBdICs9AVtgU2VsZjo6aW5zdGFudGlhdGVgXS4gQnVuZGxpbmcgdGhlbSB0b2dldGhlciBwcm92aWRlcyBlZmZpY2llbmN5IGdhaW5zLiBQbGVhc2XYYWxzbyBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYFNlbGY6OnVwbG9hZF9jb2RlYF0uADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0Li0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkL3Jlc2VydmVkyCAgZnJvbSB0aGUgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuPQEqIGBzYWx0YDogVXNlZCBmb3IgdGhlIGFkZHJlc3MgZGVyaXZhdGlvbi4gSWYgYFNvbWVgIGlzIHN1cHBsaWVkIHRoZW4gYENSRUFURTJg1AlzZW1hbnRpY3MgYXJlIHVzZWQuIElmIGBOb25lYCB0aGVuIGBDUkFURTFgIGlzIHVzZWQuAACUSW5zdGFudGlhdGlvbiBpcyBleGVjdXRlZCBhcyBmb2xsb3dzOgA5AS0gVGhlIHN1cHBsaWVkIGBjb2RlYCBpcyBkZXBsb3llZCwgYW5kIGEgYGNvZGVfaGFzaGAgaXMgY3JlYXRlZCBmb3IgdGhhdCBjb2RlLlkBLSBJZiB0aGUgYGNvZGVfaGFzaGAgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNoYWluIHRoZSB1bmRlcmx5aW5nIGBjb2RlYCB3aWxsIGJlIHNoYXJlZC5JAS0gVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHNlbmRlciwgY29kZV9oYXNoIGFuZCB0aGUgc2FsdC4BAS0gVGhlIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQgaXMgY3JlYXRlZCBhdCB0aGUgY29tcHV0ZWQgYWRkcmVzcy7ALSBUaGUgYHZhbHVlYCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuQQEtIFRoZSBgZGVwbG95YCBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3bHktY3JlYXRlZCBhY2NvdW50LmRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlIAEUdmFsdWWdBwEQVTI1NgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0nQcBEFUyNTYAARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlnQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgAKVD0BU2FtZSBhcyBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpYwA5AUNhbGxpbmcgdGhpcyBkaXNwYXRjaGFibGUgZW5zdXJlcyB0aGF0IHRoZSBvcmlnaW4ncyBub25jZSBpcyBidW1wZWQgb25seSBvbmNlLGEBdmlhIHRoZSBgQ2hlY2tOb25jZWAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBJbiBjb250cmFzdCwgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXU0BYWxzbyBidW1wcyB0aGUgbm9uY2UgYWZ0ZXIgY29udHJhY3QgaW5zdGFudGlhdGlvbiwgc2luY2UgaXQgbWF5IGJlIGludm9rZWQgbXVsdGlwbGWYdGltZXMgd2l0aGluIGEgYmF0Y2ggY2FsbCB0cmFuc2FjdGlvbi4gZXRoX2NhbGwgARBkZXN0XQcBEEgxNjAAARR2YWx1ZZ0HARBVMjU2AAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXSdBwEQVTI1NgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlnQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgALQPhTYW1lIGFzIFtgU2VsZjo6Y2FsbGBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMA6CogYGRlc3RgOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgYWNjb3VudCB0byBiZSBjYWxsZWRNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9u9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNIZXRoX3N1YnN0cmF0ZV9jYWxsCAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgAMKPxFeGVjdXRlcyBhIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgZnJvbSBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4ARQFUaGlzIGRpc3BhdGNoYWJsZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgKipvbmx5KiogdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkZAWxheWVyLiBUaGUgcHJvdmlkZWQgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgdXNpbmcgYFJhd09yaWdpbjo6U2lnbmVkYC4AMCMgUGFyYW1ldGVycwDkKiBgb3JpZ2luYDogTXVzdCBiZSBhbiBbYE9yaWdpbjo6RXRoVHJhbnNhY3Rpb25gXSBvcmlnaW4uwCogYGNhbGxgOiBUaGUgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCB0byBleGVjdXRlLhkBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uLCx1cGxvYWRfY29kZQgBEGNvZGUYARxWZWM8dTg+AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0cQEBMEJhbGFuY2VPZjxUPgAEOOxVcGxvYWQgbmV3IGBjb2RlYCB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgAhAUlmIHRoZSBjb2RlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgYSBkZXBvc2l0IGlzIHJlc2VydmVkIGZyb20gdGhlIGNhbGxlcg0BVGhlIHNpemUgb2YgdGhlIHJlc2VydmUgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgc3VwcGxpZWQgYGNvZGVgLgAYIyBOb3RlAFkBQW55b25lIGNhbiBpbnN0YW50aWF0ZSBhIGNvbnRyYWN0IGZyb20gYW55IHVwbG9hZGVkIGNvZGUgYW5kIHRodXMgcHJldmVudCBpdHMgcmVtb3ZhbC5BAVRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uIGEgY29uc3RydWN0b3IgY291bGQgZW1wbG95IGFjY2VzcyBjb250cm9sIHNvIHRoYXQgaXQgY2FuOQFvbmx5IGJlIGluc3RhbnRpYXRlZCBieSBwZXJtaXNzaW9uZWQgZW50aXRpZXMuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB1cGxvYWRpbmegdGhyb3VnaCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLgBFAUlmIHRoZSByZWZjb3VudCBvZiB0aGUgY29kZSByZWFjaGVzIHplcm8gYWZ0ZXIgdGVybWluYXRpbmcgdGhlIGxhc3QgY29udHJhY3QgdGhhdPRyZWZlcmVuY2VzIHRoaXMgY29kZSwgdGhlIGNvZGUgd2lsbCBiZSByZW1vdmVkIGF1dG9tYXRpY2FsbHkuLHJlbW92ZV9jb2RlBAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgAFEDUBUmVtb3ZlIHRoZSBjb2RlIHN0b3JlZCB1bmRlciBgY29kZV9oYXNoYCBhbmQgcmVmdW5kIHRoZSBkZXBvc2l0IHRvIGl0cyBvd25lci4ARQFBIGNvZGUgY2FuIG9ubHkgYmUgcmVtb3ZlZCBieSBpdHMgb3JpZ2luYWwgdXBsb2FkZXIgKGl0cyBvd25lcikgYW5kIG9ubHkgaWYgaXQgaXNkbm90IHVzZWQgYnkgYW55IGNvbnRyYWN0LiBzZXRfY29kZQgBEGRlc3RdBwEQSDE2MAABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYABigJAVByaXZpbGVnZWQgZnVuY3Rpb24gdGhhdCBjaGFuZ2VzIHRoZSBjb2RlIG9mIGFuIGV4aXN0aW5nIGNvbnRyYWN0LgBFAVRoaXMgdGFrZXMgY2FyZSBvZiB1cGRhdGluZyByZWZjb3VudHMgYW5kIGFsbCBvdGhlciBuZWNlc3Nhcnkgb3BlcmF0aW9ucy4gUmV0dXJuc+hhbiBlcnJvciBpZiBlaXRoZXIgdGhlIGBjb2RlX2hhc2hgIG9yIGBkZXN0YCBkbyBub3QgZXhpc3QuABgjIE5vdGUAMQFUaGlzIGRvZXMgKipub3QqKiBjaGFuZ2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zPQF0aGF0IHRoZSBjb250cmFjdCBhZGRyZXNzIGlzIG5vIGxvbmdlciBkZXJpdmVkIGZyb20gaXRzIGNvZGUgaGFzaCBhZnRlciBjYWxsaW5nSHRoaXMgZGlzcGF0Y2hhYmxlLixtYXBfYWNjb3VudAAHHEEBUmVnaXN0ZXIgdGhlIGNhbGxlcnMgYWNjb3VudCBpZCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGNvbnRyYWN0IGludGVyYWN0aW9ucy4AXQFUaGlzIHdpbGwgZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IG1hcHBlZCBvciBpcyBhIGV0aCBuYXRpdmUgYEFkZHJlc3MyMGAuIEl0IHdpbGwdAXRha2UgYSBkZXBvc2l0IHRoYXQgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgW2BTZWxmOjp1bm1hcF9hY2NvdW50YF0uADkBTm9vcCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkfG9uIGNyZWF0aW9uIHZpYSBbYEF1dG9NYXBwZXJgXS5IYmF0Y2hfbWFwX2FjY291bnRzBAEgYWNjb3VudHN5AQFEVmVjPFQ6OkFjY291bnRJZD4ADQRZAU1hcCBtYW55IGFjY291bnRzIGFuZCBtYWtlIHRoZSBUWCBmcmVlIGlmIGF0IGxlYXN0IDkwJSB3ZXJlIHVubWFwcGVkIG9yIGhlbGQgZGVwb3NpdHMuNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZBwQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAAJ0HCDxwcmltaXRpdmVfdHlwZXMQVTI1NgAABAChBwEgW3U2NDsgNF0AAKEHAAADBAAAACgApQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5GHBhbGxldBBDYWxsBARUAAEUMHJlc2VydmVfbmFtZRgBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABTGNhbmRpZGF0ZV9zaWduYXR1cmW1BAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAAShsaXRlX2xhYmVsqQcBJEJhc2VMYWJlbAABIGNoYXRfa2V5rQcBHENoYXRLZXkAAUxyZXNlcnZlZF9iYXNlX2xhYmVssQcBRE9wdGlvbjxCYXNlTGFiZWw+AAEkc2lnbmVkX2F0KAEMdTY0AABsSQFSZXNlcnZlcyBhIGxpdGUtcGVyc29uIGxhYmVsIG9uIGBEb3Ruc1BvcENvbnRyb2xsZXJgICh2aWEgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmApSQFmb3IgYSBMaXRlIFBlcnNvbiwgYW5kIG9wdGlvbmFsbHkgZW5xdWV1ZXMgYSByZXNlcnZhdGlvbiBmb3IgYSBiYXNlIGxhYmVsIHRoZSB1c2VyoGludGVuZHMgdG8gY2xhaW0gYXMgYSBGdWxsIFBlcnNvbiBsYXRlci4ADQFUaGUgY2FsbGVyIG11c3QgYmUgYW4gYXR0ZXN0ZXIgd2l0aCBhdmFpbGFibGUgYWxsb3dhbmNlLiBUaGUgdXNlcidzKQFzaWduYXR1cmUgcHJvdmVzIHRoZWlyIGNvbnNlbnQgdG8gdGhlIHJlc2VydmF0aW9uIHdpdGggdGhpcyBzcGVjaWZpYyBsYWJlbDRhbmQgYXR0ZXN0ZXIuADAjIFBhcmFtZXRlcnNdAS0gYGNhbmRpZGF0ZWA6IHRoZSBMaXRlIFBlcnNvbidzIGFjY291bnQgZm9yIHdob20gdGhlIGxhYmVsIGlzIGJlaW5nIHJlc2VydmVkLiBBbHNvIHRoZYggIHNpZ25lciBvZiBgY2FuZGlkYXRlX3NpZ25hdHVyZWAu9C0gYGNhbmRpZGF0ZV9zaWduYXR1cmVgOiBzaWduYXR1cmUgb3ZlciB0aGUgYnl0ZXMgcmV0dXJuZWQgYnllASAgYFBhbGxldDo6Y29uc3RydWN0X3Jlc2VydmF0aW9uX21lc3NhZ2VgIOKAlCBhIFNDQUxFLWVuY29kZWQgdHVwbGUgYmluZGluZyB0aGUgYXR0ZXN0ZXIsWQEgIGNhbmRpZGF0ZSwgdGhlIGNhbmRpZGF0ZSdzIGNob3NlbiAqYmFzZSogdXNlcm5hbWUsIGFuZCBjaGF0IGtleS4gVGhlIGRpZ2l0IHN1ZmZpeCBvZjkBICBgbGl0ZV9sYWJlbGAgaXMgKipub3QqKiBwYXJ0IG9mIHRoZSBzaWduZWQgbWVzc2FnZSAodGhlIGRpZ2l0cyBhcmUgYWxsb2NhdGVkSQEgIHNlcnZlci1zaWRlIGFmdGVyIHRoZSBjYW5kaWRhdGUgc2lnbnMsIHNvIHRoZSBjYW5kaWRhdGUgY2Fubm90IGNvbW1pdCB0byB0aGVtIGF0QCAgc2lnbmluZyB0aW1lKS41AS0gYGxpdGVfbGFiZWxgOiB0aGUgbGl0ZS1wZXJzb24gbGFiZWwuIE11c3QgYmUgYDxkbnMtc3RlbT4uPDIrIGRpZ2l0cz5gIChlLmcuSQEgIGBhbGljZS40MmApLCBtYXRjaGluZyBgU3RyaW5nVXRpbHMuaXNMaXRlUGVyc29uTGFiZWxgIGluIHRoZSBjb250cmFjdHMuIE9ubHkgdGhlWQEgIGA8ZG5zLXN0ZW0+YCBwb3J0aW9uIGVudGVycyB0aGUgc2lnbmVkIG1lc3NhZ2U7IHRoZSBkaWdpdHMgcmlkZSBhbG9uZyBhcyBhbiB1bnNpZ25lZBEBICBleHRyaW5zaWMgYXJndW1lbnQgdXNlZCBmb3IgdGhlIGNvbnRyYWN0IGNhbGxkYXRhIGFuZCBzdG9yYWdlIGtleS7QLSBgY2hhdF9rZXlgOiA2NS1ieXRlIHB1YmxpYyBrZXkgdXNlZCBmb3IgRUNESCBjaGF0LlkBLSBgcmVzZXJ2ZWRfYmFzZV9sYWJlbGA6IG9wdGlvbmFsIGJhc2UgbGFiZWwgcmVzZXJ2ZWQgZm9yIHRoZSBjYW5kaWRhdGUgdG8gbGF0ZXIgY2xhaW34ICBhcyBhIEZ1bGwgUGVyc29uLiBNdXN0IGJlIGEgc2luZ2xlIEROUyBsYWJlbCAoZS5nLiBgYWxpY2VgKS5ZAS0gYHNpZ25lZF9hdGA6IFVuaXgtdGltZSBzZWNvbmQgYXQgd2hpY2ggdGhlIGNhbmRpZGF0ZSBzaWduZWQgdGhlIHJlc2VydmF0aW9uIG1lc3NhZ2UuWQEgIFRoZSBzaWduYXR1cmUgaXMgYWNjZXB0ZWQgb25seSBpZiBgc2lnbmVkX2F0IDw9IG5vdyArIE1heEZ1dHVyZVNrZXdTZWNvbmRzYCBhbmQgYG5vd0kBICA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLCB3aGVyZSBgbm93YCBjb21lcyBmcm9tIFtgQ29uZmlnOjpVbml4VGltZWBdLjRyZWdpc3Rlcl9uYW1lDAEMd2hvBAEwVDo6QWNjb3VudElkAAEUbGFiZWypBwEkQmFzZUxhYmVsAAEQbGlua7UHARBMaW5rAAFITQFSZWdpc3RlcnMgYSBmdWxsLXBlcnNvbiBsYWJlbCBvbiBgRG90bnNQb3BDb250cm9sbGVyYCAodmlhIGBSb290R2F0ZXdheURpc3BhdGNoZXJgKWhmb3IgYSBmdWxseSBwcm92ZW4gcGVyc29uLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBbYE9yaWdpbjo6UGVyc29uUmVnaXN0cmF0aW9uYF0sIHByb2R1Y2VkIGJ5IFtgQXNEb3Ruc0dhdGV3YXlgXSBhZnRlckUBaXQgdmVyaWZpZXMgdGhlIHJpbmcgbWVtYmVyc2hpcCBwcm9vZiBhbmQgdGhlIG9mZi1jaGFpbiBzaWduYXR1cmUgZnJvbSBgd2hvYC4gQWxs/GF1dGhlbnRpY2F0aW9uLCBmb3JtYXQgYW5kIHJlcGxheSBjaGVja3MgbGl2ZSBpbiB0aGUgZXh0ZW5zaW9uLgAwIyBQYXJhbWV0ZXJzTQEtIGB3aG9gOiB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIGZ1bGwtcGVyc29uIGxhYmVsOyBpdHMgRVZNLW1hcHBlZCBhZGRyZXNzIGlzIHRoZTkBICByZWNpcGllbnQgb24gdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGNvbnRyYWN0LiBNdXN0IG1hdGNoIHRoZSBgd2hvYCBhbHJlYWR5mCAgYXV0aGVudGljYXRlZCBieSBbYEFzRG90bnNHYXRld2F5YF0uVQEtIGBsYWJlbGA6IHRoZSBmdWxsLXBlcnNvbiBsYWJlbC4gTXVzdCBiZSBhIHNpbmdsZSBETlMgbGFiZWwgKGUuZy4gYGFsaWNlYCksIG1hdGNoaW5nvCAgYFN0cmluZ1V0aWxzLmlzU2luZ2xlTGFiZWxgIGluIHRoZSBjb250cmFjdHMuQQEtIGBsaW5rYDogaG93IHRoZSBmdWxsLXBlcnNvbiBsYWJlbCByZWxhdGVzIHRvIGEgcHJlLWV4aXN0aW5nIGxpdGUtcGVyc29uIGxhYmVsOlUBICAtIGBMaW5rOjpMaXRlVXNlcm5hbWUobGl0ZV9sYWJlbClgIOKAlCBsaW5rcyB0byBhbiBleGlzdGluZyBsaXRlLXBlcnNvbiBsYWJlbCAobXVzdF0BICAgIG1hdGNoIHRoZSBsaXRlIGZvcm1hdCBgPGRucy1zdGVtPi48MisgZGlnaXRzPmApOyB0aGUgY2hhdCBrZXkgaXMgaW5oZXJpdGVkIGZyb20gdGhlPCAgICBsaXRlIGVudHJ5LkkBICAtIGBMaW5rOjpOb25lKGNoYXRfa2V5KWAg4oCUIHN0YW5kYWxvbmUgcmVnaXN0cmF0aW9uIHdpdGggYSBmcmVzaCBFQ0RIIGNoYXQga2V5LnhpbmNyZWFzZV9hdHRlc3RhdGlvbl9hbGxvd2FuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAAgzQR3JhbnRzIGF0dGVzdGF0aW9uIGFsbG93YW5jZSB0byBhbiBhdHRlc3RlciBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLmxjbGVhcl9hdHRlc3RhdGlvbl9hbGxvd2FuY2UEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMM5ENsZWFycyBhbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGZvciBhbiBhdHRlc3RlciBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLlhzZXRfZGlzcGF0Y2hlcl9hZGRyZXNzBAEcYWRkcmVzc10HARBIMTYwAAQMyFNldHMgdGhlIGBSb290R2F0ZXdheURpc3BhdGNoZXJgIGNvbnRyYWN0IGFkZHJlc3MuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGBEaXNwYXRjaGVyQWRkcmVzc01hbmFnZXJgLiBPdmVyd3JpdGVzIGFueSBwcmlvciB2YWx1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzJEJhc2VMYWJlbAAABADdAwFwQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgAArQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzHENoYXRLZXkAAAQAkQEBIFt1ODsgNjVdAACxBwQYT3B0aW9uBARUAakHAQgQTm9uZQAAABBTb21lBACpBwAAAQAAtQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzEExpbmsAAQgwTGl0ZVVzZXJuYW1lBACpBwEkQmFzZUxhYmVsAAAAEE5vbmUEAK0HARxDaGF0S2V5AAEAALkHDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBBDYWxsBARUAAEELGNsZWFuX3VzYWdlBAEYZW50aXR5vQcBTFQ6OlJlc3RyaWN0ZWRFbnRpdHkAAQhJAUFsbG93IHRvIGNsZWFuIHVzYWdlIGFzc29jaWF0ZWQgd2l0aCBhbiBlbnRpdHkgd2hlbiBpdCBpcyB6ZXJvIG9yIHdoZW4gdGhlcmUgaXMgbm+QbG9uZ2VyIGFueSBhbGxvd2FuY2UgZm9yIHRoZSBvcmlnaW4uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0HCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lQFJlc3RyaWN0ZWRFbnRpdHkAAQRcRG90bnNQZXJzb25SZWdpc3RyYXRpb24EAAgBcGluZGl2X3N1cHBvcnQ6OnRyYWl0czo6QWxpYXMAAAAAwQcMLHBhbGxldF9zdWRvGHBhbGxldBBDYWxsBARUAAEUEHN1ZG8EARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi5Uc3Vkb191bmNoZWNrZWRfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQRAQEYV2VpZ2h0AAEUNQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLi0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhlsFN1ZG8gdXNlciB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4cc2V0X2tleQQBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAIIXQFBdXRoZW50aWNhdGVzIHRoZSBjdXJyZW50IHN1ZG8ga2V5IGFuZCBzZXRzIHRoZSBnaXZlbiBBY2NvdW50SWQgKGBuZXdgKSBhcyB0aGUgbmV3IHN1ZG8Qa2V5LhxzdWRvX2FzCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADEE0BQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFNpZ25lZGAgb3JpZ2luIGZyb21AYSBnaXZlbiBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uKHJlbW92ZV9rZXkABAyEUGVybWFuZW50bHkgcmVtb3ZlcyB0aGUgc3VkbyBrZXkuAGwqKlRoaXMgY2Fubm90IGJlIHVuLWRvbmUuKioEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxQcMPHBhbGxldF9zY2FyY2l0eSRleHRlbnNpb24oQXNTY2FyY2l0eQQEVAAABADJBwFYT3B0aW9uPEFzU2NhcmNpdHlJbmZvPgAAyQcEGE9wdGlvbgQEVAHNBwEIEE5vbmUAAAAQU29tZQQAzQcAAAEAAM0HDDxwYWxsZXRfc2NhcmNpdHkkZXh0ZW5zaW9uOEFzU2NhcmNpdHlJbmZvAAEEFEFzTmZ0CAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEsc3RhdGVfbm9uY2UoAQx1NjQAAAAA0QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zOGF1dGhvcml6ZV9jYWxsNEF1dGhvcml6ZUNhbGwEBFQAAAAA1QcMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbhhBc1BnYXMEBFQAAAQA2QcBVE9wdGlvbjxBc1BnYXNJbmZvPFQ+PgAA2QcEGE9wdGlvbgQEVAHdBwEIEE5vbmUAAAAQU29tZQQA3QcAAAEAAN0HDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24oQXNQZ2FzSW5mbwQEVAABBBRDbGFpbRQBFHByb29miQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAAAADhBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkkZXh0ZW5zaW9uOEFzRG90bnNHYXRld2F5BARUAAAEAOUHAXRPcHRpb248QXNEb3Ruc0dhdGV3YXlJbmZvPFQ+PgAA5QcEGE9wdGlvbgQEVAHpBwEIEE5vbmUAAAAQU29tZQQA6QcAAAEAAOkHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheSRleHRlbnNpb25IQXNEb3Ruc0dhdGV3YXlJbmZvBARUAAEEQFJlZ2lzdGVyRnVsbE5hbWUQARRwcm9vZokHAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABJHNpZ25hdHVyZbUEAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQAAAADtBwh8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjhSZXN0cmljdE9yaWdpbgQEVAAABAB1AQEQYm9vbAAA8QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAA9QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAAPkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAAP0HEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAAABCBAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAAUIAQxFcmEAAAUIEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAACQgQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAAA0IEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAAEQgIiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnRQQ2hhcmdlQXNzZXRUeFBheW1lbnQEBFQAAAgBDHRpcHEBATBCYWxhbmNlT2Y8VD4AASBhc3NldF9pZFUDAUhPcHRpb248VDo6QXNzZXRJZD4AABUICHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZRkIARBNb2RlAAAZCAh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAB0IEDRwYWxsZXRfcmV2aXZlDGV2bTB0eF9leHRlbnNpb24kU2V0T3JpZ2luBARUAAAAACEICDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBJQgAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0YSUIASxBY2NvdW50RGF0YQAAJQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQE1AQAQARBmcmVlNQEBHEJhbGFuY2UAASByZXNlcnZlZDUBARxCYWxhbmNlAAEYZnJvemVuNQEBHEJhbGFuY2UAARRmbGFncykIAShFeHRyYUZsYWdzAAApCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQANQEBEHUxMjgAAC0IDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBEQEADAEYbm9ybWFsEQEBBFQAASxvcGVyYXRpb25hbBEBAQRUAAEkbWFuZGF0b3J5EQEBBFQAADEIAAACNQgANQgIMGZyYW1lX3N5c3RlbSxFdmVudFJlY29yZAgERQE5CARUATwADAEUcGhhc2UhCgEUUGhhc2UAARRldmVudDkIAQRFAAEYdG9waWNzwAEYVmVjPFQ+AAA5CAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAfAYU3lzdGVtBAA9CAFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAGUIAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBQcmVpbWFnZQQAaQgBfHBhbGxldF9wcmVpbWFnZTo6RXZlbnQ8UnVudGltZT4ABQAkU2NoZWR1bGVyBABtCAGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4ABgAoUGFyYW1ldGVycwQAdQgBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgAHAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQApQgBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAIADROZXR3b3JrU3VmZml4BACpCAGsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4OjpFdmVudDxSdW50aW1lPgCaACBCYWxhbmNlcwQArQgBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BADpCAGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BADtCAHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQAcVmVzdGluZwQA8QgBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAOABhDbGFpbXMEAPUIAXRwYWxsZXRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQA+QgBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EAP0IAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAABCQGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAAUJAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBAAVCQGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAERUb0t1c2FtYVhjbVJvdXRlcgQAGQkBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEAB0JAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBAAlCQHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFdmVudDxSdW50aW1lPgAkABxVdGlsaXR5BAApCQFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBAAtCQF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQAMQkBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAcSW5kaWNlcwQAOQkBeHBhbGxldF9pbmRpY2VzOjpFdmVudDxSdW50aW1lPgArABhBc3NldHMEAD0JAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEAEEJAXhwYWxsZXRfdW5pcXVlczo6RXZlbnQ8UnVudGltZT4AMwAQTmZ0cwQARQkBbHBhbGxldF9uZnRzOjpFdmVudDxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBABNCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBABRCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAFUJAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAaQkBHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEAG0JARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFNjYXJjaXR5BABxCQF8cGFsbGV0X3NjYXJjaXR5OjpFdmVudDxSdW50aW1lPgA6ACBUcmVhc3VyeQQAdQkBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAeQkBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4APQAkUmVmZXJlbmRhBAB9CQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4APgAkV2hpdGVsaXN0BACFCQGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AQAAgQm91bnRpZXMEAJUJAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEAJkJAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAnQkBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAKEJAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEQADERhcAQApQkBaHBhbGxldF9kYXA6OkV2ZW50PFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQArQkBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXZlbnQ8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBAC5CQGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAwQkB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQAxQkBoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXZlbnQ8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BADJCQG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFdmVudDxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EANEJAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkV2ZW50PFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADVCQH4cGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjp2ZXJpZmllcjo6RXZlbnQ8UnVudGltZT4AVgBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBADlCQHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkV2ZW50PFJ1bnRpbWU+AFgAHFN0YWtpbmcEAOkJAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXZlbnQ8UnVudGltZT4AWQAkTmZ0Q2xhaW1zBAD5CQGcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXM6OkV2ZW50PFJ1bnRpbWU+AGAARE1lbWJlcnNTdWJzY3JpYmVyBAABCgG8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlcjo6RXZlbnQ8UnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQABQoBrGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6RXZlbnQ8UnVudGltZT4AYgAQUGdhcwQACQoBhGluZGl2X3BhbGxldF9wZ2FzOjpFdmVudDxSdW50aW1lPgBjABhSZXZpdmUEAA0KAXRwYWxsZXRfcmV2aXZlOjpFdmVudDxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEABEKAahpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6RXZlbnQ8UnVudGltZT4AmABET3JpZ2luUmVzdHJpY3Rpb24EABUKAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFdmVudDxSdW50aW1lPgCZABBTdWRvBAAZCgFscGFsbGV0X3N1ZG86OkV2ZW50PFJ1bnRpbWU+APsANFBnYXNBbGxvd2FuY2UEAB0KAZRwYWxsZXRfcGdhc19hbGxvd2FuY2U6OkV2ZW50PFJ1bnRpbWU+APwAAD0IDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZvQQgBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvck0IATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb0EIAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbnUBARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9yTQgBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQuQQgIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0EQEBGFdlaWdodAABFGNsYXNzRQgBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZUkIARBQYXlzAABFCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAASQgMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAATQgIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAUQgBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAFUIAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAFkIATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAXQgBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBABhCAEkVHJpZUVycm9yAA4AAFEICChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAAVQgIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAWQgINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAABdCAgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAAYQgMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAGUIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZBEBARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNomQcBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0aQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXZlbnQEBFQAAQwUTm90ZWQEARBoYXNoPAEcVDo6SGFzaAAABGhBIHByZWltYWdlIGhhcyBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQEARBoYXNoPAEcVDo6SGFzaAABBHhBIHByZWltYWdlIGhhcyBiZWVuIHJlcXVlc3RlZC4cQ2xlYXJlZAQBEGhhc2g8ARxUOjpIYXNoAAIEbEEgcHJlaW1hZ2UgaGFzIGJlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0IDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFdmVudAQEVAABKCRTY2hlZHVsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgAABFBTY2hlZHVsZWQgc29tZSB0YXNrLiBDYW5jZWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEETENhbmNlbGVkIHNvbWUgdGFzay4oRGlzcGF0Y2hlZAwBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZJkHAUBPcHRpb248VGFza05hbWU+AAEYcmVzdWx0cQgBOERpc3BhdGNoUmVzdWx0AAIEVERpc3BhdGNoZWQgc29tZSB0YXNrLiBSZXRyeVNldBABEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZJkHAUBPcHRpb248VGFza05hbWU+AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4AARxyZXRyaWVzDAEIdTgAAwSgU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjhSZXRyeUNhbmNlbGxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZJkHAUBPcHRpb248VGFza05hbWU+AAQErENhbmNlbCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay48Q2FsbFVuYXZhaWxhYmxlCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkmQcBQE9wdGlvbjxUYXNrTmFtZT4ABQQpAVRoZSBjYWxsIGZvciB0aGUgcHJvdmlkZWQgaGFzaCB3YXMgbm90IGZvdW5kIHNvIHRoZSB0YXNrIGhhcyBiZWVuIGFib3J0ZWQuOFBlcmlvZGljRmFpbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkmQcBQE9wdGlvbjxUYXNrTmFtZT4ABgQ9AVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmVuZXdlZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jay4sUmV0cnlGYWlsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSZBwFAT3B0aW9uPFRhc2tOYW1lPgAHCF0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZXRyaWVkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrIG9yIHRoZXJlnHdhcyBub3QgZW5vdWdoIHdlaWdodCB0byByZXNjaGVkdWxlIGl0LlRQZXJtYW5lbnRseU92ZXJ3ZWlnaHQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSZBwFAT3B0aW9uPFRhc2tOYW1lPgAIBPBUaGUgZ2l2ZW4gdGFzayBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgc2luY2UgaXQgaXMgb3ZlcndlaWdodC5AQWdlbmRhSW5jb21wbGV0ZQQBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgAJBIRBZ2VuZGEgaXMgaW5jb21wbGV0ZSBmcm9tIGB3aGVuYC4EMEV2ZW50cyB0eXBlLnEIBBhSZXN1bHQIBFQBEARFAU0IAQgIT2sEABAAAAAADEVycgQATQgAAAEAAHUIDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQURXZlbnQEBFQAAQQcVXBkYXRlZAwBDGtleXkIAcQ8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6S2V5BGRUaGUga2V5IHRoYXQgd2FzIHVwZGF0ZWQuASRvbGRfdmFsdWWNCAHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EfFRoZSBvbGQgdmFsdWUgYmVmb3JlIHRoaXMgY2FsbC4BJG5ld192YWx1ZY0IAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR4VGhlIG5ldyB2YWx1ZSBhZnRlciB0aGlzIGNhbGwuAAxQQSBQYXJhbWV0ZXIgd2FzIHNldC4AvElzIGFsc28gZW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSB3YXMgbm90IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0eQgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVQUnVudGltZVBhcmFtZXRlcnNLZXkAARA8U3Rha2luZ0VsZWN0aW9uBAB9CAHFATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAJFNjaGVkdWxlcgQAgQgBqQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAME1lc3NhZ2VRdWV1ZQQAhQgBuQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQACADRBbGlhc0FjY291bnRzBACJCAG9ATxkeW5hbWljX3BhcmFtczo6YWxpYXNfYWNjb3VudHM6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQADAAB9CBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFBhcmFtZXRlcnNLZXkAARwsU2lnbmVkUGhhc2UEANwBLFNpZ25lZFBoYXNlAAAAUE1heFNpZ25lZFN1Ym1pc3Npb25zBADkAVBNYXhTaWduZWRTdWJtaXNzaW9ucwABADRVbnNpZ25lZFBoYXNlBADoATRVbnNpZ25lZFBoYXNlAAIAKE1pbmVyUGFnZXMEAOwBKE1pbmVyUGFnZXMAAwBETWF4RWxlY3RpbmdWb3RlcnMEAPABRE1heEVsZWN0aW5nVm90ZXJzAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEAPQBWFRhcmdldFNuYXBzaG90UGVyQmxvY2sABQA4TWF4RXJhRHVyYXRpb24EAPgBOE1heEVyYUR1cmF0aW9uAAYAAIEIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRQYXJhbWV0ZXJzS2V5AAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAA0TWF4aW11bVdlaWdodAQACQEBNE1heGltdW1XZWlnaHQAAQAAhQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTRQYXJhbWV0ZXJzS2V5AAEIPE1heE9uSW5pdFdlaWdodAQAGQEBPE1heE9uSW5pdFdlaWdodAAAADxNYXhPbklkbGVXZWlnaHQEACEBATxNYXhPbklkbGVXZWlnaHQAAQAAiQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHM0UGFyYW1ldGVyc0tleQABCCBBbGlhc0ZlZQQAKQEBIEFsaWFzRmVlAAAAXFN0YWxlQWxpYXNTd2VlcEludGVydmFsBAA5AQFcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAQAAjQgEGE9wdGlvbgQEVAGRCAEIEE5vbmUAAAAQU29tZQQAkQgAAAEAAJEICHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lWFJ1bnRpbWVQYXJhbWV0ZXJzVmFsdWUAARA8U3Rha2luZ0VsZWN0aW9uBACVCAHNATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAAAkU2NoZWR1bGVyBACZCAGxATxkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQABADBNZXNzYWdlUXVldWUEAJ0IAcEBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQACADRBbGlhc0FjY291bnRzBAChCAHFATxkeW5hbWljX3BhcmFtczo6YWxpYXNfYWNjb3VudHM6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAMAAJUIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAJkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjxQYXJhbWV0ZXJzVmFsdWUAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEADgBDHUzMgAAADRNYXhpbXVtV2VpZ2h0BAARAQEYV2VpZ2h0AAEAAJ0IEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAEAAKEIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zOGFsaWFzX2FjY291bnRzPFBhcmFtZXRlcnNWYWx1ZQABCCBBbGlhc0ZlZQQAMQEBPE9wdGlvbjxCYWxhbmNlPgAAAFxTdGFsZUFsaWFzU3dlZXBJbnRlcnZhbAQAOAEsQmxvY2tOdW1iZXIAAQAApQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3JhAQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSpCAxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBRFdmVudAQEVAABBEBOZXR3b3JrU3VmZml4U2V0CAEMb2xkaQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAABDG5ld2kBAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAARsVGhlIG5ldHdvcmsgc3VmZml4IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0rQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWU1AQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzsQgBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnQ1AQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudDUBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudDUBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkNQEBKFQ6OkJhbGFuY2UAAQxuZXc1AQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb261CAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29utQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvbrUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvbrUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZDUBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb261CAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQA5QgBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAAC1CAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABLCBQcmVpbWFnZQQAuQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBAC9CAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAMEIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AIFNjYXJjaXR5BADFCAFscGFsbGV0X3NjYXJjaXR5OjpIb2xkUmVhc29uADoASE11bHRpQXNzZXRCb3VudGllcwQAyQgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAM0IAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQA0QgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEANUIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBADZCAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQA3QgBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQA4QgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAAuQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAAC9CAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAADBCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAADFCAw8cGFsbGV0X3NjYXJjaXR5GHBhbGxldChIb2xkUmVhc29uAAEEOFN0b3JhZ2VEZXBvc2l0AAAAAMkIDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0KEhvbGRSZWFzb24EBEkAAQQ4Q3VyYXRvckRlcG9zaXQAAAAAzQgMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAA0QgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQoSG9sZFJlYXNvbgABBERTdGFraW5nRGVsZWdhdGlvbgAAAADVCAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAA2QgQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0KEhvbGRSZWFzb24AAQRAU2lnbmVkU3VibWlzc2lvbgAAAADdCBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldChIb2xkUmVhc29uAAEEHFN0YWtpbmcAAAAA4QgMNHBhbGxldF9yZXZpdmUYcGFsbGV0KEhvbGRSZWFzb24AAQxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAAAVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABADhBZGRyZXNzTWFwcGluZwACAADlCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAA6QgMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlNQEBMEJhbGFuY2VPZjxUPgABDHRpcDUBATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV07QgMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAQx0aXA1AQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLkRBc3NldFJlZnVuZEZhaWxlZAQBSG5hdGl2ZV9hbW91bnRfa2VwdDUBATBCYWxhbmNlT2Y8VD4AAQT0QSBzd2FwIG9mIHRoZSByZWZ1bmQgaW4gbmF0aXZlIGN1cnJlbmN5IGJhY2sgdG8gYXNzZXQgZmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEIDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXZlbnQEBFQAAQw4VmVzdGluZ0NyZWF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIAAASQQSB2ZXN0aW5nIHNjaGVkdWxlIGhhcyBiZWVuIGNyZWF0ZWQuOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABIHVudmVzdGVkNQEBMEJhbGFuY2VPZjxUPgABCFEBVGhlIGFtb3VudCB2ZXN0ZWQgaGFzIGJlZW4gdXBkYXRlZC4gVGhpcyBjb3VsZCBpbmRpY2F0ZSBhIGNoYW5nZSBpbiBmdW5kcyBhdmFpbGFibGUuJQFUaGUgYmFsYW5jZSBnaXZlbiBpcyB0aGUgYW1vdW50IHdoaWNoIGlzIGxlZnQgdW52ZXN0ZWQgKGFuZCB0aHVzIGxvY2tlZCkuQFZlc3RpbmdDb21wbGV0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAIEnEFuIFxbYWNjb3VudFxdIGhhcyBiZWNvbWUgZnVsbHkgdmVzdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPUIEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEV2ZW50BARUAAEEHENsYWltZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAUBldGhlcmV1bV9hZGRyZXNzlQEBPEV0aGVyZXVtQWRkcmVzcwABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAARoU29tZW9uZSBjbGFpbWVkIHNvbWUgRE9Ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5CAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXN5AQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudDUBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9CAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQBCQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFCQwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZQkJAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbhkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEcbWVzc2FnZREDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW4ZAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABFGVycm9yEQkBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW4ZAgEgTG9jYXRpb24AARRlcnJvckEDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlNQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQRAQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodBEBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvblUDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW4ZAgEgTG9jYXRpb24AARhhc3NldHOJAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdB0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbhkCASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb24ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvckEDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27FAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW4ZAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllchkCASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVyVQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEQY29zdB0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABEGNvc3QdAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARBjb3N0HQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nGQIBIExvY2F0aW9uAAEQZmVlcx0DARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luGQIBIExvY2F0aW9uAAEYYXNzZXRziQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXIZAgEgTG9jYXRpb24AARh0YXJnZXQZAgEgTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXIZAgEgTG9jYXRpb24AARh0YXJnZXQZAgEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXQZAgEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0CQkQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZBEBARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWQRAQEYV2VpZ2h0AAEUZXJyb3INCQFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQADQkBQEluc3RydWN0aW9uRXJyb3IAAgAADQkQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvckEDARRFcnJvcgAAEQkQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAFQkMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAACQkBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBkJDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBRFdmVudAgEVAAESQABCGhEZWxpdmVyeUZlZUZhY3RvckRlY3JlYXNlZAQBJG5ld192YWx1ZTUFASRGaXhlZFUxMjgElE5ldyB2YWx1ZSBvZiB0aGUgYERlbGl2ZXJ5RmVlRmFjdG9yYC4ABJxEZWxpdmVyeSBmZWUgZmFjdG9yIGhhcyBiZWVuIGRlY3JlYXNlZC5oRGVsaXZlcnlGZWVGYWN0b3JJbmNyZWFzZWQEASRuZXdfdmFsdWU1BQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAQScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBpbmNyZWFzZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQkMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvciEJAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZBEBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc3UBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbs0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbs0DAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAEQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAAlCQyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFdmVudAQEVAABCCxNZXNzYWdlU2VudBABGG9yaWdpbhkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEcbWVzc2FnZREDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAAQ8QW4gWENNIHdhcyBzZW50aEV4cG9ydE9wZXJhdGluZ01vZGVDaGFuZ2VkBAEQbW9kZdUDATRPcGVyYXRpbmdNb2RlAAEERFNldCBPcGVyYXRpbmdNb2RlBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQkMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvck0IATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvck0IATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHRxCAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvck0IATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0JDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50LQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQtBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHRxCAE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludC0EAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEJDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHRxCAE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZTkEATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleO0DAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGU5BAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjtAwEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlOQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGU5BAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5kNQkBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1CQgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAAA5CQw4cGFsbGV0X2luZGljZXMYcGFsbGV0FEV2ZW50BARUAAEQNEluZGV4QXNzaWduZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAABHRBIGFjY291bnQgaW5kZXggd2FzIGFzc2lnbmVkLihJbmRleEZyZWVkBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQS8QSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyZWVkIHVwICh1bmFzc2lnbmVkKS4sSW5kZXhGcm96ZW4IARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABDHdobwQBMFQ6OkFjY291bnRJZAACBOhBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJvemVuIHRvIGl0cyBjdXJyZW50IGFjY291bnQgSUQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEsb2xkX2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAME6EEgZGVwb3NpdCB0byByZXNlcnZlIGFuIGluZGV4IGhhcyBiZWVuIHBva2VkL3JlY29uc2lkZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ9CQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZTUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzSQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEJDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXZlbnQIBFQABEkAAWwcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuGEZyb3plbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEXFNvbWUgYGl0ZW1gIHdhcyBmcm96ZW4uGFRoYXdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEXFNvbWUgYGl0ZW1gIHdhcyB0aGF3ZWQuQENvbGxlY3Rpb25Gcm96ZW4EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAgEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBmcm96ZW4uQENvbGxlY3Rpb25UaGF3ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyB0aGF3ZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQEFwcHJvdmVkVHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5ESXRlbVN0YXR1c0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA4EEQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YV0EAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAAPBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEAS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuLE1ldGFkYXRhU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhXQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbnUBARBib29sABEEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uPE1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABIEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNZBAE4VmVjPFQ6Okl0ZW1JZD4AEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4wQXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtled0DAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZXgBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABQEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtled0DAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFQQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbuABXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABYEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFwSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZTUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgAYBIxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGluc3RhbmNlLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGQScVGhlIHByaWNlIGZvciB0aGUgaW5zdGFuY2Ugd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkABoETEFuIGl0ZW0gd2FzIGJvdWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRFCQwscGFsbGV0X25mdHMYcGFsbGV0FEV2ZW50CARUAARJAAGYHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLkhJdGVtVHJhbnNmZXJMb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBIhBbiBgaXRlbWAgYmVjYW1lIG5vbi10cmFuc2ZlcmFibGUuUEl0ZW1UcmFuc2ZlclVubG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwR4QW4gYGl0ZW1gIGJlY2FtZSB0cmFuc2ZlcmFibGUuUEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhdQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXN1AQEQYm9vbAAIBKhgaXRlbWAgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyB3ZXJlIGxvY2tlZC5AQ29sbGVjdGlvbkxvY2tlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGxvY2tlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEUYWRtaW6pAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxmcmVlemVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AVHJhbnNmZXJBcHByb3ZlZBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABIGRlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLlRBbGxBcHByb3ZhbHNDYW5jZWxsZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EnEFsbCBhcHByb3ZhbHMgb2YgYW4gaXRlbSBnb3QgY2FuY2VsbGVkLlxDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADwQBAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGNvbmZpZyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABAEtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAARBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC48SXRlbU1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhWQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgASBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLkxJdGVtTWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtc1kEAThWZWM8VDo6SXRlbUlkPgAUBCEBVGhlIGRlcG9zaXQgZm9yIGEgc2V0IG9mIGBpdGVtYHMgd2l0aGluIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIHVwZGF0ZWQuMEF0dHJpYnV0ZVNldBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZVkBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgABJG5hbWVzcGFjZZEEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAVBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AASRuYW1lc3BhY2WRBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFgQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAubEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAFwTMQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgYWRkZWQudEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAYBNRBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyByZW1vdmVkLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAZBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABoEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24udENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbBKxNaW50IHNldHRpbmdzIGZvciBhIGNvbGxlY3Rpb24gaGFkIGNoYW5nZWQubE5leHRDb2xsZWN0aW9uSWRJbmNyZW1lbnRlZAQBHG5leHRfaWTgAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcBAEBRXZlbnQgZ2V0cyBlbWl0dGVkIHdoZW4gdGhlIGBOZXh0Q29sbGVjdGlvbklkYCBnZXRzIGluY3JlbWVudGVkLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AB0EfFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaXRlbS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAB4EjFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkAB8ETEFuIGl0ZW0gd2FzIGJvdWdodC4cVGlwU2VudBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEgcmVjZWl2ZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQFYRGVwb3NpdEJhbGFuY2VPZjxULCBJPgAgBDxBIHRpcCB3YXMgc2VudC4sU3dhcENyZWF0ZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlpQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACEEiEFuIGBpdGVtYCBzd2FwIGludGVudCB3YXMgY3JlYXRlZC40U3dhcENhbmNlbGxlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WlBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIgRcVGhlIHN3YXAgd2FzIGNhbmNlbGxlZC4sU3dhcENsYWltZWQgATxzZW50X2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW50X2l0ZW04ASRUOjpJdGVtSWQAATxzZW50X2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAAUxyZWNlaXZlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0cmVjZWl2ZWRfaXRlbTgBJFQ6Okl0ZW1JZAABTHJlY2VpdmVkX2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAARRwcmljZaUEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAjBGhUaGUgc3dhcCBoYXMgYmVlbiBjbGFpbWVkLlhQcmVTaWduZWRBdHRyaWJ1dGVzU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRuYW1lc3BhY2WRBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AJAT8TmV3IGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCBmb3IgYW4gYGl0ZW1gIG9mIHRoZSBgY29sbGVjdGlvbmAuSFBhbGxldEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRhdHRyaWJ1dGVJCQGEUGFsbGV0QXR0cmlidXRlczxUOjpDb2xsZWN0aW9uSWQ+AAEUdmFsdWVZAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AJQhNAUEgbmV3IGF0dHJpYnV0ZSBpbiB0aGUgYFBhbGxldGAgbmFtZXNwYWNlIHdhcyBzZXQgZm9yIHRoZSBgY29sbGVjdGlvbmAgb3IgYW4gYGl0ZW1gZHdpdGhpbiB0aGF0IGBjb2xsZWN0aW9uYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJCQwscGFsbGV0X25mdHMUdHlwZXNAUGFsbGV0QXR0cmlidXRlcwQwQ29sbGVjdGlvbklkATgBCCxVc2VkVG9DbGFpbQQAOAEwQ29sbGVjdGlvbklkAAAAQFRyYW5zZmVyRGlzYWJsZWQAAQAATQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZBkCAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAASByZXNlcnZlc80EAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFEJDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXNJBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0VQkMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFdmVudAQEVAABGCxQb29sQ3JlYXRlZBABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQEiFRoZSBhY2NvdW50IHRoYXQgY3JlYXRlZCB0aGUgcG9vbC4BHHBvb2xfaWRZCQEkVDo6UG9vbElkCEkBVGhlIHBvb2wgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhc3NldHMgbWF5IG5vdCBiZfR0aGUgc2FtZSBhcyB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBjcmVhdGUgcG9vbCBleHRyaW5zaWMuATBwb29sX2FjY291bnQEATBUOjpBY2NvdW50SWQEbFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAhBAVRoZSBpZCBvZiB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHdpbGwgYmUgbWludGVkIHdoZW4gYXNzZXRzIGFyZSBhZGRlZCB0byB0aGlzFHBvb2wuAAQdAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQ3JlYXRlUG9vbGAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuOExpcXVpZGl0eUFkZGVkHAEMd2hvBAEwVDo6QWNjb3VudElkBLhUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHRha2VuIGZyb20uARxtaW50X3RvBAEwVDo6QWNjb3VudElkBNRUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgbWludGVkIHRvLgEccG9vbF9pZFkJASRUOjpQb29sSWQE4FRoZSBwb29sIGlkIG9mIHRoZSBwb29sIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgYWRkZWQgdG8uAUBhbW91bnQxX3Byb3ZpZGVkNQEBKFQ6OkJhbGFuY2UE5FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgFAYW1vdW50Ml9wcm92aWRlZDUBAShUOjpCYWxhbmNlBOhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIG1pbnRlZC4BPGxwX3Rva2VuX21pbnRlZDUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgbWludGVkIG9mIHRoYXQgaWQuAQQlAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQWRkTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC5ATGlxdWlkaXR5UmVtb3ZlZCABDHdobwQBMFQ6OkFjY291bnRJZATcVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIGJ1cm5lZCBmcm9tLgEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEccG9vbF9pZFkJASRUOjpQb29sSWQEwFRoZSBwb29sIGlkIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgcmVtb3ZlZCBmcm9tLgEcYW1vdW50MTUBAShUOjpCYWxhbmNlBPRUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuARxhbW91bnQyNQEBKFQ6OkJhbGFuY2UE+FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIGJ1cm5lZC4BPGxwX3Rva2VuX2J1cm5lZDUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgYnVybmVkIG9mIHRoYXQgaWQuATh3aXRoZHJhd2FsX2ZlZV0JARxQZXJtaWxsBHRMaXF1aWRpdHkgd2l0aGRyYXdhbCBmZWUgKCUpLgIEMQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYFJlbW92ZUxpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuMFN3YXBFeGVjdXRlZBQBDHdobwQBMFQ6OkFjY291bnRJZAS0V2hpY2ggYWNjb3VudCB3YXMgdGhlIGluc3RpZ2F0b3Igb2YgdGhlIHN3YXAuARxzZW5kX3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dDUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoYQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkDCDUBQXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4gQm90aCBgU3dhcEV4YWN0VG9rZW5Gb3JUb2tlbmDYYW5kIGBTd2FwVG9rZW5Gb3JFeGFjdFRva2VuYCB3aWxsIGdlbmVyYXRlIHRoaXMgZXZlbnQuSFN3YXBDcmVkaXRFeGVjdXRlZAwBJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dDUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoYQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkEBLxBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLhxUb3VjaGVkCAEccG9vbF9pZFkJASRUOjpQb29sSWQETFRoZSBJRCBvZiB0aGUgcG9vbC4BDHdobwQBMFQ6OkFjY291bnRJZASEVGhlIGFjY291bnQgaW5pdGlhdGluZyB0aGUgdG91Y2guBQQNAVBvb2wgaGFzIGJlZW4gdG91Y2hlZCBpbiBvcmRlciB0byBmdWxmaWxsIG9wZXJhdGlvbmFsIHJlcXVpcmVtZW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRZCQAABAgZAhkCAF0JDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAA4AQx1MzIAAGEJAAACZQkAZQkAAAQIGQI1AQBpCQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFdmVudAgEVAAESQABCBhGcm96ZW4MAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAAABhUaGF3ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0JDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbrUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudDUBAShUOjpCYWxhbmNlAAAExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YC4gUmVsZWFzZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb261CAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABBMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAuGEJ1cm5lZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbrUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxCQw8cGFsbGV0X3NjYXJjaXR5GHBhbGxldBRFdmVudAQEVAABQERDb2xsZWN0aW9uQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABOxBIGNvbGxlY3Rpb24gd2FzIGNyZWF0ZWQgYW5kIGFzc2lnbmVkIHRvIGl0cyBpbml0aWFsIG93bmVyLmBDb2xsZWN0aW9uT3duZXJOb21pbmF0ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAE0cGVuZGluZ19vd25lcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABBPhUaGUgY29sbGVjdGlvbiBvd25lciBub21pbmF0ZWQgb3IgY2xlYXJlZCBhIHByb3NwZWN0aXZlIG93bmVyLlhDb2xsZWN0aW9uT3duZXJDaGFuZ2VkDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJG9sZF9vd25lcgQBMFQ6OkFjY291bnRJZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAACBFUBQSBub21pbmF0ZWQgYWNjb3VudCBjbGFpbWVkIHRoZSBjb2xsZWN0aW9uIGFuZCBhc3N1bWVkIGl0cyBhZ2dyZWdhdGUgc3RvcmFnZSBkZXBvc2l0LkRDb2xsZWN0aW9uRGVsZXRlZAQBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAAwQNAUFuIGVtcHR5IGNvbGxlY3Rpb24gd2FzIGRlbGV0ZWQgYW5kIGl0cyByZW1haW5pbmcgZGVwb3NpdCByZWxlYXNlZC4sSXRlbURlZmluZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAAEBPhBbiBpbW11dGFibGUgaXRlbSBkZWZpbml0aW9uIHdhcyBhc3NpZ25lZCB3aXRoaW4gYSBjb2xsZWN0aW9uLixJdGVtRGVsZXRlZAgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAUE/EFuIHVudXNlZCBpdGVtIGRlZmluaXRpb24gd2FzIGRlbGV0ZWQgYW5kIGl0cyBkZXBvc2l0IHJlbGVhc2VkLhhNaW50ZWQQASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABFG93bmVyBAEwVDo6QWNjb3VudElkAAYEvEFuIGluc3RhbmNlIHdhcyBtaW50ZWQgaW50byBhbiBlbXB0eSBwdXJzZSBrZXkuLFRyYW5zZmVycmVkEAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAHBORBIGhvbGRlciBtb3ZlZCBhbiBpbnN0YW5jZSBmcm9tIG9uZSBwdXJzZSBrZXkgdG8gYW5vdGhlci5ARm9yY2VUcmFuc2ZlcnJlZBABIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQACAQRAUEgY29sbGVjdGlvbiBvd25lciBmb3JjZWQgYW4gaW5zdGFuY2UgZnJvbSBvbmUgcHVyc2Uga2V5IHRvIGFub3RoZXIuGEJ1cm5lZAwBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAJBBEBQW4gaW5zdGFuY2Ugd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQgZnJvbSB0aGUgcHVyc2Uga2V5IHRoYXQgaGVsZCBpdC5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AAoEAQFBIGNvbGxlY3Rpb24tbGV2ZWwgbWV0YWRhdGEgZGVmYXVsdCB3YXMgaW5zZXJ0ZWQgb3Igb3ZlcndyaXR0ZW4uZENvbGxlY3Rpb25NZXRhZGF0YVJlbW92ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4ACwTAQSBjb2xsZWN0aW9uLWxldmVsIG1ldGFkYXRhIGRlZmF1bHQgd2FzIHJlbW92ZWQuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4ADATwQW4gaXRlbS1sZXZlbCBtZXRhZGF0YSBvdmVycmlkZSB3YXMgaW5zZXJ0ZWQgb3Igb3ZlcndyaXR0ZW4uTEl0ZW1NZXRhZGF0YVJlbW92ZWQMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AA0EsEFuIGl0ZW0tbGV2ZWwgbWV0YWRhdGEgb3ZlcnJpZGUgd2FzIHJlbW92ZWQuTEluc3RhbmNlTWV0YWRhdGFTZXQIASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgAOBAEBQW4gaW5zdGFuY2UtbGV2ZWwgbWV0YWRhdGEgb3ZlcnJpZGUgd2FzIGluc2VydGVkIG9yIG92ZXJ3cml0dGVuLlxJbnN0YW5jZU1ldGFkYXRhUmVtb3ZlZAgBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AA8EwEFuIGluc3RhbmNlLWxldmVsIG1ldGFkYXRhIG92ZXJyaWRlIHdhcyByZW1vdmVkLhAdAUV2ZXJ5IGluc3RhbmNlIGV2ZW50IG5hbWVzIGl0cyBjb2xsZWN0aW9uIGFuZCBib3RoIHB1cnNlIGtleXMgaW52b2x2ZWQuAFUBT2ZmLWNoYWluIGNvbnN1bWVycyByZWNvbnN0cnVjdCBwZXItY29sbGVjdGlvbiB2aWV3cyBmcm9tIHRoZXNlIGV2ZW50cyBhbG9uZSwgYW5kIHRoZSUBc3RhdGUgYSBsb29rdXAgd291bGQgbmVlZCBpcyBhbHJlYWR5IGdvbmUgYnkgdGhlIHRpbWUgYSBidXJuIGlzIG9ic2VydmVkLnUJDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEV2ZW50CARUAARJAAEwIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZzUBATxCYWxhbmNlT2Y8VCwgST4AAATkV2UgaGF2ZSBlbmRlZCBhIHNwZW5kIHBlcmlvZCBhbmQgd2lsbCBub3cgYWxsb2NhdGUgZnVuZHMuHEF3YXJkZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARRhd2FyZDUBATxCYWxhbmNlT2Y8VCwgST4AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGFsbG9jYXRlZC4UQnVybnQEASxidXJudF9mdW5kczUBATxCYWxhbmNlT2Y8VCwgST4AAgSIU29tZSBvZiBvdXIgZnVuZHMgaGF2ZSBiZWVuIGJ1cm50LiBSb2xsb3ZlcgQBQHJvbGxvdmVyX2JhbGFuY2U1AQE8QmFsYW5jZU9mPFQsIEk+AAMELQFTcGVuZGluZyBoYXMgZmluaXNoZWQ7IHRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHJvbGxzIG92ZXIgdW50aWwgbmV4dCBzcGVuZC4cRGVwb3NpdAQBFHZhbHVlNQEBPEJhbGFuY2VPZjxULCBJPgAEBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBkZXBvc2l0ZWQuNFNwZW5kQXBwcm92ZWQMAThwcm9wb3NhbF9pbmRleDgBNFByb3Bvc2FsSW5kZXgAARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABQScQSBuZXcgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuPFVwZGF0ZWRJbmFjdGl2ZQgBLHJlYWN0aXZhdGVkNQEBPEJhbGFuY2VPZjxULCBJPgABLGRlYWN0aXZhdGVkNQEBPEJhbGFuY2VPZjxULCBJPgAGBMxUaGUgaW5hY3RpdmUgZnVuZHMgb2YgdGhlIHBhbGxldCBoYXZlIGJlZW4gdXBkYXRlZC5IQXNzZXRTcGVuZEFwcHJvdmVkGAEUaW5kZXg4AShTcGVuZEluZGV4AAEoYXNzZXRfa2luZPUEATBUOjpBc3NldEtpbmQAARhhbW91bnQ1AQFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyefkEAThUOjpCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204AVBCbG9ja051bWJlckZvcjxULCBJPgABJGV4cGlyZV9hdDgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAcEtEEgbmV3IGFzc2V0IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLkBBc3NldFNwZW5kVm9pZGVkBAEUaW5kZXg4AShTcGVuZEluZGV4AAgEdEFuIGFwcHJvdmVkIHNwZW5kIHdhcyB2b2lkZWQuEFBhaWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAJBExBIHBheW1lbnQgaGFwcGVuZWQuNFBheW1lbnRGYWlsZWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC44U3BlbmRQcm9jZXNzZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACwhNAUEgc3BlbmQgd2FzIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlLiBJdCBtaWdodCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5cHBhaWQgb3IgaXQgbWF5IGhhdmUgZXhwaXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR5CQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFdmVudAgEVAAESQABFCREZWxlZ2F0ZWQMAAQBMFQ6OkFjY291bnRJZAAABAEwVDo6QWNjb3VudElkAADtAwE0Q2xhc3NPZjxULCBJPgAABB0BQW4gYWNjb3VudCBoYXMgZGVsZWdhdGVkIHRoZWlyIHZvdGUgdG8gYW5vdGhlciBhY2NvdW50LiBcW3dobywgdGFyZ2V0XF0sVW5kZWxlZ2F0ZWQIAAQBMFQ6OkFjY291bnRJZAAA7QMBNENsYXNzT2Y8VCwgST4AAQT0QW4gXFthY2NvdW50XF0gaGFzIGNhbmNlbGxlZCBhIHByZXZpb3VzIGRlbGVnYXRpb24gb3BlcmF0aW9uLhRWb3RlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGUBBQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgACBFBBbiBhY2NvdW50IGhhcyB2b3RlZCxWb3RlUmVtb3ZlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGUBBQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgADBFxBIHZvdGUgaGFzIGJlZW4gcmVtb3ZlZDBWb3RlVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAQERQFUaGUgbG9ja3VwIHBlcmlvZCBvZiBhIGNvbnZpY3Rpb24gdm90ZSBleHBpcmVkLCBhbmQgdGhlIGZ1bmRzIGhhdmUgYmVlbiB1bmxvY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR9CQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXZlbnQIBFQABEkAAUAkU3VibWl0dGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWwVBQFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4ABIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gc3VibWl0dGVkLlREZWNpc2lvbkRlcG9zaXRQbGFjZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4BBJRUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiBwbGFjZWQuXERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAgScVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuOERlcG9zaXRTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAwRsQSBkZXBvc2l0IGhhcyBiZWVuIHNsYXNoZWQuPERlY2lzaW9uU3RhcnRlZBABFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsFQUBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uARR0YWxseYEJASBUOjpUYWxseQS4VGhlIGN1cnJlbnQgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgQEvEEgcmVmZXJlbmR1bSBoYXMgbW92ZWQgaW50byB0aGUgZGVjaWRpbmcgcGhhc2UuOENvbmZpcm1TdGFydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgUAOENvbmZpcm1BYm9ydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgYAJENvbmZpcm1lZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5gQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgcEIQFBIHJlZmVyZW5kdW0gaGFzIGVuZGVkIGl0cyBjb25maXJtYXRpb24gcGhhc2UgYW5kIGlzIHJlYWR5IGZvciBhcHByb3ZhbC4gQXBwcm92ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uCAQNAUEgcmVmZXJlbmR1bSBoYXMgYmVlbiBhcHByb3ZlZCBhbmQgaXRzIHByb3Bvc2FsIGhhcyBiZWVuIHNjaGVkdWxlZC4gUmVqZWN0ZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseYEJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4JBKxBIHByb3Bvc2FsIGhhcyBiZWVuIHJlamVjdGVkIGJ5IHJlZmVyZW5kdW0uIFRpbWVkT3V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmBCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCgTYQSByZWZlcmVuZHVtIGhhcyBiZWVuIHRpbWVkIG91dCB3aXRob3V0IGJlaW5nIGRlY2lkZWQuJENhbmNlbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5gQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgsEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjYW5jZWxsZWQuGEtpbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5gQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgwEdEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBraWxsZWQuZFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnQ1AQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4NBKRUaGUgc3VibWlzc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLixNZXRhZGF0YVNldAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g8ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg4EnE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gc2V0LjxNZXRhZGF0YUNsZWFyZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoPAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4PBKxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcxRUYWxseQgUVm90ZXMBNQEUVG90YWwAAAwBEGF5ZXM1AQEUVm90ZXMAARBuYXlzNQEBFFZvdGVzAAEcc3VwcG9ydDUBARRWb3RlcwAAhQkMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEV2ZW50BARUAAEMPENhbGxXaGl0ZWxpc3RlZAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAABYV2hpdGVsaXN0ZWRDYWxsUmVtb3ZlZAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkV2hpdGVsaXN0ZWRDYWxsRGlzcGF0Y2hlZAgBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAARhyZXN1bHSJCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJCQQYUmVzdWx0CARUAY0JBEUBkQkBCAhPawQAjQkAAAAADEVycgQAkQkAAAEAAI0JDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBvc3REaXNwYXRjaEluZm8AAAgBNGFjdHVhbF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AASBwYXlzX2ZlZUkIARBQYXlzAACRCQgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAY0JAAgBJHBvc3RfaW5mb40JARBJbmZvAAEUZXJyb3JNCAE0RGlzcGF0Y2hFcnJvcgAAlQkMPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATA4Qm91bnR5UHJvcG9zZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAEUE5ldyBib3VudHkgcHJvcG9zYWwuOEJvdW50eVJlamVjdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABEGJvbmQ1AQE8QmFsYW5jZU9mPFQsIEk+AAEEzEEgYm91bnR5IHByb3Bvc2FsIHdhcyByZWplY3RlZDsgZnVuZHMgd2VyZSBzbGFzaGVkLkhCb3VudHlCZWNhbWVBY3RpdmUEARRpbmRleDgBLEJvdW50eUluZGV4AAIEuEEgYm91bnR5IHByb3Bvc2FsIGlzIGZ1bmRlZCBhbmQgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAADBJRBIGJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuNEJvdW50eUNsYWltZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0NQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAQEjEEgYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuOEJvdW50eUNhbmNlbGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAFBFhBIGJvdW50eSBpcyBjYW5jZWxsZWQuOEJvdW50eUV4dGVuZGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAGBHBBIGJvdW50eSBleHBpcnkgaXMgZXh0ZW5kZWQuOEJvdW50eUFwcHJvdmVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAHBFRBIGJvdW50eSBpcyBhcHByb3ZlZC48Q3VyYXRvclByb3Bvc2VkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAgEdEEgYm91bnR5IGN1cmF0b3IgaXMgcHJvcG9zZWQuREN1cmF0b3JVbmFzc2lnbmVkBAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgACQR8QSBib3VudHkgY3VyYXRvciBpcyB1bmFzc2lnbmVkLjxDdXJhdG9yQWNjZXB0ZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACgR0QSBib3VudHkgY3VyYXRvciBpcyBhY2NlcHRlZC4wRGVwb3NpdFBva2VkEAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAASBwcm9wb3NlcgQBMFQ6OkFjY291bnRJZAABLG9sZF9kZXBvc2l0NQEBPEJhbGFuY2VPZjxULCBJPgABLG5ld19kZXBvc2l0NQEBPEJhbGFuY2VPZjxULCBJPgALBIBBIGJvdW50eSBkZXBvc2l0IGhhcyBiZWVuIHBva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkJDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEV2ZW50BARUAAEQFEFkZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAARgQSBjaGlsZC1ib3VudHkgaXMgYWRkZWQuHEF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEErEEgY2hpbGQtYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS4cQ2xhaW1lZBABFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAIEpEEgY2hpbGQtYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuIENhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAwRwQSBjaGlsZC1ib3VudHkgaXMgY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJ0JDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXZlbnQEBFQAAQxAQXNzZXRSYXRlQ3JlYXRlZAgBKGFzc2V0X2tpbmT1BAEwVDo6QXNzZXRLaW5kAAEQcmF0ZTUFASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmT1BAEwVDo6QXNzZXRLaW5kAAEAQEFzc2V0UmF0ZVVwZGF0ZWQMAShhc3NldF9raW5k9QQBMFQ6OkFzc2V0S2luZAABDG9sZDUFASRGaXhlZFUxMjgAAQxuZXc1BQEkRml4ZWRVMTI4AAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQkMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQURXZlbnQIBFQABEkAATQ0Qm91bnR5Q3JlYXRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAATgQSBuZXcgYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQ2hpbGRCb3VudHlDcmVhdGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAQT4QSBuZXcgY2hpbGQtYm91bnR5IHdhcyBjcmVhdGVkIGFuZCBmdW5kaW5nIGhhcyBiZWVuIGluaXRpYXRlZC5IQm91bnR5QmVjYW1lQWN0aXZlDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQAAgToVGhlIGN1cmF0b3IgYWNjZXB0ZWQgcm9sZSBhbmQgY2hpbGQtL2JvdW50eSBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABLGJlbmVmaWNpYXJ5+QQBOFQ6OkJlbmVmaWNpYXJ5AAMEtEEgY2hpbGQtL2JvdW50eSB3YXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LlRCb3VudHlQYXlvdXRQcm9jZXNzZWQUARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEoYXNzZXRfa2luZPUEATBUOjpBc3NldEtpbmQAARR2YWx1ZTUBAShUOjpCYWxhbmNlAAEsYmVuZWZpY2lhcnn5BAE4VDo6QmVuZWZpY2lhcnkABAT0UGF5b3V0IHBheW1lbnQgdG8gdGhlIGJlbmVmaWNpYXJ5IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlhCb3VudHlGdW5kaW5nUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAFBKxGdW5kaW5nIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuVEJvdW50eVJlZnVuZFByb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABgSoUmVmdW5kIHBheW1lbnQgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuOEJvdW50eUNhbmNlbGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAHBHhBIGNoaWxkLS9ib3VudHkgd2FzIGNhbmNlbGxlZC5EQ3VyYXRvclVuYXNzaWduZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAgEnEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyB1bmFzc2lnbmVkLjxDdXJhdG9yUHJvcG9zZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAJBJRBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgcHJvcG9zZWQuNFBheW1lbnRGYWlsZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLhBQYWlkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgALBJhBIHBheW1lbnQgaGFwcGVuZWQgYW5kIGNhbiBiZSBjaGVja2VkLlBCb3VudHlWYWx1ZUluY3JlYXNlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASRvbGRfdmFsdWU1AQEoVDo6QmFsYW5jZQABJG5ld192YWx1ZTUBAShUOjpCYWxhbmNlAAwEuEEgYm91bnR5J3MgdmFsdWUgd2FzIGluY3JlYXNlZCBieSBpdHMgY3VyYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSlCQwocGFsbGV0X2RhcBhwYWxsZXQURXZlbnQEBFQAARA4SXNzdWFuY2VNaW50ZWQIATB0b3RhbF9taW50ZWQ1AQEwQmFsYW5jZU9mPFQ+BIRUb3RhbCBhbW91bnQgbWludGVkIGluIHRoaXMgZHJpcC4BOGVsYXBzZWRfbWlsbGlzKAEMdTY0BIhFbGFwc2VkIHRpbWUgKG1zKSBzaW5jZSBsYXN0IGRyaXAuAATcSW5mbGF0aW9uIGRyaXBwZWQgYW5kIGRpc3RyaWJ1dGVkIHRvIGJ1ZGdldCByZWNpcGllbnRzLlxCdWRnZXRBbGxvY2F0aW9uVXBkYXRlZAQBLGFsbG9jYXRpb25zQQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAEeFRoZSBuZXcgYnVkZ2V0IGFsbG9jYXRpb24gbWFwLgEEtEJ1ZGdldCBhbGxvY2F0aW9uIHdhcyB1cGRhdGVkIHZpYSBnb3Zlcm5hbmNlLjhTdGFnaW5nRHJhaW5lZAQBGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4EPEFtb3VudCBkcmFpbmVkLgIEAQFGdW5kcyB3ZXJlIGRyYWluZWQgZnJvbSB0aGUgc3RhZ2luZyBhY2NvdW50IGludG8gdGhlIERBUCBidWZmZXIuKFVuZXhwZWN0ZWQEAKkJAThVbmV4cGVjdGVkS2luZAADBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkJDChwYWxsZXRfZGFwGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCChNaW50RmFpbGVkAAAAOEVsYXBzZWRDbGFtcGVkCAE4YWN0dWFsX2VsYXBzZWQoAQx1NjQAARxjZWlsaW5nKAEMdTY0AAEAAK0JDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wOAEMdTMyAAEUY2hpbGQ4AQx1MzIAARxjb21wdXRlsQkBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAEEtFNvbWUgYWNjb3VudCBnb3Qgc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LlRBdXRvTWlncmF0aW9uRmluaXNoZWQAAgSEVGhlIGF1dG8gbWlncmF0aW9uIHRhc2sgZmluaXNoZWQuGEhhbHRlZAQBFGVycm9ytQkBIEVycm9yPFQ+AAME7E1pZ3JhdGlvbiBnb3QgaGFsdGVkIGR1ZSB0byBhbiBlcnJvciBvciBtaXNzLWNvbmZpZ3VyYXRpb24uBHBJbm5lciBldmVudHMgb2YgdGhpcyBwYWxsZXQusQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXRATWlncmF0aW9uQ29tcHV0ZQABCBhTaWduZWQAAAAQQXV0bwABAAC1CQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFcnJvcgQEVAABGDxNYXhTaWduZWRMaW1pdHMAAASATWF4IHNpZ25lZCBsaW1pdHMgbm90IHJlc3BlY3RlZC4oS2V5VG9vTG9uZwABHLRBIGtleSB3YXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgbWF4aW11bS4AEQFUaGlzIG1lYW5zIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYWx0ZWQgYXQgdGhlIGN1cnJlbnQgW2BQcm9ncmVzc2BdIGFuZAEBY2FuIGJlIHJlc3VtZWQgd2l0aCBhIGxhcmdlciBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlLiEBUmV0cnlpbmcgd2l0aCB0aGUgc2FtZSBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlIHdpbGwgbm90IHdvcmsuRQFUaGUgdmFsdWUgc2hvdWxkIG9ubHkgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGEgc3RvcmFnZSBtaWdyYXRpb24gZm9yIHRoZSBjdXJyZW50bHmQc3RvcmVkIFtgY3JhdGU6OlByb2dyZXNzOjpMYXN0S2V5YF0uOE5vdEVub3VnaEZ1bmRzAAIElHN1Ym1pdHRlciBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcy4oQmFkV2l0bmVzcwADBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLmRTaWduZWRNaWdyYXRpb25Ob3RBbGxvd2VkAAQEJQFTaWduZWQgbWlncmF0aW9uIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgdGhlIG1heGltdW0gbGltaXQgaXMgbm90IHNldCB5ZXQuMEJhZENoaWxkUm9vdAAFBGBCYWQgY2hpbGQgcm9vdCBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuuQkMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFdmVudAQEVAABXBxDcmVhdGVkCAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAAABGBBIHBvb2wgaGFzIGJlZW4gY3JlYXRlZC4YQm9uZGVkEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGGJvbmRlZDUBATBCYWxhbmNlT2Y8VD4AARhqb2luZWR1AQEQYm9vbAABBJRBIG1lbWJlciBoYXMgYmVjYW1lIGJvbmRlZCBpbiBhIHBvb2wuHFBhaWRPdXQMARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgACBIxBIHBheW91dCBoYXMgYmVlbiBtYWRlIHRvIGEgbWVtYmVyLiBVbmJvbmRlZBQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgABGHBvaW50czUBATBCYWxhbmNlT2Y8VD4AAQxlcmE4ASBFcmFJbmRleAADLJhBIG1lbWJlciBoYXMgdW5ib25kZWQgZnJvbSB0aGVpciBwb29sLgA5AS0gYGJhbGFuY2VgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJhbGFuY2Ugb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBoYXMgYmVlblUBICByZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQgKHRoZSBhcmd1bWVudCBvZiB0aGUgYHVuYm9uZGAgdHJhbnNhY3Rpb24pIGZyb20gdGhlIGJvbmRlZBwgIHBvb2wuRQEtIGBwb2ludHNgIGlzIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBhcyBhIHJlc3VsdCBvZiBgYmFsYW5jZWAgYmVpbmfAZGlzc29sdmVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5ib25kaW5nIHBvb2wu5C0gYGVyYWAgaXMgdGhlIGVyYSBpbiB3aGljaCB0aGUgYmFsYW5jZSB3aWxsIGJlIHVuYm9uZGVkLlUBSW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZXNlIHZhbHVlcyB3aWxsIG1hdGNoLiBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZU0BbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHVuYm9uZGluZyBwb29sIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSBhbW91bnRkcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkLiRXaXRoZHJhd24QARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAQYnEEgbWVtYmVyIGhhcyB3aXRoZHJhd24gZnJvbSB0aGVpciBwb29sLgAhAVRoZSBnaXZlbiBudW1iZXIgb2YgYHBvaW50c2AgaGF2ZSBiZWVuIGRpc3NvbHZlZCBpbiByZXR1cm4gb2YgYGJhbGFuY2VgLgBZAVNpbWlsYXIgdG8gYFVuYm9uZGVkYCBldmVudCwgaW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZSByYXRpbyBvZiBwb2ludCB0byBiYWxhbmNlKHdpbGwgYmUgMS4kRGVzdHJveWVkBAEccG9vbF9pZDgBGFBvb2xJZAAFBGhBIHBvb2wgaGFzIGJlZW4gZGVzdHJveWVkLjBTdGF0ZUNoYW5nZWQIARxwb29sX2lkOAEYUG9vbElkAAEkbmV3X3N0YXRldQUBJFBvb2xTdGF0ZQAGBHxUaGUgc3RhdGUgb2YgYSBwb29sIGhhcyBjaGFuZ2VkNE1lbWJlclJlbW92ZWQMARxwb29sX2lkOAEYUG9vbElkAAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAFAcmVsZWFzZWRfYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4ABxSYQSBtZW1iZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGEgcG9vbC4AUQFUaGUgcmVtb3ZhbCBjYW4gYmUgdm9sdW50YXJ5ICh3aXRoZHJhd24gYWxsIHVuYm9uZGVkIGZ1bmRzKSBvciBpbnZvbHVudGFyeSAoa2lja2VkKS5JAUFueSBmdW5kcyB0aGF0IGFyZSBzdGlsbCBkZWxlZ2F0ZWQgKGkuZS4gZGFuZ2xpbmcgZGVsZWdhdGlvbikgYXJlIHJlbGVhc2VkIGFuZCBhcmWIcmVwcmVzZW50ZWQgYnkgYHJlbGVhc2VkX2JhbGFuY2VgLjBSb2xlc1VwZGF0ZWQMARByb290qQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABJG5vbWluYXRvcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgAICFUBVGhlIHJvbGVzIG9mIGEgcG9vbCBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUgZ2l2ZW4gbmV3IHJvbGVzLiBOb3RlIHRoYXQgdGhlIGRlcG9zaXRvckRjYW4gbmV2ZXIgY2hhbmdlLixQb29sU2xhc2hlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgAJBA0BVGhlIGFjdGl2ZSBiYWxhbmNlIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlBVbmJvbmRpbmdQb29sU2xhc2hlZAwBHHBvb2xfaWQ4ARhQb29sSWQAAQxlcmE4ASBFcmFJbmRleAABHGJhbGFuY2U1AQEwQmFsYW5jZU9mPFQ+AAoEJQFUaGUgdW5ib25kIHBvb2wgYXQgYGVyYWAgb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuVFBvb2xDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxjdXJyZW50jQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4ACwS0QSBwb29sJ3MgY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQuYFBvb2xNYXhDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbkUFARxQZXJiaWxsAAwE1EEgcG9vbCdzIG1heGltdW0gY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQufFBvb2xDb21taXNzaW9uQ2hhbmdlUmF0ZVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGWVBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+AA0EzEEgcG9vbCdzIGNvbW1pc3Npb24gYGNoYW5nZV9yYXRlYCBoYXMgYmVlbiBjaGFuZ2VkLpBQb29sQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbpkFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAOBMhQb29sIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLlRQb29sQ29tbWlzc2lvbkNsYWltZWQIARxwb29sX2lkOAEYUG9vbElkAAEoY29tbWlzc2lvbjUBATBCYWxhbmNlT2Y8VD4ADwSEUG9vbCBjb21taXNzaW9uIGhhcyBiZWVuIGNsYWltZWQuZE1pbkJhbGFuY2VEZWZpY2l0QWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAQBMhUb3BwZWQgdXAgZGVmaWNpdCBpbiBmcm96ZW4gRUQgb2YgdGhlIHJld2FyZCBwb29sLmBNaW5CYWxhbmNlRXhjZXNzQWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgARBLxDbGFpbWVkIGV4Y2VzcyBmcm96ZW4gRUQgb2YgYWYgdGhlIHJld2FyZCBwb29sLnBNZW1iZXJDbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEocGVybWlzc2lvbokFATxDbGFpbVBlcm1pc3Npb24AEgTIQSBwb29sIG1lbWJlcidzIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC48TWV0YWRhdGFVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAATBHhBIHBvb2wncyBtZXRhZGF0YSB3YXMgdXBkYXRlZC5IUG9vbE5vbWluYXRpb25NYWRlCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAUCFkBQSBwb29sJ3Mgbm9taW5hdGluZyBhY2NvdW50IChvciB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudCkgaGFzIG5vbWluYXRlZCBhIHZhbGlkYXRvciBzZXRYb24gYmVoYWxmIG9mIHRoZSBwb29sLlBQb29sTm9taW5hdG9yQ2hpbGxlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFQS4VGhlIHBvb2wgaXMgY2hpbGxlZCBpLmUuIG5vIGxvbmdlciBub21pbmF0aW5nLkxHbG9iYWxQYXJhbXNVcGRhdGVkGAE0bWluX2pvaW5fYm9uZDUBATBCYWxhbmNlT2Y8VD4AATxtaW5fY3JlYXRlX2JvbmQ1AQEwQmFsYW5jZU9mPFQ+AAEkbWF4X3Bvb2xz4AEsT3B0aW9uPHUzMj4AASxtYXhfbWVtYmVyc+ABLE9wdGlvbjx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2zgASxPcHRpb248dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbr0JATxPcHRpb248UGVyYmlsbD4AFgQBAUdsb2JhbCBwYXJhbWV0ZXJzIHJlZ3VsYXRpbmcgbm9taW5hdGlvbiBwb29scyBoYXZlIGJlZW4gdXBkYXRlZC4EWEV2ZW50cyBvZiB0aGlzIHBhbGxldC69CQQYT3B0aW9uBARUAUUFAQgQTm9uZQAAABBTb21lBABFBQAAAQAAwQkMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEV2ZW50CARUAARJAAEIIFJlYmFnZ2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJvbSgBIFQ6OlNjb3JlAAEIdG8oASBUOjpTY29yZQAABKRNb3ZlZCBhbiBhY2NvdW50IGZyb20gb25lIGJhZyB0byBhbm90aGVyLjBTY29yZVVwZGF0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAASRuZXdfc2NvcmUoASBUOjpTY29yZQABBNhVcGRhdGVkIHRoZSBzY29yZSBvZiBzb21lIGFjY291bnQgdG8gdGhlIGdpdmVuIGFtb3VudC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTFCQxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFdmVudAQEVAABECREZWxlZ2F0ZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAAR8RnVuZHMgZGVsZWdhdGVkIGJ5IGEgZGVsZWdhdG9yLiBSZWxlYXNlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABBHhGdW5kcyByZWxlYXNlZCB0byBhIGRlbGVnYXRvci4cU2xhc2hlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgACBHxGdW5kcyBzbGFzaGVkIGZyb20gYSBkZWxlZ2F0b3IuSE1pZ3JhdGVkRGVsZWdhdGlvbgwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgADBMRVbmNsYWltZWQgZGVsZWdhdGlvbiBmdW5kcyBtaWdyYXRlZCB0byBkZWxlZ2F0b3IuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQURXZlbnQEBFQAARBUU2Vzc2lvblJlcG9ydFJlY2VpdmVkEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFQYWN0aXZhdGlvbl90aW1lc3RhbXC1BQFIT3B0aW9uPCh1NjQsIHUzMik+AAFcdmFsaWRhdG9yX3BvaW50c19jb3VudHM4AQx1MzIAASBsZWZ0b3ZlcnUBARBib29sAAAEjEEgc2FpZCBzZXNzaW9uIHJlcG9ydCB3YXMgcmVjZWl2ZWQuPE9mZmVuY2VSZWNlaXZlZAgBNHNsYXNoX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAThvZmZlbmNlc19jb3VudDgBDHUzMgABBGxBIG5ldyBvZmZlbmNlIHdhcyByZXBvcnRlZC4gRmVlc1BhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmZWVzNQEBMEJhbGFuY2VPZjxUPgACDAEBRmVlcyB3ZXJlIGNoYXJnZWQgZm9yIGEgdXNlciBvcGVyYXRpb24gKHNldF9rZXlzIG9yIHB1cmdlX2tleXMpLgAZAVRoZSBmZWUgaW5jbHVkZXMgYm90aCBYQ00gZGVsaXZlcnkgZmVlIGFuZCByZWxheSBjaGFpbiBleGVjdXRpb24gY29zdC4oVW5leHBlY3RlZAQAzQkBOFVuZXhwZWN0ZWRLaW5kAAMIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAARhwU2Vzc2lvblJlcG9ydEludGVncml0eUZhaWxlZAAAAGxWYWxpZGF0b3JTZXRJbnRlZ3JpdHlGYWlsZWQAAQA4U2Vzc2lvblNraXBwZWQAAgBcU2Vzc2lvbkFscmVhZHlQcm9jZXNzZWQAAwBYVmFsaWRhdG9yU2V0U2VuZEZhaWxlZAAEAExWYWxpZGF0b3JTZXREcm9wcGVkAAUAANEJDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEV2ZW50BARUAAEURFBoYXNlVHJhbnNpdGlvbmVkCAEQZnJvbdEFASBQaGFzZTxUPgRAdGhlIHNvdXJjZSBwaGFzZQEIdG/RBQEgUGhhc2U8VD4EQFRoZSB0YXJnZXQgcGhhc2UACF0BQSBwaGFzZSB0cmFuc2l0aW9uIGhhcHBlbmVkLiBPbmx5IGNoZWNrcyBtYWpvciBjaGFuZ2VzIGluIHRoZSB2YXJpYW50cywgbm90IG1pbm9yIGlubmVyHHZhbHVlcy54VW5leHBlY3RlZFRhcmdldFNuYXBzaG90RmFpbGVkAAEEgFRhcmdldCBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQudFVuZXhwZWN0ZWRWb3RlclNuYXBzaG90RmFpbGVkAAIEfFZvdGVyIHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZC6QVW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbk91dE9mV2VpZ2h0EAEQZnJvbdEFASBQaGFzZTxUPgABCHRv0QUBIFBoYXNlPFQ+AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAADBPhQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBwcm9jZWVkIGR1ZSB0byBiZWluZyBvdXQgb2Ygd2VpZ2h0LnRVbmV4cGVjdGVkUGhhc2VUcmFuc2l0aW9uSGFsdAgBIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQABAQVAVBoYXNlIHRyYW5zaXRpb24gY291bGQgbm90IGV2ZW4gYmVnaW4gYmVjYXNldSBvZiBiZWluZyBvdXQgb2Ygd2VpZ2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNUJFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0FEV2ZW50BARUAAEMSFZlcmlmaWNhdGlvbkZhaWxlZAgAOAEkUGFnZUluZGV4AADZCQFARmVhc2liaWxpdHlFcnJvcgAAEKBBIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgdGhlIGdpdmVuIHBhZ2UuAFUBTk9URTogaWYgdGhlIGluZGV4IGlzIDAsIHRoZW4gdGhpcyBjb3VsZCBtZWFuIGVpdGhlciB0aGUgZmVhc2liaWxpdHkgb2YgdGhlIGxhc3QgcGFnZQUBd2FzIHdyb25nLCBvciB0aGUgZmluYWwgY2hlY2tzIG9mIGBmaW5hbGl6ZV92ZXJpZmljYXRpb25gIGZhaWxlZC4gVmVyaWZpZWQIADgBJFBhZ2VJbmRleAAAOAEMdTMyAAEIWQFUaGUgZ2l2ZW4gcGFnZSBvZiBhIHNvbHV0aW9uIGhhcyBiZWVuIHZlcmlmaWVkLCB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2Ygd2lubmVycyBiZWluZzBmb3VuZCBpbiBpdC4YUXVldWVkCAD5BQE0RWxlY3Rpb25TY29yZQAA4QkBVE9wdGlvbjxFbGVjdGlvblNjb3JlPgACBB0BQSBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBzY29yZSBoYXMgcmVwbGFjZWQgb3VyIGN1cnJlbnQgYmVzdCBzb2x1dGlvbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTZCQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyQEZlYXNpYmlsaXR5RXJyb3IAASxAV3JvbmdXaW5uZXJDb3VudAAAAExTbmFwc2hvdFVuYXZhaWxhYmxlAAEALEludmFsaWRWb3RlAAIAMEludmFsaWRWb3RlcgADADRJbnZhbGlkV2lubmVyAAQAMEludmFsaWRTY29yZQAFADBJbnZhbGlkUm91bmQABgAsU2NvcmVUb29Mb3cABwBQRmFpbGVkVG9Cb3VuZFN1cHBvcnQACAAwTnBvc0VsZWN0aW9uBADdCQFgc3BfbnBvc19lbGVjdGlvbnM6OkVycm9yAAkAKEluY29tcGxldGUACgAA3QkIRHNwX25wb3NfZWxlY3Rpb25zFEVycm9yAAEoWFNvbHV0aW9uV2VpZ2h0T3ZlcmZsb3cAAABYU29sdXRpb25UYXJnZXRPdmVyZmxvdwABAFBTb2x1dGlvbkludmFsaWRJbmRleAACAGBTb2x1dGlvbkludmFsaWRQYWdlSW5kZXgAAwA8QXJpdGhtZXRpY0Vycm9yAAQASEludmFsaWRTdXBwb3J0RWRnZQAFADRUb29NYW55Vm90ZXJzAAYAOEJvdW5kc0V4Y2VlZGVkAAcAOER1cGxpY2F0ZVZvdGVyAAgAPER1cGxpY2F0ZVRhcmdldAAJAADhCQQYT3B0aW9uBARUAfkFAQgQTm9uZQAAABBTb21lBAD5BQAAAQAA5QkQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEV2ZW50BARUAAEcKFJlZ2lzdGVyZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAD5BQE0RWxlY3Rpb25TY29yZQAABFEBVXBjb21pbmcgc3VibWlzc2lvbiBoYXMgYmVlbiByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gYWNjb3VudCwgd2l0aCB0aGUgZ2l2ZW4gc2NvcmUuGFN0b3JlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAADgBJFBhZ2VJbmRleAABBF0BQSBwYWdlIG9mIHNvbHV0aW9uIHNvbHV0aW9uIHdpdGggdGhlIGdpdmVuIGluZGV4IGhhcyBiZWVuIHN0b3JlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQuIFJld2FyZGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAANQEBMEJhbGFuY2VPZjxUPgACBOhUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiByZXdhcmRlZCB3aXRoIHRoZSBnaXZlbiBhbW91bnQuHFNsYXNoZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA1AQEwQmFsYW5jZU9mPFQ+AAME5FRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIHNsYXNoZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxFamVjdGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAEBNRUaGUgZ2l2ZW4gc29sdXRpb24sIGZvciB0aGUgZ2l2ZW4gcm91bmQsIHdhcyBlamVjdGVkLiREaXNjYXJkZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAUElFRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIGRpc2NhcmRlZC4YQmFpbGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAGBHRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkJEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0FEV2ZW50BARUAAFsHEVyYVBhaWQMASRlcmFfaW5kZXg4ASBFcmFJbmRleAABQHZhbGlkYXRvcl9wYXlvdXQ1AQEwQmFsYW5jZU9mPFQ+AAEkcmVtYWluZGVyNQEBMEJhbGFuY2VPZjxUPgAAFHBUaGUgZXJhIHBheW91dCBoYXMgYmVlbiBzZXQuAA0BSW4gbm9uLW1pbnRpbmcgbW9kZSwgYHZhbGlkYXRvcl9wYXlvdXRgIGlzIHRoZSBzdGFrZXIgcmV3YXJkIGJ1ZGdldAUBc25hcHNob3R0ZWQgZnJvbSB0aGUgZ2VuZXJhbCBwb3QsIGFuZCBgcmVtYWluZGVyYCBpcyBhbHdheXMgemVyby4hAUluIGxlZ2FjeSBtaW50aW5nIG1vZGUsIGJvdGggZmllbGRzIHJlZmxlY3QgdGhlIGBFcmFQYXlvdXRgIGNvbXB1dGF0aW9uLiBSZXdhcmRlZAwBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdOUGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABBA0BVGhlIG5vbWluYXRvciBoYXMgYmVlbiByZXdhcmRlZCBieSB0aGlzIGFtb3VudCB0byB0aGlzIGRlc3RpbmF0aW9uLhxTbGFzaGVkCAEYc3Rha2VyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgACBB0BQSBzdGFrZXIgKHZhbGlkYXRvciBvciBub21pbmF0b3IpIGhhcyBiZWVuIHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5oT2xkU2xhc2hpbmdSZXBvcnREaXNjYXJkZWQEATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAMIGQFBbiBvbGQgc2xhc2hpbmcgcmVwb3J0IGZyb20gYSBwcmlvciBlcmEgd2FzIGRpc2NhcmRlZCBiZWNhdXNlIGl0IGNvdWxkRG5vdCBiZSBwcm9jZXNzZWQuGEJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAEENBBbiBhY2NvdW50IGhhcyBib25kZWQgdGhpcyBhbW91bnQuIFxbc3Rhc2gsIGFtb3VudFxdAE0BTk9URTogVGhpcyBldmVudCBpcyBvbmx5IGVtaXR0ZWQgd2hlbiBmdW5kcyBhcmUgYm9uZGVkIHZpYSBhIGRpc3BhdGNoYWJsZS4gTm90YWJseSwhAWl0IHdpbGwgbm90IGJlIGVtaXR0ZWQgZm9yIHN0YWtpbmcgcmV3YXJkcyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHN0YWtlLiBVbmJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAFBJBBbiBhY2NvdW50IGhhcyB1bmJvbmRlZCB0aGlzIGFtb3VudC4kV2l0aGRyYXduCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAYIWQFBbiBhY2NvdW50IGhhcyBjYWxsZWQgYHdpdGhkcmF3X3VuYm9uZGVkYCBhbmQgcmVtb3ZlZCB1bmJvbmRpbmcgY2h1bmtzIHdvcnRoIGBCYWxhbmNlYGRmcm9tIHRoZSB1bmxvY2tpbmcgcXVldWUuNFN0YWtlclJlbW92ZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAHCFUBQSBzdWJzZXF1ZW50IGV2ZW50IG9mIGBXaXRoZHJhd25gLCBpbmRpY2F0aW5nIHRoYXQgYHN0YXNoYCB3YXMgZnVsbHkgcmVtb3ZlZCBmcm9tIHRoZRxzeXN0ZW0uGEtpY2tlZAgBJG5vbWluYXRvcgQBMFQ6OkFjY291bnRJZAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAgEtEEgbm9taW5hdG9yIGhhcyBiZWVuIGtpY2tlZCBmcm9tIGEgdmFsaWRhdG9yLhxDaGlsbGVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACQQhAUFuIGFjY291bnQgaGFzIHN0b3BwZWQgcGFydGljaXBhdGluZyBhcyBlaXRoZXIgYSB2YWxpZGF0b3Igb3Igbm9taW5hdG9yLjRQYXlvdXRTdGFydGVkEAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBwYWdlOAEQUGFnZQABEG5leHTgATBPcHRpb248UGFnZT4ACgRZAUEgUGFnZSBvZiBzdGFrZXJzIHJld2FyZHMgYXJlIGdldHRpbmcgcGFpZC4gYG5leHRgIGlzIGBOb25lYCBpZiBhbGwgcGFnZXMgYXJlIGNsYWltZWQuRFZhbGlkYXRvclByZWZzU2V0CAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARRwcmVmc+kGAThWYWxpZGF0b3JQcmVmcwALBJhBIHZhbGlkYXRvciBoYXMgc2V0IHRoZWlyIHByZWZlcmVuY2VzLmhTbmFwc2hvdFZvdGVyc1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADARoVm90ZXJzIHNpemUgbGltaXQgcmVhY2hlZC5sU25hcHNob3RUYXJnZXRzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgANBGxUYXJnZXRzIHNpemUgbGltaXQgcmVhY2hlZC4gRm9yY2VFcmEEARBtb2Rl7QkBHEZvcmNpbmcADgBkQ29udHJvbGxlckJhdGNoRGVwcmVjYXRlZAQBIGZhaWx1cmVzOAEMdTMyAA8EpFJlcG9ydCBvZiBhIGNvbnRyb2xsZXIgYmF0Y2ggZGVwcmVjYXRpb24uQEN1cnJlbmN5TWlncmF0ZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABOGZvcmNlX3dpdGhkcmF3NQEBMEJhbGFuY2VPZjxUPgAQCFUBU3Rha2luZyBiYWxhbmNlIG1pZ3JhdGVkIGZyb20gbG9ja3MgdG8gaG9sZHMsIHdpdGggYW55IGJhbGFuY2UgdGhhdCBjb3VsZCBub3QgYmUgaGVsZExpcyBmb3JjZSB3aXRoZHJhd24uWFBhZ2VkRWxlY3Rpb25Qcm9jZWVkZWQIARBwYWdlOAEkUGFnZUluZGV4AAEYcmVzdWx08QkBQFJlc3VsdDx1MzIsIHUzMj4AESRBAUEgcGFnZSBmcm9tIGEgbXVsdGktcGFnZSBlbGVjdGlvbiB3YXMgZmV0Y2hlZC4gQSBudW1iZXIgb2YgdGhlc2UgYXJlIGZvbGxvd2VkIGJ5RGBTdGFrZXJzRWxlY3RlZGAuAPBgT2soY291bnQpYCBpbmRpY2F0ZXMgdGhlIGdpdmUgbnVtYmVyIG9mIHN0YXNoZXMgd2VyZSBhZGRlZC4FAWBFcnIoaW5kZXgpYCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Rhc2hlcyBhZnRlciBpbmRleCB3ZXJlIGRyb3BwZWQuQQFgRXJyKDApYCBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBoYXBwZW5lZCBidXQgbm8gc3Rhc2hlcyB3ZXJlIGRyb3BwZWQgbm9yIGFkZGVkLgBRAVRoZSBlcnJvciBpbmRpY2F0ZXMgdGhhdCBhIG51bWJlciBvZiB2YWxpZGF0b3JzIHdlcmUgZHJvcHBlZCBkdWUgdG8gZXhjZXNzIHNpemUsIGJ1dIx0aGUgb3ZlcmFsbCBlbGVjdGlvbiB3aWxsIGNvbnRpbnVlLjxPZmZlbmNlUmVwb3J0ZWQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb25FBQEcUGVyYmlsbAASCE0BQW4gb2ZmZW5jZSBmb3IgdGhlIGdpdmVuIHZhbGlkYXRvciwgZm9yIHRoZSBnaXZlbiBwZXJjZW50YWdlIG9mIHRoZWlyIHN0YWtlLCBhdCB0aGVsZ2l2ZW4gZXJhIGFzIGJlZW4gcmVwb3J0ZWQuNFNsYXNoQ29tcHV0ZWQQASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASBvZmZlbmRlcgQBMFQ6OkFjY291bnRJZAABEHBhZ2U4AQx1MzIAEwQxAUFuIG9mZmVuY2UgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzbGFzaCBoYXMgYmVlbiBjb21wdXRlZC44U2xhc2hDYW5jZWxsZWQIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAAUBJhBbiB1bmFwcGxpZWQgc2xhc2ggaGFzIGJlZW4gY2FuY2VsbGVkLjhTZXNzaW9uUm90YXRlZAwBQHN0YXJ0aW5nX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAShhY3RpdmVfZXJhOAEgRXJhSW5kZXgAASxwbGFubmVkX2VyYTgBIEVyYUluZGV4ABUQiFNlc3Npb24gY2hhbmdlIGhhcyBiZWVuIHRyaWdnZXJlZC4AWQFJZiBwbGFubmVkX2VyYSBpcyBvbmUgZXJhIGFoZWFkIG9mIGFjdGl2ZV9lcmEsIGl0IGltcGxpZXMgbmV3IGVyYSBpcyBiZWluZyBwbGFubmVkIGFuZFBlbGVjdGlvbiBpcyBvbmdvaW5nLihVbmV4cGVjdGVkBAD1CQFEVW5leHBlY3RlZEtpbmQ8VD4AFggNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS40T2ZmZW5jZVRvb09sZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbkUFARxQZXJiaWxsABcEPQFBbiBvZmZlbmNlIHdhcyByZXBvcnRlZCB0aGF0IHdhcyB0b28gb2xkIHRvIGJlIHByb2Nlc3NlZCwgYW5kIHRodXMgd2FzIGRyb3BwZWQuJEVyYVBydW5lZAQBFGluZGV4OAEgRXJhSW5kZXgAGASsQW4gb2xkIGVyYSB3aXRoIHRoZSBnaXZlbiBpbmRleCB3YXMgcHJ1bmVkLlhWYWxpZGF0b3JJbmNlbnRpdmVQYWlkEAEMZXJhOAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN05QYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+ABkE9FRoZSB2YWxpZGF0b3IgaGFzIGJlZW4gcGFpZCB0aGVpciBzZWxmLXN0YWtlIGluY2VudGl2ZSBib251cy5sVmFsaWRhdG9ySW5jZW50aXZlQ29uZmlnU2V0DAFIb3B0aW11bV9zZWxmX3N0YWtlNQEBMEJhbGFuY2VPZjxUPgABTGhhcmRfY2FwX3NlbGZfc3Rha2U1AQEwQmFsYW5jZU9mPFQ+AAEwc2xvcGVfZmFjdG9yRQUBHFBlcmJpbGwAGgT4VmFsaWRhdG9yIHNlbGYtc3Rha2UgaW5jZW50aXZlIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTtCQhQcGFsbGV0X3N0YWtpbmdfYXN5bmMcRm9yY2luZwABEChOb3RGb3JjaW5nAAAAIEZvcmNlTmV3AAEAJEZvcmNlTm9uZQACACxGb3JjZUFsd2F5cwADAADxCQQYUmVzdWx0CARUATgERQE4AQgIT2sEADgAAAAADEVycgQAOAAAAQAA9QkQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQEBFQAARhgRXJhRHVyYXRpb25Cb3VuZEV4Y2VlZGVkAAAAaFVua25vd25WYWxpZGF0b3JBY3RpdmF0aW9uAAEAYFBhZ2VkRWxlY3Rpb25PdXRPZldlaWdodAwBEHBhZ2U4ASRQYWdlSW5kZXgAASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAIAME1pc3NpbmdQYXllZQgBDGVyYTgBIEVyYUluZGV4AAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAwCAVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0TWlzbWF0Y2gEAQxlcmE4ASBFcmFJbmRleAAEAIBWYWxpZGF0b3JJbmNlbnRpdmVUcmFuc2ZlckZhaWxlZAQBDGVyYTgBIEVyYUluZGV4AAUAAPkJDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxhwYWxsZXQURXZlbnQEBFQAARhMQ3JlZGl0VHJlZXNSZWNlaXZlZAgBFGNvdW50OAEMdTMyAAEYc3RvcmVkOAEMdTMyAAAEmENyZWRpdCB0cmVlcyB3ZXJlIHJlY2VpdmVkIGFuZCBzdG9yZWQuSENyZWRpdFRyZWVzTWlzc2luZwgBNGZyb21fc2VxdWVuY2UoATBUcmVlU2VxdWVuY2UAASx0b19zZXF1ZW5jZSgBMFRyZWVTZXF1ZW5jZQABGEkBVHJlZXMgb2YgdGhlIGxpdmUgc3RyZWFtIG5ldmVyIGFycml2ZWQuIFRoZSBnYW1lIHBhbGxldCdzIGBDcmVkaXRUcmVlc1NlbnRgIGV2ZW50czEBcmVzb2x2ZSB0aGVzZSBzZXF1ZW5jZXMgdG8gdGhlIGF3YXJkIGJsb2NrcyB0aGV5IHdlcmUgZGVsaXZlcmVkIHVuZGVyLCBhbmQgYfRgcmVwbGF5X2NyZWRpdF90cmVlc2AgbmFtaW5nIHRob3NlIGJsb2NrcyByZWNvdmVycyB0aGUgdHJlZXMuAEkBQSBzZXF1ZW5jZSB0aGF0IHJlc29sdmVzIHRvIG5vIGJsb2NrIGlzIG9uZSB0aGUgZ2FtZSBwYWxsZXQgc3BlbnQgb24gYSB0cmVlIGl0IGhhZOhhbHJlYWR5IGRyb3BwZWQgdGhlIHJvb3Qgb2YsIGFuZCBubyByZXBsYXkgYnJpbmdzIGl0IGJhY2suSENyZWRpdFRyZWVDb25mbGljdAQBFGJsb2NrOAEoQXdhcmRCbG9jawACCD0BQSB0cmVlIHdhcyByZWNlaXZlZCBmb3IgYSBibG9jayB0aGF0IGFscmVhZHkgaG9sZHMgYSBkaWZmZXJlbnQgcm9vdC4gVGhlIHN0b3JlZOByb290IGlzIGtlcHQsIHNvIHRoZSBwcm9vZnMgYnVpbHQgYWdhaW5zdCBpdCBzdGF5IHZhbGlkLjRDcmVkaXRDbGFpbWVkGAEUYmxvY2s4AShBd2FyZEJsb2NrAAEQbGVhZv0JAUhOZnRDbGFpbUNyZWRpdExlYWYAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAMIUQFBIGNyZWRpdCBhd2FyZGVkIGluIGBibG9ja2Agd2FzIGNsYWltZWQsIG1pbnRpbmcgYGluc3RhbmNlYCBvZiBgY29sbGVjdGlvbmAncyBgaXRlbWBkdG8gdGhlIHB1cnNlIGtleSBgb3duZXJgLkBUcmVlRnVsbHlDbGFpbWVkBAEUYmxvY2s4AShBd2FyZEJsb2NrAAQEBQFFdmVyeSBjcmVkaXQgY29tbWl0dGVkIHRvIGJ5IGBibG9ja2AncyB0cmVlIGhhcyBub3cgYmVlbiBjbGFpbWVkLkxDb2xsZWN0aW9uTWludGVyU2V0CAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJHNlbGVjdGlvblUHAVRPcHRpb248SXRlbVNlbGVjdGlvbj4ABQhNAWBjb2xsZWN0aW9uYCdzIG93bmVyIHJlZ2lzdGVyZWQgaXQgZm9yIGNsYWltcyB3aXRoIGBzZWxlY3Rpb25gLCBvciB3aXRoZHJldyBpdCB3aXRoHGBOb25lYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9CQw0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXNITmZ0Q2xhaW1DcmVkaXRMZWFmAAAEAAgBIFt1ODsgMzJdAAABCgx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXZlbnQEBFQAARhQUmluZ1Jvb3RzSW5pdGlhbGl6ZWQIARRjb3VudDgBDHUzMgSETnVtYmVyIG9mIHJpbmcgcm9vdHMgaW5pdGlhbGl6ZWQuASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyBLBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGluaXRpYWxpemF0aW9uIGJhdGNoLgAEzFJpbmcgcm9vdHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGZyb20gdGhlIG5vdGlmaWVyLkBSaW5nUm9vdHNVcGRhdGVkCAEUY291bnQ4AQx1MzIEcE51bWJlciBvZiB1cGRhdGVzIHByb2Nlc3NlZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEdFNlcXVlbmNlIG51bWJlciBvZiB0aGUgYmF0Y2guAQSYUmluZyByb290IHVwZGF0ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAQBRG5vdGlmaWVyX25vdGlmaWVkdQEBEGJvb2wE0FdoZXRoZXIgdGhlIHVuc3Vic2NyaWJlIFhDTSB3YXMgc3VjY2Vzc2Z1bGx5IHF1ZXVlZC4CBIRTdWJzY3JpcHRpb24gaGFzIGJlZW4gdGVybWluYXRlZC5QTWlzc2luZ1JpbmdzRGV0ZWN0ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRjb3VudDgBDHUzMgS4TnVtYmVyIG9mIG5ld2x5IGRldGVjdGVkIG1pc3NpbmcgcmluZyBpbmRpY2VzLgME4E5ldyBtaXNzaW5nIHJpbmcgcm9vdHMgZGV0ZWN0ZWQgZHVyaW5nIGJhdGNoIHByb2Nlc3NpbmcuRFJlcGxheVJlcXVlc3RTZW50CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgE0aW5kaWNlc19jb3VudDgBDHUzMgSgTnVtYmVyIG9mIG1pc3NpbmcgaW5kaWNlcyBpbiB0aGlzIGNodW5rLgQEtFJlcGxheSByZXF1ZXN0IHN1Y2Nlc3NmdWxseSBzZW50IHRvIG5vdGlmaWVyLmBEZWxldGVkSW5kaWNlc0F0Q2FwYWNpdHkEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuBQQNAU1pc3NpbmcgcmluZyBzY2FuIHNraXBwZWQgYmVjYXVzZSBkZWxldGVkX2luZGljZXMgcmVhY2hlZCBjYXBhY2l0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFCgxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBRFdmVudAQEVAABFDxBbGlhc0FjY291bnRTZXQMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHBUaGUgYWNjb3VudCB0aGF0IHdhcyBsaW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgAEpEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAQSIQW4gYWxpYXMgYWNjb3VudCBoYXMgYmVlbiByZW1vdmVkLkRTdGFsZUFsaWFzUmVtb3ZlZAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4CBIhBIHN0YWxlIGFsaWFzIG1hcHBpbmcgd2FzIHJlbW92ZWQuSFN0YWxlQWxpYXNSZXBvcnRlZBABHGFjY291bnQEATBUOjpBY2NvdW50SWQEnFRoZSBhY2NvdW50IHdob3NlIG1hcHBpbmcgd2FzIHJlcG9ydGVkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4BMHJlbW92YWJsZV9hdCgBDHU2NATEVGhlIHNlY29uZCBmcm9tIHdoaWNoIHRoZSBtYXBwaW5nIGNhbiBiZSByZW1vdmVkLgMIUQFBIG1hcHBpbmcgd2FzIHJlcG9ydGVkIHN0YWxlLCB3aGljaCBzdGFydHMgW2BDb25maWc6Ok1hcHBpbmdSZXRlbnRpb25gXS4gSXQgaXMgc3RpbGzUc3RvcmVkLCBhbmQgYSBjYWxsIGZyb20gYHJlbW92YWJsZV9hdGAgb24gcmVtb3ZlcyBpdC5cU3RhbGVBbGlhc1JlcG9ydENsZWFyZWQMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBJRUaGUgYWNjb3VudCB3aG9zZSByZXBvcnQgd2FzIGRyb3BwZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgQIVQFBIG1hcHBpbmcgcmVwb3J0ZWQgc3RhbGUgdmVyaWZpZXMgYWdhaW4sIHNvIGl0cyByZXBvcnQgd2FzIGRyb3BwZWQuIEEgbGF0ZXIgc3RhbGVuZXNzpHN0YXJ0cyBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIG92ZXIuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0CQoMRGluZGl2X3BhbGxldF9wZ2FzGHBhbGxldBRFdmVudAQEVAABDCxQZ2FzQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEhATw8VCBhcyBDb25maWc+OjpGdW5naWJsZXMgYXMgZnVuZ2libGVzOjpJbnNwZWN0PFQ6OkFjY291bnRJZD4+OjoKQmFsYW5jZQABKGNvbGxlY3Rpb24ZBAE4UGdhc0NvbGxlY3Rpb24AAQxkYXk4AQx1MzIAAAR0UEdBUyB3YXMgY2xhaW1lZCBieSBhIHBlcnNvbi5AUGdhc0Fzc2V0Q3JlYXRlZAABBGxUaGUgUEdBUyBhc3NldCB3YXMgY3JlYXRlZC5cUGdhc0NsYWltUmVjb3Jkc0NsZWFuZWQIASRkYXlfaW5kZXg4AQx1MzIAARRjb3VudDgBDHUzMgACBJxPbGQgUEdBUyBjbGFpbSByZWNvcmRzIHdlcmUgY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNCgw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXZlbnQEBFQAAQw8Q29udHJhY3RFbWl0dGVkDAEgY29udHJhY3RdBwEQSDE2MASQVGhlIGNvbnRyYWN0IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuARBkYXRhGAEcVmVjPHU4Pgg1AURhdGEgc3VwcGxpZWQgYnkgdGhlIGNvbnRyYWN0LiBNZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIGNvbnRyYWN0IGNvbXBpbGF0aW9uXGlzIG5lZWRlZCB0byBkZWNvZGUgaXQuARh0b3BpY3PAASRWZWM8SDI1Nj4IpEEgbGlzdCBvZiB0b3BpY3MgdXNlZCB0byBpbmRleCB0aGUgZXZlbnQu7E51bWJlciBvZiB0b3BpY3MgaXMgY2FwcGVkIGJ5IFtgbGltaXRzOjpOVU1fRVZFTlRfVE9QSUNTYF0uAAScQSBjdXN0b20gZXZlbnQgZW1pdHRlZCBieSB0aGUgY29udHJhY3QuMEluc3RhbnRpYXRlZAgBIGRlcGxveWVyXQcBEEgxNjAAASBjb250cmFjdF0HARBIMTYwAAEE3ENvbnRyYWN0IGRlcGxveWVkIGJ5IGRlcGxveWVyIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy5IRXRoRXh0cmluc2ljUmV2ZXJ0BAE4ZGlzcGF0Y2hfZXJyb3JNCAE0RGlzcGF0Y2hFcnJvcgACGLRFbWl0dGVkIHdoZW4gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24gcmV2ZXJ0cy4AKQFFdGhlcmV1bSB0cmFuc2FjdGlvbnMgYWx3YXlzIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBhdCB0aGUgZXh0cmluc2ljIGxldmVsLNhhcyBldmVuIHJldmVydGVkIGNhbGxzIG11c3Qgc3RvcmUgdGhlaXIgYFJlY2VpcHRJbmZvYC4lAVRvIGRpc3Rpbmd1aXNoIHJldmVydGVkIGNhbGxzIGZyb20gc3VjY2Vzc2Z1bCBvbmVzLCB0aGlzIGV2ZW50IGlzIGVtaXR0ZWSEZm9yIGZhaWxlZCBFdGhlcmV1bSB0cmFuc2FjdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQoMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5GHBhbGxldBRFdmVudAQEVAABFDBOYW1lUmVzZXJ2ZWQUASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQEmFRoZSBjYW5kaWRhdGUgd2hvc2UgbmFtZSB3YXMgcmVzZXJ2ZWQuASBhdHRlc3RlcgQBMFQ6OkFjY291bnRJZASsVGhlIGF0dGVzdGVyIHdobyBwZXJmb3JtZWQgdGhlIHJlc2VydmF0aW9uLgEobGl0ZV9sYWJlbKkHASRCYXNlTGFiZWwEuFRoZSBsaXRlLXBlcnNvbiBsYWJlbCAoYDxkbnMtc3RlbT4uPGRpZ2l0cz5gKS4BIGNoYXRfa2V5rQcBHENoYXRLZXkE5FRoZSBFQ0RIIGNoYXQga2V5IHN0b3JlZCBhbG9uZ3NpZGUgdGhlIGxpdGUtcGVyc29uIGxhYmVsLgFMcmVzZXJ2ZWRfYmFzZV9sYWJlbLEHAURPcHRpb248QmFzZUxhYmVsPgQFAVRoZSBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciBmdXR1cmUgZnVsbC1wZXJzb24gY2xhaW1pbmcuAATwQSB1c2VybmFtZSBoYXMgYmVlbiByZXNlcnZlZCBmb3IgYSBjYW5kaWRhdGUgYnkgYW4gYXR0ZXN0ZXIuOE5hbWVSZWdpc3RlcmVkEAEUYWxpYXMIARRBbGlhcwSYVGhlIGFsaWFzIGRlcml2ZWQgZnJvbSB0aGUgcmluZyBwcm9vZi4BHGFjY291bnQEATBUOjpBY2NvdW50SWQEsFRoZSBhY2NvdW50IHRoYXQgaW5pdGlhdGVkIHRoZSByZWdpc3RyYXRpb24uARRsYWJlbKkHASRCYXNlTGFiZWwEhFRoZSByZWdpc3RlcmVkIGZ1bGwtcGVyc29uIGxhYmVsLgEQbGlua7UHARBMaW5rBORIb3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBsaXRlLXBlcnNvbiBsYWJlbC4BBNBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlZ2lzdGVyZWQgYnkgYSB2ZXJpZmllZCBwZXJzb24udEF0dGVzdGF0aW9uQWxsb3dhbmNlSW5jcmVhc2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARUVGhlIGF0dGVzdGVyIGFjY291bnQuARRjb3VudDgBDHUzMgSEVGhlIG51bWJlciBvZiBhdHRlc3RhdGlvbnMgYWRkZWQuAgTMQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQueEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4DBPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSBhdHRlc3Rlci5QRGlzcGF0Y2hlckFkZHJlc3NTZXQEARxhZGRyZXNzXQcBEEgxNjAEZFRoZSBuZXcgY29udHJhY3QgYWRkcmVzcy4EBNRUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyB3YXMgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUKDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHm9BwFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQoMLHBhbGxldF9zdWRvGHBhbGxldBRFdmVudAQEVAABEBRTdWRpZAQBLHN1ZG9fcmVzdWx0cQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGSpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3BAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx0cQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4DBMhBIFtzdWRvX2FzXShQYWxsZXQ6OnN1ZG9fYXMpIGNhbGwganVzdCB0b29rIHBsYWNlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0KDFRwYWxsZXRfcGdhc19hbGxvd2FuY2UYcGFsbGV0FEV2ZW50BARUAAEELFBHQVNGZWVQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAAhFAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCBoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIFBHQVMgYW5kIGJ1cm5lZC4gTWlycm9yc+hbYHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDo6VHJhbnNhY3Rpb25GZWVQYWlkYF0uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQoIMGZyYW1lX3N5c3RlbRRQaGFzZQABDDhBcHBseUV4dHJpbnNpYwQAOAEMdTMyAAAAMEZpbmFsaXphdGlvbgABADhJbml0aWFsaXphdGlvbgACAAAlCgAAAswAKQoIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lLQoBRENvdzwnc3RhdGljLCBzdHI+AAAtCgQMQ293BARUATEKAAQAMQoAAAAxCgAABQIANQoIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9udQEBEGJvb2wAADkKDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9jaxEBARhXZWlnaHQAASRtYXhfYmxvY2sRAQEYV2VpZ2h0AAEkcGVyX2NsYXNzPQoBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAPQoMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAFBCgAMARhub3JtYWxBCgEEVAABLG9wZXJhdGlvbmFsQQoBBFQAASRtYW5kYXRvcnlBCgEEVAAAQQoMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpYxEBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljDQEBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsDQEBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWQNAQE4T3B0aW9uPFdlaWdodD4AAEUKDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXhJCgFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXpl4AEsT3B0aW9uPHUzMj4AAEkKDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAATQoIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAFEKCChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWUtCgFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWUtCgFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXNVCgEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AABVCgQMQ293BARUAVkKAAQAWQoAAABZCgAAAl0KAF0KAAAECHUCOABhCgwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABJDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLkROb3RoaW5nQXV0aG9yaXplZAAHBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAIBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXRlChAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrFEJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMBaQoACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc3kKAThWZWM8RXh0cmluc2ljPgAAaQoQKHNwX3J1bnRpbWUcZ2VuZXJpY0x1bmNoZWNrZWRfZXh0cmluc2ljSFVuY2hlY2tlZEV4dHJpbnNpYxAcQWRkcmVzcwEAEENhbGwBICRTaWduYXR1cmUBtQQURXh0cmEBbQoABAAYAAAAbQoIdGN1bXVsdXNfcGFsbGV0X3dlaWdodF9yZWNsYWltUFN0b3JhZ2VXZWlnaHRSZWNsYWltCARUAARTAXEKAAQAcQoBBFMAAHEKAAAEMHUK7QfxB/UH+Qf9BwEICQgNCBEIFQgdCAB1CgAABBQQxQfRB9UH4QcAeQoAAAJpCgB9Cgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQRAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgACAACBCgAAAoUKAIUKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRoiQoBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaCEFASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWydCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAIkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ40KAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAjQoEIEJUcmVlTWFwCARLAZwEVgGRCgAEAJUKAAAAkQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAlQoAAAKZCgCZCgAABAickQoAnQoEGE9wdGlvbgQEVAGhCgEIEE5vbmUAAAAQU29tZQQAoQoAAAEAAKEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAApQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGiJCgE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr4AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWydCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAKkKBBhPcHRpb24EBFQBrQoBCBBOb25lAAAAEFNvbWUEAK0KAAABAACtCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAACxCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0ebUKAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHO5CgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc7kKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAC1Cgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAALkKAAACvQoAvQoAAAQInMEKAMEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZCEFATBPcHRpb248SGFzaD4AAMUKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zyQoBSEFzeW5jQmFja2luZ1BhcmFtcwAAyQoQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAzQoIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAADRCgQgQlRyZWVNYXAIBEsBnARWAc0KAAQA1QoAAADVCgAAAtkKANkKAAAECJzNCgDdCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAOEKAAAC5QoA5QoIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAOkKCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c+0KASxWZWM8UGFyYUlkPgAA7QoAAAKcAPEKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvUKCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdO0FAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0+QoBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuABLE9wdGlvbjx1MzI+AAEAAPkKBBhPcHRpb24EBFQB7QUBCBBOb25lAAAAEFNvbWUEAO0FAAABAAD9Cgg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAEBCwEILFVucmVxdWVzdGVkCAEYdGlja2V0BQsBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0CQsBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu4AEsT3B0aW9uPHUzMj4AAQAAAQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAAAULAAAECAQBCwAJCwQYT3B0aW9uBARUAQULAQgQTm9uZQAAABBTb21lBAAFCwAAAQAADQsAAAQIPDgAEQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAVCww8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBHQsEUwAABAAlCwEYVmVjPFQ+AAAdCwQYT3B0aW9uBARUASELAQgQTm9uZQAAABBTb21lBAAhCwAAAQAAIQsIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAEVBSxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B8QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWSZBwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsFQUBEENhbGwAAThtYXliZV9wZXJpb2RpY8gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7xAwE0UGFsbGV0c09yaWdpbgAAJQsAAAIdCwApCwhAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAC0LDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuMQsMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuNQsIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAOQsEGE9wdGlvbgQEVAE9CwEIEE5vbmUAAAAQU29tZQQAPQsAAAEAAD0LCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPgASxPcHRpb248dTMyPgAAQQsIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZzULATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzczkLAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAEULDGxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXgYcGFsbGV0FEVycm9yBARUAAEELEVtcHR5U3VmZml4AAAEhEEgbmV0d29yayBzdWZmaXggY2Fubm90IGJlIGVtcHR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5JCwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAU0LBFMAAAQAVQsBGFZlYzxUPgAATQsMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQE1AQAMAQhpZHUCAThMb2NrSWRlbnRpZmllcgABGGFtb3VudDUBARxCYWxhbmNlAAEccmVhc29uc1ELARxSZWFzb25zAABRCww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAFULAAACTQsAWQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFdCwRTAAAEAGELARhWZWM8VD4AAF0LDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAXUCHEJhbGFuY2UBNQEACAEIaWR1AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnQ1AQEcQmFsYW5jZQAAYQsAAAJdCwBlCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWkLBFMAAAQAbQsBGFZlYzxUPgAAaQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAG1CBxCYWxhbmNlATUBAAgBCGlktQgBCElkAAEYYW1vdW50NQEBHEJhbGFuY2UAAG0LAAACaQsAcQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1CwRTAAAEAIULARhWZWM8VD4AAHULFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBeQscQmFsYW5jZQE1AQAIAQhpZHkLAQhJZAABGGFtb3VudDUBARxCYWxhbmNlAAB5CwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZUxSdW50aW1lRnJlZXplUmVhc29uAAEIPE5vbWluYXRpb25Qb29scwQAfQsBlHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpGcmVlemVSZWFzb24AUAAYUmV2aXZlBACBCwFscGFsbGV0X3Jldml2ZTo6RnJlZXplUmVhc29uAGQAAH0LDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBvb2xNaW5CYWxhbmNlAAAAAIELDDRwYWxsZXRfcmV2aXZlGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UEdhc01pbkJhbGFuY2UAAAAAhQsAAAJ1CwCJCww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQujQsIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAACRCxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBlQsABACVCwEEVAAAlQsYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCATUBGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudDUBAQRCAACZCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUBBFMAAAQAnQsBGFZlYzxUPgAAnQsAAAKFAQChCwg4cGFsbGV0X3Zlc3RpbmcgUmVsZWFzZXMAAQgIVjAAAAAIVjEAAQAApQsMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFcnJvcgQEVAABFChOb3RWZXN0aW5nAAAEhFRoZSBhY2NvdW50IGdpdmVuIGlzIG5vdCB2ZXN0aW5nLlRBdE1heFZlc3RpbmdTY2hlZHVsZXMAAQglAVRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGBNYXhWZXN0aW5nU2NoZWR1bGVzYCBjb3VudCBvZiBzY2hlZHVsZXMgYW5kIHRodXNRAWNhbm5vdCBhZGQgYW5vdGhlciBvbmUuIENvbnNpZGVyIG1lcmdpbmcgZXhpc3Rpbmcgc2NoZWR1bGVzIGluIG9yZGVyIHRvIGFkZCBhbm90aGVyLiRBbW91bnRMb3cAAgQFAUFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCBpcyB0b28gbG93IHRvIGNyZWF0ZSBhIHZlc3Rpbmcgc2NoZWR1bGUuYFNjaGVkdWxlSW5kZXhPdXRPZkJvdW5kcwADBNBBbiBpbmRleCB3YXMgb3V0IG9mIGJvdW5kcyBvZiB0aGUgdmVzdGluZyBzY2hlZHVsZXMuVEludmFsaWRTY2hlZHVsZVBhcmFtcwAEBA0BRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzY2hlZHVsZSBiZWNhdXNlIHNvbWUgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLgR0RXJyb3IgZm9yIHRoZSB2ZXN0aW5nIHBhbGxldC6pCxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkRXRoZXJldW1TaWduYXR1cmUAAARsSW52YWxpZCBFdGhlcmV1bSBzaWduYXR1cmUuQFNpZ25lckhhc05vQ2xhaW0AAQR4RXRoZXJldW0gYWRkcmVzcyBoYXMgbm8gY2xhaW0uQFNlbmRlckhhc05vQ2xhaW0AAgSwQWNjb3VudCBJRCBzZW5kaW5nIHRyYW5zYWN0aW9uIGhhcyBubyBjbGFpbS4wUG90VW5kZXJmbG93AAMISQFUaGVyZSdzIG5vdCBlbm91Z2ggaW4gdGhlIHBvdCB0byBwYXkgb3V0IHNvbWUgdW52ZXN0ZWQgYW1vdW50LiBHZW5lcmFsbHkgaW1wbGllcyBhMGxvZ2ljIGVycm9yLkBJbnZhbGlkU3RhdGVtZW50AAQEkEEgbmVlZGVkIHN0YXRlbWVudCB3YXMgbm90IGluY2x1ZGVkLkxWZXN0ZWRCYWxhbmNlRXhpc3RzAAUEpFRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgdmVzdGVkIGJhbGFuY2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lq0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AALELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQsEUwAABAC5CwEYVmVjPFQ+AAC1CwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0NQEBHEJhbGFuY2UAALkLAAACtQsAvQsINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAdQIBHFt1ODsgOF0AAMELDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFcnJvcgQEVAABRERUb29NYW55Q2FuZGlkYXRlcwAABIxUaGUgcGFsbGV0IGhhcyB0b28gbWFueSBjYW5kaWRhdGVzLlxUb29GZXdFbGlnaWJsZUNvbGxhdG9ycwABBKxMZWF2aW5nIHdvdWxkIHJlc3VsdCBpbiB0b28gZmV3IGNhbmRpZGF0ZXMuQEFscmVhZHlDYW5kaWRhdGUAAgR8QWNjb3VudCBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLjBOb3RDYW5kaWRhdGUAAwRsQWNjb3VudCBpcyBub3QgYSBjYW5kaWRhdGUuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAQEhFRoZXJlIGFyZSB0b28gbWFueSBJbnZ1bG5lcmFibGVzLkxBbHJlYWR5SW52dWxuZXJhYmxlAAUEjEFjY291bnQgaXMgYWxyZWFkeSBhbiBJbnZ1bG5lcmFibGUuPE5vdEludnVsbmVyYWJsZQAGBHxBY2NvdW50IGlzIG5vdCBhbiBJbnZ1bG5lcmFibGUuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAcEnEFjY291bnQgaGFzIG5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElELlhWYWxpZGF0b3JOb3RSZWdpc3RlcmVkAAgEjFZhbGlkYXRvciBJRCBpcyBub3QgeWV0IHJlZ2lzdGVyZWQubEluc2VydFRvQ2FuZGlkYXRlTGlzdEZhaWxlZAAJBJxDb3VsZCBub3QgaW5zZXJ0IGluIHRoZSBjYW5kaWRhdGUgbGlzdC50UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQACgSkQ291bGQgbm90IHJlbW92ZSBmcm9tIHRoZSBjYW5kaWRhdGUgbGlzdC40RGVwb3NpdFRvb0xvdwALBPROZXcgZGVwb3NpdCBhbW91bnQgd291bGQgYmUgYmVsb3cgdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQuZFVwZGF0ZUNhbmRpZGF0ZUxpc3RGYWlsZWQADASQQ291bGQgbm90IHVwZGF0ZSB0aGUgY2FuZGlkYXRlIGxpc3QuQEluc3VmZmljaWVudEJvbmQADQQpAURlcG9zaXQgYW1vdW50IGlzIHRvbyBsb3cgdG8gdGFrZSB0aGUgdGFyZ2V0J3Mgc2xvdCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QuUFRhcmdldElzTm90Q2FuZGlkYXRlAA4ELQFUaGUgdGFyZ2V0IGFjY291bnQgdG8gYmUgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGlzIG5vdCBhIGNhbmRpZGF0ZS5ASWRlbnRpY2FsRGVwb3NpdAAPBA0BVGhlIHVwZGF0ZWQgZGVwb3NpdCBhbW91bnQgaXMgZXF1YWwgdG8gdGhlIGFtb3VudCBhbHJlYWR5IHJlc2VydmVkLkBJbnZhbGlkVW5yZXNlcnZlABAEPQFDYW5ub3QgbG93ZXIgY2FuZGlkYWN5IGJvbmQgd2hpbGUgb2NjdXB5aW5nIGEgZnV0dXJlIGNvbGxhdG9yIHNsb3QgaW4gdGhlIGxpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsULAAACyQsAyQsAAAQIBLUBAM0LAAAC0QsA0QsAAAQIONULANULDChzcF9zdGFraW5nHG9mZmVuY2U8T2ZmZW5jZVNldmVyaXR5AAAEAEUFARxQZXJiaWxsAADZCwAABAjdCxgA3QsMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABABwARxbdTg7IDRdAADhCww4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEVycm9yBARUAAEUMEludmFsaWRQcm9vZgAABGBJbnZhbGlkIG93bmVyc2hpcCBwcm9vZi5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQScTm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQgZm9yIGFjY291bnQuNER1cGxpY2F0ZWRLZXkAAgRkUmVnaXN0ZXJlZCBkdXBsaWNhdGUga2V5LhhOb0tleXMAAwSkTm8ga2V5cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjb3VudC4kTm9BY2NvdW50AAQEGQFLZXkgc2V0dGluZyBhY2NvdW50IGlzIG5vdCBsaXZlLCBzbyBpdCdzIGltcG9zc2libGUgdG8gYXNzb2NpYXRlIGtleXMuBHRFcnJvciBmb3IgdGhlIHNlc3Npb24gcGFsbGV0LuULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBuQEEUwAABADpCwEYVmVjPFQ+AADpCwAAArkBAO0LCEhzcF9jb25zZW5zdXNfc2xvdHMQU2xvdAAABAAoAQx1NjQAAPELAAAECO0LOAD1CwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBnARTAAAEAPkLASxCVHJlZVNldDxUPgAA+QsEIEJUcmVlU2V0BARUAZwABADtCgAAAP0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBAQwEUwAABAANDAEYVmVjPFQ+AAABDAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAcASRyZWNpcGllbnScARhQYXJhSWQAARRzdGF0ZQUMATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdHUBARBib29sAAEsZmlyc3RfaW5kZXjtAwEMdTE2AAEobGFzdF9pbmRleO0DAQx1MTYAARRmbGFncwkMAVBPdXRib3VuZENoYW5uZWxGbGFncwABMHF1ZXVlZF9ieXRlczgBDHUzMgAABQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAACQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAA0MAAACAQwAEQwAAAQInO0DABUMDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAGQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAHQwMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQwMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcsUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXIlDAFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeSkMAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbsUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZXUBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2UxDAFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAACUMBBhPcHRpb24EBFQBxQEBCBBOb25lAAAAEFNvbWUEAMUBAAABAAApDAQYT3B0aW9uBARUAS0MAQgQTm9uZQAAABBTb21lBAAtDAAAAQAALQwAAAQIDAwAMQwIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAfQIBMHYzOjpSZXNwb25zZQADAAhWNAQA6QIBMHY0OjpSZXNwb25zZQAEAAhWNQQANQMBMHY1OjpSZXNwb25zZQAFAAA1DAAABAg4xQEAOQwAAAQMKBEBOAA9DAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUEMBFMAAAQARQwBGFZlYzxUPgAAQQwAAAQIxQE4AEUMAAACQQwASQwMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQAYQEBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAABNDAAABAw4BL0DAFEMDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnQ1AQEQdTEyOAABFG93bmVyxQEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2VyxQEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJzVQwB0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AAFUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBWQwEUwAABABdDAEYVmVjPFQ+AABZDAAABAgQNQEAXQwAAAJZDABhDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUMBFMAAAQAaQwBGFZlYzxUPgAAZQwAAAQINQHFAQBpDAAAAmUMAG0MCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAFxDAxNQVgBdQwACAEgYWxpYXNlcnN5DAF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0cQwBGFRpY2tldAAAcQwUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAAHUMDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAAB5DAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAX0MBFMAAAQAgQwBGFZlYzxUPgAAfQwMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9uxQEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5/AEsT3B0aW9uPHU2ND4AAIEMAAACfQwAhQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcokMAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JDAwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAACNDAhgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9yNQUBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZHUBARBib29sAACRDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAc0DABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzlQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AACVDAQYT3B0aW9uBARUAZkMAQgQTm9uZQAAABBTb21lBACZDAAAAQAAmQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BzQMACAEQcHJlds0DATRNZXNzYWdlT3JpZ2luAAEQbmV4dM0DATRNZXNzYWdlT3JpZ2luAACdDAAABAjNAzgAoQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcKUMAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAKUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAqQwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tDAyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFcnJvcgQEVAABNGhVbnN1cHBvcnRlZExvY2F0aW9uVmVyc2lvbgAABIhDb252ZXJ0IHZlcnNpb25lZCBsb2NhdGlvbiBmYWlsdXJlREludmFsaWRBc3NldE93bmVyAAEEGQFDaGVjayBsb2NhdGlvbiBmYWlsdXJlLCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgZGlzcGF0Y2ggb3JpZ2luIGFzIG93bmVyLFNlbmRGYWlsdXJlAAIEYFNlbmQgeGNtIG1lc3NhZ2UgZmFpbHVyZShGZWVzTm90TWV0AAMEaFdpdGhkcmF3IGZlZSBhc3NldCBmYWlsdXJlYExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAAEBJhDb252ZXJ0IHRvIHJlYW5jaG9yZWQgbG9jYXRpb24gZmFpbHVyZRhIYWx0ZWQABQRgTWVzc2FnZSBleHBvcnQgaXMgaGFsdGVkLFVucmVhY2hhYmxlAAYIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuQFVuc3VwcG9ydGVkQXNzZXQABwS4VGhlIGFzc2V0IHByb3ZpZGVkIGZvciB0aGUgdGlwIGlzIHVuc3VwcG9ydGVkLjRXaXRoZHJhd0Vycm9yAAgEZFVuYWJsZSB0byB3aXRoZHJhdyBhc3NldC44SW52YWxpZEFjY291bnQACQS0QWNjb3VudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIGEgbG9jYXRpb24uJFN3YXBFcnJvcgAKBMhQcm92aWRlZCB0aXAgYXNzZXQgY291bGQgbm90IGJlIHN3YXBwZWQgZm9yIGV0aGVyLiRCdXJuRXJyb3IACwRoRXRoZXIgY291bGQgbm90IGJlIGJ1cm5lZC40VGlwQW1vdW50WmVybwAMBGRUaGUgdGlwIHByb3ZpZGVkIGlzIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrEMDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrUMAAAECAQIALkMCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQE1ASRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW4tBAFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXQ1AQEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc70MAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAAvQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAAwQwMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7FDAAABAjJDDUBAMkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQwEUwAABADRDAEYVmVjPFQ+AADNDAgwcGFsbGV0X3Byb3h5PFByb3h5RGVmaW5pdGlvbgwkQWNjb3VudElkAQQkUHJveHlUeXBlATkELEJsb2NrTnVtYmVyATgADAEgZGVsZWdhdGUEASRBY2NvdW50SWQAAShwcm94eV90eXBlOQQBJFByb3h5VHlwZQABFGRlbGF5OAEsQmxvY2tOdW1iZXIAANEMAAACzQwA1QwAAAQI2Qw1AQDZDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAd0MBFMAAAQA4QwBGFZlYzxUPgAA3QwIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAOEMAAAC3QwA5QwMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LukMAAAEDAQ1AXUBAO0MDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBNQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBNQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHk1AQEcQmFsYW5jZQABHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZTUBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudHUBARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c/UMASxBc3NldFN0YXR1cwAA9QwMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAAD5DAAABAg4BAD9DAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBNQE4RGVwb3NpdEJhbGFuY2UBNQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlNQEBHEJhbGFuY2UAARhzdGF0dXMBDQE0QWNjb3VudFN0YXR1cwABGHJlYXNvbgUNAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAAABDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAAAFDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBNQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBAA1AQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAANQEBHEJhbGFuY2UABAAACQ0AAAQMOAQEAA0NDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlATUBOERlcG9zaXRCYWxhbmNlATUBAAgBGGFtb3VudDUBARxCYWxhbmNlAAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQAAEQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQE0Qm91bmRlZFN0cmluZwEVDQAUARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZRUNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sFQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAABUNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAGQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lh0NBBhPcHRpb24EBFQB8QwBCBBOb25lAAAAEFNvbWUEAPEMAAABAAAhDQQYT3B0aW9uBARUARENAQgQTm9uZQAAABBTb21lBAARDQAAAQAAJQ0MOHBhbGxldF91bmlxdWVzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQE1AQAoARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAATBmcmVlX2hvbGRpbmd1AQEQYm9vbAABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAEkaXNfZnJvemVudQEBEGJvb2wAACkNAAAEDAQ4OAAtDQw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlATUBABABFG93bmVyBAEkQWNjb3VudElkAAEgYXBwcm92ZWSpAQFET3B0aW9uPEFjY291bnRJZD4AASRpc19mcm96ZW51AQEQYm9vbAABHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAADENDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlATUBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YV0EAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAAANQ0MOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhXQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbnUBARBib29sAAA5DQAABAw44N0DAD0NAAAECHg1AQBBDQAABAg1AakBAEUNDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAVgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4oTm9NZXRhZGF0YQASBFRObyBtZXRhZGF0YSBpcyBmb3VuZC40V3JvbmdNZXRhZGF0YQATBKBXcm9uZyBtZXRhZGF0YSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuREF0dHJpYnV0ZU5vdEZvdW5kABQEaEFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuOFdyb25nQXR0cmlidXRlABUEpFdyb25nIGF0dHJpYnV0ZSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkkNDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBNQEAGAEUb3duZXIEASRBY2NvdW50SWQAATRvd25lcl9kZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABMGl0ZW1fY29uZmlnczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAAE0NDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFRDQAEAAwBOENvbGxlY3Rpb25Sb2xlAABRDQwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAAVQ0MLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBBBxEZXBvc2l0AVkNJEFwcHJvdmFscwFdDQAMARRvd25lcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc10NASRBcHByb3ZhbHMAARxkZXBvc2l0WQ0BHERlcG9zaXQAAFkNDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudAQBJEFjY291bnRJZAABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAXQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgHgBFMAAAQAYQ0BOEJUcmVlTWFwPEssIFY+AABhDQQgQlRyZWVNYXAIBEsBBARWAeAABABlDQAAAGUNAAACaQ0AaQ0AAAQIBOAAbQ0MLHBhbGxldF9uZnRzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQgcRGVwb3NpdAE1ASxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdDUBARxEZXBvc2l0AAEQZGF0YVkBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAHENDCxwYWxsZXRfbmZ0cxR0eXBlczBJdGVtTWV0YWRhdGEIHERlcG9zaXQBdQ0sU3RyaW5nTGltaXQAAAgBHGRlcG9zaXR1DQEcRGVwb3NpdAABEGRhdGFZAQFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAB1DQwscGFsbGV0X25mdHMUdHlwZXNMSXRlbU1ldGFkYXRhRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudKkBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAeQ0AAAQQOOCRBHgAfQ0AAAQIWQGBDQCBDQwscGFsbGV0X25mdHMUdHlwZXNAQXR0cmlidXRlRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudKkBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAhQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABACJDQEsQlRyZWVTZXQ8VD4AAIkNBCBCVHJlZVNldAQEVAEEAAQAeQEAAACNDQwscGFsbGV0X25mdHMUdHlwZXMsUGVuZGluZ1N3YXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4WEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24BqQQgRGVhZGxpbmUBOAAQAUhkZXNpcmVkX2NvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAThPcHRpb248SXRlbUlkPgABFHByaWNlpQQBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAJENDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAGVDQAEACgBNFBhbGxldEZlYXR1cmUAAJUNDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAAmQ0MLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lp0NAAAECBkCBAChDQAABAwZAgQEAKUNDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlATUBNEJvdW5kZWRTdHJpbmcBqQ0AFAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWWpDQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbKkNATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAACpDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAK0NDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6xDQQYT3B0aW9uBARUAaUNAQgQTm9uZQAAABBTb21lBAClDQAAAQAAtQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQE0Qm91bmRlZFN0cmluZwG5DQAUARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZbkNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9suQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAALkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAvQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsENBBhPcHRpb24EBFQBtQ0BCBBOb25lAAAAEFNvbWUEALUNAAABAADFDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAyQ0MXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7NDQQYUmVzdWx0CARUAdENBEUByQ0BCAhPawQA0Q0AAAAADEVycgQAyQ0AAAEAANENAAAECDUBNQEA1Q0MVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXJyb3IIBFQABEkAAQQ4VG9vTWFueUZyZWV6ZXMAAAToTnVtYmVyIG9mIGZyZWV6ZXMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgYE1heEZyZWV6ZXNgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7ZDQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dDQw8cGFsbGV0X3NjYXJjaXR5GHBhbGxldDhDb2xsZWN0aW9uSW5mbwwkQWNjb3VudElkAQQcQmFsYW5jZQE1AVBTdG9yYWdlQ29uc2lkZXJhdGlvbgAAIAEUb3duZXIEASRBY2NvdW50SWQAATRwZW5kaW5nX293bmVyqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAE8bmV4dF9pdGVtX2luZGV4OAEkSXRlbUluZGV4AAEoaXRlbV9jb3VudDgBDHUzMgABOG1ldGFkYXRhX2NvdW50OAEMdTMyAAFIY29sbGVjdGlvbl9kZXBvc2l0NQEBHEJhbGFuY2UAATRvd25lcl9kZXBvc2l0NQEBHEJhbGFuY2UAATRjb25zaWRlcmF0aW9u4Q0BUFN0b3JhZ2VDb25zaWRlcmF0aW9uAADhDRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAA1AQEoRjo6QmFsYW5jZQAA5Q0MPHBhbGxldF9zY2FyY2l0eRhwYWxsZXQ4SXRlbURlZmluaXRpb24EHEJhbGFuY2UBNQEAFAEYc3VwcGx5OAEMdTMyAAEsbGl2ZV9zdXBwbHk4AQx1MzIAAThtZXRhZGF0YV9jb3VudDgBDHUzMgABHGRlcG9zaXQ1AQEcQmFsYW5jZQABPHRyYW5zZmVyYWJpbGl0eeEEATxUcmFuc2ZlcmFiaWxpdHkAAOkNAAAECDjdAwDtDQw8cGFsbGV0X3NjYXJjaXR5GHBhbGxldDRNZXRhZGF0YUVudHJ5CBRWYWx1ZQFZARxCYWxhbmNlATUBAAgBFHZhbHVlWQEBFFZhbHVlAAEcZGVwb3NpdDUBARxCYWxhbmNlAADxDQAABAw4ON0DAPUNAAAECCjdAwD5DQw8cGFsbGV0X3NjYXJjaXR5GHBhbGxldCBMb2NrSW5mbwAACAEccmV0cmllcwwBCHU4AAEUdW50aWwoAQx1NjQAAP0NDDxwYWxsZXRfc2NhcmNpdHkYcGFsbGV0FEVycm9yBARUAAFQSFRvb01hbnlDb2xsZWN0aW9ucwAABLRUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyIHNwYWNlIGlzIGV4aGF1c3RlZC5EVW5rbm93bkNvbGxlY3Rpb24AAQR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBPRPbmx5IHRoZSBjdXJyZW50IGNvbGxlY3Rpb24gb3duZXIgbWF5IHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uWEFscmVhZHlDb2xsZWN0aW9uT3duZXIAAwQRAVRoZSBjdXJyZW50IGNvbGxlY3Rpb24gb3duZXIgY2Fubm90IGJlIG5vbWluYXRlZCBhcyBpdHMgcmVwbGFjZW1lbnQuZE5vdFBlbmRpbmdDb2xsZWN0aW9uT3duZXIABAQtAVRoZSBzaWduZXIgaXMgbm90IHRoZSBhY2NvdW50IGN1cnJlbnRseSBub21pbmF0ZWQgdG8gY2xhaW0gdGhpcyBjb2xsZWN0aW9uLjBUb29NYW55SXRlbXMABQTEVGhlIHBlci1jb2xsZWN0aW9uIGl0ZW0gaW5kZXggc3BhY2UgaXMgZXhoYXVzdGVkLixVbmtub3duSXRlbQAGBLRUaGUgcmVxdWVzdGVkIGl0ZW0gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGlzdC4kSXRlbUluVXNlAAcEuEFuIGl0ZW0gd2l0aCBsaXZlIGluc3RhbmNlcyBjYW5ub3QgYmUgZGVsZXRlZC5QSXRlbU1ldGFkYXRhTm90RW1wdHkACATcSXRlbSBtZXRhZGF0YSBtdXN0IGJlIHJlbW92ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBpdGVtLlxDb2xsZWN0aW9uSXRlbXNOb3RFbXB0eQAJBAEBSXRlbSBkZWZpbml0aW9ucyBtdXN0IGJlIGRlbGV0ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBjb2xsZWN0aW9uLmhDb2xsZWN0aW9uTWV0YWRhdGFOb3RFbXB0eQAKBA0BQ29sbGVjdGlvbiBtZXRhZGF0YSBtdXN0IGJlIHJlbW92ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBjb2xsZWN0aW9uLkREZWxldGlvbkludmFyaWFudAALBPhTdG9yZWQgZGVwZW5kZW5jeSBjb3VudGVycyBvciBkZXBvc2l0cyBkbyBub3QgcGVybWl0IGRlbGV0aW9uLjxBZGRyZXNzT2NjdXBpZWQADAS8VGhlIGRlc3RpbmF0aW9uIHB1cnNlIGtleSBhbHJlYWR5IGhvbGRzIGFuIE5GVC5AVG9vTWFueUluc3RhbmNlcwANBNRUaGUgcGVybWFuZW50IGluc3RhbmNlIGlkZW50aWZpZXIgc3BhY2UgaXMgZXhoYXVzdGVkLjhTdXBwbHlPdmVyZmxvdwAOBMBBbiBpdGVtIGRlZmluaXRpb24ncyBtaW50ZWQgc3VwcGx5IGlzIGV4aGF1c3RlZC48VW5rbm93bkluc3RhbmNlAA8ErFRoZSByZXF1ZXN0ZWQgbGl2ZSBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdC5cVG9vTWFueUluc3RhbmNlTWV0YWRhdGEAEAT0VGhlIGNvbmZpZ3VyZWQgcGVyLWluc3RhbmNlIG1ldGFkYXRhIGVudHJ5IGxpbWl0IHdhcyByZWFjaGVkLjBTZWxmVHJhbnNmZXIAEQTYQW4gTkZUIGNhbm5vdCBiZSB0cmFuc2ZlcnJlZCB0byBpdHMgY3VycmVudCBwdXJzZSBrZXkuSFN0YXRlTm9uY2VPdmVyZmxvdwASBLxBbiBORlQgaGFzIGV4aGF1c3RlZCBpdHMgb3duZXJzaGlwLXN0YXRlIG5vbmNlLiRTb3VsYm91bmQAEwQ9AVRoZSBpdGVtIGRlZmluaXRpb24gYmluZHMgaXRzIGluc3RhbmNlcyB0byB0aGUgcHVyc2Uga2V5IHRoZXkgd2VyZSBtaW50ZWQgaW50by4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuAQ4IPHBhbGxldF90cmVhc3VyeSBQcm9wb3NhbAgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAQASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlNQEBHEJhbGFuY2UAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABEGJvbmQ1AQEcQmFsYW5jZQAABQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAWQQBGFZlYzxUPgAACQ4IPHBhbGxldF90cmVhc3VyeSxTcGVuZFN0YXR1cxQkQXNzZXRLaW5kAfUEMEFzc2V0QmFsYW5jZQE1ASxCZW5lZmljaWFyeQH5BCxCbG9ja051bWJlcgE4JFBheW1lbnRJZAEoABgBKGFzc2V0X2tpbmT1BAEkQXNzZXRLaW5kAAEYYW1vdW50NQEBMEFzc2V0QmFsYW5jZQABLGJlbmVmaWNpYXJ5+QQBLEJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBLEJsb2NrTnVtYmVyAAEkZXhwaXJlX2F0OAEsQmxvY2tOdW1iZXIAARhzdGF0dXMNDgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4AAA0OCDxwYWxsZXRfdHJlYXN1cnkwUGF5bWVudFN0YXRlBAhJZAEoAQwcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACAAARDgw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFcnJvcggEVAAESQABLDBJbnZhbGlkSW5kZXgAAASsTm8gcHJvcG9zYWwsIGJvdW50eSBvciBzcGVuZCBhdCB0aGF0IGluZGV4LkBUb29NYW55QXBwcm92YWxzAAEEgFRvbyBtYW55IGFwcHJvdmFscyBpbiB0aGUgcXVldWUuWEluc3VmZmljaWVudFBlcm1pc3Npb24AAghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZUxhbW91bnQgdG8gYmUgc3BlbnQuTFByb3Bvc2FsTm90QXBwcm92ZWQAAwR8UHJvcG9zYWwgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLlhGYWlsZWRUb0NvbnZlcnRCYWxhbmNlAAQEUQFUaGUgYmFsYW5jZSBvZiB0aGUgYXNzZXQga2luZCBpcyBub3QgY29udmVydGlibGUgdG8gdGhlIGJhbGFuY2Ugb2YgdGhlIG5hdGl2ZSBhc3NldC4wU3BlbmRFeHBpcmVkAAUEsFRoZSBzcGVuZCBoYXMgZXhwaXJlZCBhbmQgY2Fubm90IGJlIGNsYWltZWQuLEVhcmx5UGF5b3V0AAYEpFRoZSBzcGVuZCBpcyBub3QgeWV0IGVsaWdpYmxlIGZvciBwYXlvdXQuQEFscmVhZHlBdHRlbXB0ZWQABwScVGhlIHBheW1lbnQgaGFzIGFscmVhZHkgYmVlbiBhdHRlbXB0ZWQuLFBheW91dEVycm9yAAgEzFRoZXJlIHdhcyBzb21lIGlzc3VlIHdpdGggdGhlIG1lY2hhbmlzbSBvZiBwYXltZW50LjBOb3RBdHRlbXB0ZWQACQSkVGhlIHBheW91dCB3YXMgbm90IHlldCBhdHRlbXB0ZWQvY2xhaW1lZC4wSW5jb25jbHVzaXZlAAoExFRoZSBwYXltZW50IGhhcyBuZWl0aGVyIGZhaWxlZCBub3Igc3VjY2VlZGVkIHlldC4EeEVycm9yIGZvciB0aGUgdHJlYXN1cnkgcGFsbGV0LhUOAAAECATtAwAZDgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUYVm90aW5nFBxCYWxhbmNlATUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgkUG9sbEluZGV4ATggTWF4Vm90ZXMAAQgcQ2FzdGluZwQAHQ4ByENhc3Rpbmc8QmFsYW5jZSwgQmxvY2tOdW1iZXIsIFBvbGxJbmRleCwgTWF4Vm90ZXM+AAAAKERlbGVnYXRpbmcEADUOAaxEZWxlZ2F0aW5nPEJhbGFuY2UsIEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAEAAB0ODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRxDYXN0aW5nEBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgkUG9sbEluZGV4ATggTWF4Vm90ZXMAAAwBFHZvdGVzIQ4B3EJvdW5kZWRWZWM8KFBvbGxJbmRleCwgQWNjb3VudFZvdGU8QmFsYW5jZT4pLCBNYXhWb3Rlcz4AASxkZWxlZ2F0aW9ucy0OAVBEZWxlZ2F0aW9uczxCYWxhbmNlPgABFHByaW9yMQ4BfFByaW9yTG9jazxCbG9ja051bWJlciwgQmFsYW5jZT4AACEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBJQ4EUwAABAApDgEYVmVjPFQ+AAAlDgAABAg4AQUAKQ4AAAIlDgAtDgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzLERlbGVnYXRpb25zBBxCYWxhbmNlATUBAAgBFHZvdGVzNQEBHEJhbGFuY2UAARxjYXBpdGFsNQEBHEJhbGFuY2UAADEODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSRQcmlvckxvY2sILEJsb2NrTnVtYmVyATgcQmFsYW5jZQE1AQAIADgBLEJsb2NrTnVtYmVyAAA1AQEcQmFsYW5jZQAANQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlKERlbGVnYXRpbmcMHEJhbGFuY2UBNQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAAUARxiYWxhbmNlNQEBHEJhbGFuY2UAARh0YXJnZXQEASRBY2NvdW50SWQAAShjb252aWN0aW9uCQUBKENvbnZpY3Rpb24AASxkZWxlZ2F0aW9ucy0OAVBEZWxlZ2F0aW9uczxCYWxhbmNlPgABFHByaW9yMQ4BfFByaW9yTG9jazxCbG9ja051bWJlciwgQmFsYW5jZT4AADkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQ4EUwAABABBDgEYVmVjPFQ+AAA9DgAABAjtAzUBAEEOAAACPQ4ARQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXJyb3IIBFQABEkAATAoTm90T25nb2luZwAABFBQb2xsIGlzIG5vdCBvbmdvaW5nLiBOb3RWb3RlcgABBKxUaGUgZ2l2ZW4gYWNjb3VudCBkaWQgbm90IHZvdGUgb24gdGhlIHBvbGwuME5vUGVybWlzc2lvbgACBMhUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uLjxOb1Blcm1pc3Npb25ZZXQAAwRZAVRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24gcmlnaHQgbm93IGJ1dCB3aWxsIGRvIGluIHRoZSBmdXR1cmUuREFscmVhZHlEZWxlZ2F0aW5nAAQEiFRoZSBhY2NvdW50IGlzIGFscmVhZHkgZGVsZWdhdGluZy40QWxyZWFkeVZvdGluZwAFCFUBVGhlIGFjY291bnQgY3VycmVudGx5IGhhcyB2b3RlcyBhdHRhY2hlZCB0byBpdCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCB1bnRpbKB0aGVzZSBhcmUgcmVtb3ZlZCB0aHJvdWdoIGByZW1vdmVfdm90ZWAuREluc3VmZmljaWVudEZ1bmRzAAYE/FRvbyBoaWdoIGEgYmFsYW5jZSB3YXMgcHJvdmlkZWQgdGhhdCB0aGUgYWNjb3VudCBjYW5ub3QgYWZmb3JkLjROb3REZWxlZ2F0aW5nAAcEoFRoZSBhY2NvdW50IGlzIG5vdCBjdXJyZW50bHkgZGVsZWdhdGluZy4gTm9uc2Vuc2UACASURGVsZWdhdGlvbiB0byBvbmVzZWxmIG1ha2VzIG5vIHNlbnNlLjxNYXhWb3Rlc1JlYWNoZWQACQSATWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgcmVhY2hlZC4sQ2xhc3NOZWVkZWQACgQ5AVRoZSBjbGFzcyBtdXN0IGJlIHN1cHBsaWVkIHNpbmNlIGl0IGlzIG5vdCBlYXNpbHkgZGV0ZXJtaW5hYmxlIGZyb20gdGhlIHN0YXRlLiBCYWRDbGFzcwALBIRUaGUgY2xhc3MgSUQgc3VwcGxpZWQgaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuSQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4UmVmZXJlbmR1bUluZm8gHFRyYWNrSWQB7QM0UnVudGltZU9yaWdpbgHxAxhNb21lbnQBOBBDYWxsARUFHEJhbGFuY2UBNQEUVGFsbHkBgQkkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAcwBGBxPbmdvaW5nBABNDgGNAVJlZmVyZW5kdW1TdGF0dXM8VHJhY2tJZCwgUnVudGltZU9yaWdpbiwgTW9tZW50LCBDYWxsLCBCYWxhbmNlLCBUYWxseSwKQWNjb3VudElkLCBTY2hlZHVsZUFkZHJlc3MsPgAAACBBcHByb3ZlZAwAOAEYTW9tZW50AABVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAFUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABACBSZWplY3RlZAwAOAEYTW9tZW50AABVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAFUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgACACRDYW5jZWxsZWQMADgBGE1vbWVudAAAVQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AABVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAwAgVGltZWRPdXQMADgBGE1vbWVudAAAVQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AABVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4ABAAYS2lsbGVkBAA4ARhNb21lbnQABQAATQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXNAUmVmZXJlbmR1bVN0YXR1cyAcVHJhY2tJZAHtAzRSdW50aW1lT3JpZ2luAfEDGE1vbWVudAE4EENhbGwBFQUcQmFsYW5jZQE1ARRUYWxseQGBCSRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MBzAAsARR0cmFja+0DARxUcmFja0lkAAEYb3JpZ2lu8QMBNFJ1bnRpbWVPcmlnaW4AASBwcm9wb3NhbBUFARBDYWxsAAEkZW5hY3RtZW50HQUBUERpc3BhdGNoVGltZTxNb21lbnQ+AAEkc3VibWl0dGVkOAEYTW9tZW50AAFIc3VibWlzc2lvbl9kZXBvc2l0UQ4BbERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPgABQGRlY2lzaW9uX2RlcG9zaXRVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AASBkZWNpZGluZ1kOAXhPcHRpb248RGVjaWRpbmdTdGF0dXM8TW9tZW50Pj4AARR0YWxseYEJARRUYWxseQABIGluX3F1ZXVldQEBEGJvb2wAARRhbGFybWEOAYRPcHRpb248KE1vbWVudCwgU2NoZWR1bGVBZGRyZXNzKT4AAFEODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzHERlcG9zaXQIJEFjY291bnRJZAEEHEJhbGFuY2UBNQEACAEMd2hvBAEkQWNjb3VudElkAAEYYW1vdW50NQEBHEJhbGFuY2UAAFUOBBhPcHRpb24EBFQBUQ4BCBBOb25lAAAAEFNvbWUEAFEOAAABAABZDgQYT3B0aW9uBARUAV0OAQgQTm9uZQAAABBTb21lBABdDgAAAQAAXQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4RGVjaWRpbmdTdGF0dXMELEJsb2NrTnVtYmVyATgACAEUc2luY2U4ASxCbG9ja051bWJlcgABKGNvbmZpcm1pbmfgAUxPcHRpb248QmxvY2tOdW1iZXI+AABhDgQYT3B0aW9uBARUAWUOAQgQTm9uZQAAABBTb21lBABlDgAAAQAAZQ4AAAQIOMwAaQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFtDgRTAAAEAHEOARhWZWM8VD4AAG0OAAAECDg1AQBxDgAAAm0OAHUOAAACeQ4AeQ4AAAQI7QN9DgB9DgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczBUcmFja0RldGFpbHMMHEJhbGFuY2UBNQEYTW9tZW50ATgQTmFtZQExCgAkARBuYW1lMQoBEE5hbWUAATBtYXhfZGVjaWRpbmc4AQx1MzIAAUBkZWNpc2lvbl9kZXBvc2l0NQEBHEJhbGFuY2UAAThwcmVwYXJlX3BlcmlvZDgBGE1vbWVudAABPGRlY2lzaW9uX3BlcmlvZDgBGE1vbWVudAABOGNvbmZpcm1fcGVyaW9kOAEYTW9tZW50AAFQbWluX2VuYWN0bWVudF9wZXJpb2Q4ARhNb21lbnQAATBtaW5fYXBwcm92YWyBDgEUQ3VydmUAASxtaW5fc3VwcG9ydIEOARRDdXJ2ZQAAgQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMUQ3VydmUAAQxATGluZWFyRGVjcmVhc2luZwwBGGxlbmd0aEUFARxQZXJiaWxsAAEUZmxvb3JFBQEcUGVyYmlsbAABEGNlaWxFBQEcUGVyYmlsbAAAAERTdGVwcGVkRGVjcmVhc2luZxABFGJlZ2luRQUBHFBlcmJpbGwAAQxlbmRFBQEcUGVyYmlsbAABEHN0ZXBFBQEcUGVyYmlsbAABGHBlcmlvZEUFARxQZXJiaWxsAAEAKFJlY2lwcm9jYWwMARhmYWN0b3KFDgEgRml4ZWRJNjQAASB4X29mZnNldIUOASBGaXhlZEk2NAABIHlfb2Zmc2V0hQ4BIEZpeGVkSTY0AAIAAIUODDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50IEZpeGVkSTY0AAAEAIkOAQxpNjQAAIkOAAAFDACNDgxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXJyb3IIBFQABEkAATgoTm90T25nb2luZwAABGhSZWZlcmVuZHVtIGlzIG5vdCBvbmdvaW5nLihIYXNEZXBvc2l0AAEEuFJlZmVyZW5kdW0ncyBkZWNpc2lvbiBkZXBvc2l0IGlzIGFscmVhZHkgcGFpZC4gQmFkVHJhY2sAAgScVGhlIHRyYWNrIGlkZW50aWZpZXIgZ2l2ZW4gd2FzIGludmFsaWQuEEZ1bGwAAwQxAVRoZXJlIGFyZSBhbHJlYWR5IGEgZnVsbCBjb21wbGVtZW50IG9mIHJlZmVyZW5kYSBpbiBwcm9ncmVzcyBmb3IgdGhpcyB0cmFjay4oUXVldWVFbXB0eQAEBIBUaGUgcXVldWUgb2YgdGhlIHRyYWNrIGlzIGVtcHR5LjRCYWRSZWZlcmVuZHVtAAUE5FRoZSByZWZlcmVuZHVtIGluZGV4IHByb3ZpZGVkIGlzIGludmFsaWQgaW4gdGhpcyBjb250ZXh0LixOb3RoaW5nVG9EbwAGBKxUaGVyZSB3YXMgbm90aGluZyB0byBkbyBpbiB0aGUgYWR2YW5jZW1lbnQuHE5vVHJhY2sABwSgTm8gdHJhY2sgZXhpc3RzIGZvciB0aGUgcHJvcG9zYWwgb3JpZ2luLihVbmZpbmlzaGVkAAgEAQFBbnkgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgdW50aWwgYWZ0ZXIgdGhlIGRlY2lzaW9uIGlzIG92ZXIuME5vUGVybWlzc2lvbgAJBKhUaGUgZGVwb3NpdCByZWZ1bmRlciBpcyBub3QgdGhlIGRlcG9zaXRvci4kTm9EZXBvc2l0AAoEzFRoZSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCBzaW5jZSBub25lIHdhcyBtYWRlLiRCYWRTdGF0dXMACwTQVGhlIHJlZmVyZW5kdW0gc3RhdHVzIGlzIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9uLkBQcmVpbWFnZU5vdEV4aXN0AAwEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC6EUHJlaW1hZ2VTdG9yZWRXaXRoRGlmZmVyZW50TGVuZ3RoAA0EFQFUaGUgcHJlaW1hZ2UgaXMgc3RvcmVkIHdpdGggYSBkaWZmZXJlbnQgbGVuZ3RoIHRoYW4gdGhlIG9uZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQukQ4MQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEVycm9yBARUAAEUTFVuYXZhaWxhYmxlUHJlSW1hZ2UAAATIVGhlIHByZWltYWdlIG9mIHRoZSBjYWxsIGhhc2ggY291bGQgbm90IGJlIGxvYWRlZC48VW5kZWNvZGFibGVDYWxsAAEEeFRoZSBjYWxsIGNvdWxkIG5vdCBiZSBkZWNvZGVkLmBJbnZhbGlkQ2FsbFdlaWdodFdpdG5lc3MAAgTsVGhlIHdlaWdodCBvZiB0aGUgZGVjb2RlZCBjYWxsIHdhcyBoaWdoZXIgdGhhbiB0aGUgd2l0bmVzcy5QQ2FsbElzTm90V2hpdGVsaXN0ZWQAAwR0VGhlIGNhbGwgd2FzIG5vdCB3aGl0ZWxpc3RlZC5YQ2FsbEFscmVhZHlXaGl0ZWxpc3RlZAAEBKBUaGUgY2FsbCB3YXMgYWxyZWFkeSB3aGl0ZWxpc3RlZDsgTm8tT3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpUOCDxwYWxsZXRfYm91bnRpZXMYQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgAGAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZTUBARxCYWxhbmNlAAEMZmVlNQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXQ1AQEcQmFsYW5jZQABEGJvbmQ1AQEcQmFsYW5jZQABGHN0YXR1c5kOAZBCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AAJkOCDxwYWxsZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzCCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ARwgUHJvcG9zZWQAAAAgQXBwcm92ZWQAAQAYRnVuZGVkAAIAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwAYQWN0aXZlCAEcY3VyYXRvcgQBJEFjY291bnRJZAABKHVwZGF0ZV9kdWU4ASxCbG9ja051bWJlcgAEADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIABQBMQXBwcm92ZWRXaXRoQ3VyYXRvcgQBHGN1cmF0b3IEASRBY2NvdW50SWQABgAAnQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAChDgw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABMHBJbnN1ZmZpY2llbnRQcm9wb3NlcnNCYWxhbmNlAAAEeFByb3Bvc2VyJ3MgYmFsYW5jZSBpcyB0b28gbG93LjBJbnZhbGlkSW5kZXgAAQSQTm8gcHJvcG9zYWwgb3IgYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwACBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy5AVW5leHBlY3RlZFN0YXR1cwADBIBUaGUgYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAEBFxSZXF1aXJlIGJvdW50eSBjdXJhdG9yLjBJbnZhbGlkVmFsdWUABQRUSW52YWxpZCBib3VudHkgdmFsdWUuKEludmFsaWRGZWUABgRMSW52YWxpZCBib3VudHkgZmVlLjRQZW5kaW5nUGF5b3V0AAcIbEEgYm91bnR5IHBheW91dCBpcyBwZW5kaW5nLvhUbyBjYW5jZWwgdGhlIGJvdW50eSwgeW91IG11c3QgdW5hc3NpZ24gYW5kIHNsYXNoIHRoZSBjdXJhdG9yLiRQcmVtYXR1cmUACARFAVRoZSBib3VudGllcyBjYW5ub3QgYmUgY2xhaW1lZC9jbG9zZWQgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBjb3VudGRvd24gcGVyaW9kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAJBAUBVGhlIGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy40VG9vTWFueVF1ZXVlZAAKBJhUb28gbWFueSBhcHByb3ZhbHMgYXJlIGFscmVhZHkgcXVldWVkLixOb3RQcm9wb3NlcgALBJxVc2VyIGlzIG5vdCB0aGUgcHJvcG9zZXIgb2YgdGhlIGJvdW50eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQupQ4IVHBhbGxldF9jaGlsZF9ib3VudGllcyxDaGlsZEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQE1ASxCbG9ja051bWJlcgE4ABQBNHBhcmVudF9ib3VudHk4ASxCb3VudHlJbmRleAABFHZhbHVlNQEBHEJhbGFuY2UAAQxmZWU1AQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdDUBARxCYWxhbmNlAAEYc3RhdHVzqQ4BpENoaWxkQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AACpDghUcGFsbGV0X2NoaWxkX2JvdW50aWVzRENoaWxkQm91bnR5U3RhdHVzCCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ARAUQWRkZWQAAAA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAABABhBY3RpdmUEARxjdXJhdG9yBAEkQWNjb3VudElkAAIANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgADAACtDgxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFcnJvcgQEVAABDFRQYXJlbnRCb3VudHlOb3RBY3RpdmUAAASkVGhlIHBhcmVudCBib3VudHkgaXMgbm90IGluIGFjdGl2ZSBzdGF0ZS5kSW5zdWZmaWNpZW50Qm91bnR5QmFsYW5jZQABBORUaGUgYm91bnR5IGJhbGFuY2UgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5QVG9vTWFueUNoaWxkQm91bnRpZXMAAgQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQ4MRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFcnJvcgQEVAABDEBVbmtub3duQXNzZXRLaW5kAAAEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAEEUQFUaGUgZ2l2ZW4gYXNzZXQgSUQgYWxyZWFkeSBoYXMgYW4gYXNzaWduZWQgY29udmVyc2lvbiByYXRlIGFuZCBjYW5ub3QgYmUgcmUtY3JlYXRlZC4gT3ZlcmZsb3cAAgTMT3ZlcmZsb3cgb2N1cnJlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIHJhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrUOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYQm91bnR5GCRBY2NvdW50SWQBBBxCYWxhbmNlATUBJEFzc2V0S2luZAH1BBBIYXNoATwkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB+QQAEAEoYXNzZXRfa2luZPUEASRBc3NldEtpbmQAARR2YWx1ZTUBARxCYWxhbmNlAAEgbWV0YWRhdGE8ARBIYXNoAAEYc3RhdHVzuQ4BvEJvdW50eVN0YXR1czxBY2NvdW50SWQsIFBheW1lbnRJZCwgQmVuZWZpY2lhcnk+AAC5DghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzMEJvdW50eVN0YXR1cwwkQWNjb3VudElkAQQkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB+QQBGEBGdW5kaW5nQXR0ZW1wdGVkCAEcY3VyYXRvcgQBJEFjY291bnRJZAABOHBheW1lbnRfc3RhdHVzvQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAAAGEZ1bmRlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQBEQ3VyYXRvclVuYXNzaWduZWQAAgAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAADADxSZWZ1bmRBdHRlbXB0ZWQIARxjdXJhdG9yqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAE4cGF5bWVudF9zdGF0dXO9DgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4ABAA8UGF5b3V0QXR0ZW1wdGVkDAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5+QQBLEJlbmVmaWNpYXJ5AAE4cGF5bWVudF9zdGF0dXO9DgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4ABQAAvQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBQYXltZW50U3RhdGUECElkASgBEBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAJFN1Y2NlZWRlZAADAADBDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzLENoaWxkQm91bnR5FCRBY2NvdW50SWQBBBxCYWxhbmNlATUBEEhhc2gBPCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQH5BAAQATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZTUBARxCYWxhbmNlAAEgbWV0YWRhdGE8ARBIYXNoAAEYc3RhdHVzuQ4BvEJvdW50eVN0YXR1czxBY2NvdW50SWQsIFBheW1lbnRJZCwgQmVuZWZpY2lhcnk+AADFDgAABAg44ADJDhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAA1AQEoRjo6QmFsYW5jZQAAzQ4MbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAAUgwSW52YWxpZEluZGV4AAAEfE5vIGNoaWxkLS9ib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAEEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLjBJbnZhbGlkVmFsdWUAAgRwSW52YWxpZCBjaGlsZC0vYm91bnR5IHZhbHVlLlhGYWlsZWRUb0NvbnZlcnRCYWxhbmNlAAMIXQFUaGUgYmFsYW5jZSBvZiB0aGUgYXNzZXQga2luZCBpcyBub3QgY29udmVydGlibGUgdG8gdGhlIGJhbGFuY2Ugb2YgdGhlIG5hdGl2ZSBhc3NldCBmb3KEYXNzZXJ0aW5nIHRoZSBvcmlnaW4gcGVybWlzc2lvbnMuQFVuZXhwZWN0ZWRTdGF0dXMABAScVGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAUEeFJlcXVpcmUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAYIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVEcmVxdWVzdGVkIGFtb3VudC4wRnVuZGluZ0Vycm9yAAcEvFRoZXJlIHdhcyBpc3N1ZSB3aXRoIGZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFJlZnVuZEVycm9yAAgExFRoZXJlIHdhcyBpc3N1ZSB3aXRoIHJlZnVuZGluZyB0aGUgY2hpbGQtL2JvdW50eS4sUGF5b3V0RXJyb3IACQBMRnVuZGluZ0luY29uY2x1c2l2ZQAKBLBDaGlsZC0vYm91bnR5IGZ1bmRpbmcgaGFzIG5vdCBjb25jbHVkZWQgeWV0LkhSZWZ1bmRJbmNvbmNsdXNpdmUACwSsQ2hpbGQtL2JvdW50eSByZWZ1bmQgaGFzIG5vdCBjb25jbHVkZWQgeWV0LkhQYXlvdXRJbmNvbmNsdXNpdmUADASsQ2hpbGQtL2JvdW50eSBwYXlvdXQgaGFzIG5vdCBjb25jbHVkZWQgeWV0LlRGYWlsZWRUb0NvbnZlcnRTb3VyY2UADQhVAVRoZSBjaGlsZC0vYm91bnR5IG9yIGZ1bmRpbmcgc291cmNlIGFjY291bnQgY291bGQgbm90IGJlIGRlcml2ZWQgZnJvbSB0aGUgaW5kZXhlcyBhbmQsYXNzZXQga2luZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkADgQhAVRoZSBwYXJlbnQgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLlBUb29NYW55Q2hpbGRCb3VudGllcwAPBA0BTnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIGV4Y2VlZHMgbGltaXQgYE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgLlxJbnN1ZmZpY2llbnRCb3VudHlWYWx1ZQAQBPhUaGUgcGFyZW50IGJvdW50eSB2YWx1ZSBpcyBub3QgZW5vdWdoIHRvIGFkZCBuZXcgY2hpbGQtYm91bnR5LkBQcmVpbWFnZU5vdEV4aXN0ABEEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0Q4MKHBhbGxldF9kYXAYcGFsbGV0FEVycm9yBARUAAEIQFVua25vd25CdWRnZXRLZXkAAAQdAUEga2V5IGluIHRoZSBidWRnZXQgYWxsb2NhdGlvbiBkb2VzIG5vdCBtYXRjaCBhbnkgcmVnaXN0ZXJlZCByZWNpcGllbnQuOEJ1ZGdldE5vdEV4YWN0AAEE5EJ1ZGdldCBhbGxvY2F0aW9uIHBlcmNlbnRhZ2VzIGRvIG5vdCBzdW0gdG8gZXhhY3RseSAxMDAlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VDgAAAtkOANkOAAAEDN0DBEUFAN0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhQb29sTWVtYmVyBARUAAAQARxwb29sX2lkOAEYUG9vbElkAAEYcG9pbnRzNQEBMEJhbGFuY2VPZjxUPgABcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXI1BQFAVDo6UmV3YXJkQ291bnRlcgABOHVuYm9uZGluZ19lcmFz4Q4B4EJvdW5kZWRCVHJlZU1hcDxFcmFJbmRleCwgQmFsYW5jZU9mPFQ+LCBUOjpNYXhVbmJvbmRpbmc+AADhDgxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBOARWATUBBFMAAAQA5Q4BOEJUcmVlTWFwPEssIFY+AADlDgQgQlRyZWVNYXAIBEsBOARWATUBAAQAcQ4AAADpDghccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Qm9uZGVkUG9vbElubmVyBARUAAAUAShjb21taXNzaW9u7Q4BNENvbW1pc3Npb248VD4AAThtZW1iZXJfY291bnRlcjgBDHUzMgABGHBvaW50czUBATBCYWxhbmNlT2Y8VD4AARRyb2xlc/UOAVxQb29sUm9sZXM8VDo6QWNjb3VudElkPgABFHN0YXRldQUBJFBvb2xTdGF0ZQAA7Q4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKENvbW1pc3Npb24EBFQAABQBHGN1cnJlbnSNBQF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgABDG1heL0JATxPcHRpb248UGVyYmlsbD4AASxjaGFuZ2VfcmF0ZfEOAbxPcHRpb248Q29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+PgABNHRocm90dGxlX2Zyb23gAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAFAY2xhaW1fcGVybWlzc2lvbpkFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAA8Q4EGE9wdGlvbgQEVAGVBQEIEE5vbmUAAAAQU29tZQQAlQUAAAEAAPUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRQb29sUm9sZXMEJEFjY291bnRJZAEEABABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABEHJvb3SpAQFET3B0aW9uPEFjY291bnRJZD4AASRub21pbmF0b3KpAQFET3B0aW9uPEFjY291bnRJZD4AARxib3VuY2VyqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAD5DghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUmV3YXJkUG9vbAQEVAAAFAFwbGFzdF9yZWNvcmRlZF9yZXdhcmRfY291bnRlcjUFAUBUOjpSZXdhcmRDb3VudGVyAAFsbGFzdF9yZWNvcmRlZF90b3RhbF9wYXlvdXRzNQEBMEJhbGFuY2VPZjxUPgABVHRvdGFsX3Jld2FyZHNfY2xhaW1lZDUBATBCYWxhbmNlT2Y8VD4AAWB0b3RhbF9jb21taXNzaW9uX3BlbmRpbmc1AQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9jbGFpbWVkNQEBMEJhbGFuY2VPZjxUPgAA/Q4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIFN1YlBvb2xzBARUAAAIARhub19lcmEBDwE0VW5ib25kUG9vbDxUPgABIHdpdGhfZXJhBQ8BAQFCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIFVuYm9uZFBvb2w8VD4sIFRvdGFsVW5ib25kaW5nUG9vbHM8VD4+AAABDwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoVW5ib25kUG9vbAQEVAAACAEYcG9pbnRzNQEBMEJhbGFuY2VPZjxUPgABHGJhbGFuY2U1AQEwQmFsYW5jZU9mPFQ+AAAFDwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBOARWAQEPBFMAAAQACQ8BOEJUcmVlTWFwPEssIFY+AAAJDwQgQlRyZWVNYXAIBEsBOARWAQEPAAQADQ8AAAANDwAAAhEPABEPAAAECDgBDwAVDwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0FEVycm9yBARUAAGYMFBvb2xOb3RGb3VuZAAABIhBIChib25kZWQpIHBvb2wgaWQgZG9lcyBub3QgZXhpc3QuSFBvb2xNZW1iZXJOb3RGb3VuZAABBGxBbiBhY2NvdW50IGlzIG5vdCBhIG1lbWJlci5IUmV3YXJkUG9vbE5vdEZvdW5kAAIEIQFBIHJld2FyZCBwb29sIGRvZXMgbm90IGV4aXN0LiBJbiBhbGwgY2FzZXMgdGhpcyBpcyBhIHN5c3RlbSBsb2dpYyBlcnJvci5AU3ViUG9vbHNOb3RGb3VuZAADBGhBIHN1YiBwb29sIGRvZXMgbm90IGV4aXN0LmRBY2NvdW50QmVsb25nc1RvT3RoZXJQb29sAAQITQFBbiBhY2NvdW50IGlzIGFscmVhZHkgZGVsZWdhdGluZyBpbiBhbm90aGVyIHBvb2wuIEFuIGFjY291bnQgbWF5IG9ubHkgYmVsb25nIHRvIG9uZTxwb29sIGF0IGEgdGltZS44RnVsbHlVbmJvbmRpbmcABQg9AVRoZSBtZW1iZXIgaXMgZnVsbHkgdW5ib25kZWQgKGFuZCB0aHVzIGNhbm5vdCBhY2Nlc3MgdGhlIGJvbmRlZCBhbmQgcmV3YXJkIHBvb2yoYW55bW9yZSB0bywgZm9yIGV4YW1wbGUsIGNvbGxlY3QgcmV3YXJkcykuRE1heFVuYm9uZGluZ0xpbWl0AAYECQFUaGUgbWVtYmVyIGNhbm5vdCB1bmJvbmQgZnVydGhlciBjaHVua3MgZHVlIHRvIHJlYWNoaW5nIHRoZSBsaW1pdC5EQ2Fubm90V2l0aGRyYXdBbnkABwRNAU5vbmUgb2YgdGhlIGZ1bmRzIGNhbiBiZSB3aXRoZHJhd24geWV0IGJlY2F1c2UgdGhlIGJvbmRpbmcgZHVyYXRpb24gaGFzIG5vdCBwYXNzZWQuRE1pbmltdW1Cb25kTm90TWV0AAgUKQFUaGUgYW1vdW50IGRvZXMgbm90IG1lZXQgdGhlIG1pbmltdW0gYm9uZCB0byBlaXRoZXIgam9pbiBvciBjcmVhdGUgYSBwb29sLgBVAVRoZSBkZXBvc2l0b3IgY2FuIG5ldmVyIHVuYm9uZCB0byBhIHZhbHVlIGxlc3MgdGhhbiBgUGFsbGV0OjpkZXBvc2l0b3JfbWluX2JvbmRgLiBUaGVdAWNhbGxlciBkb2VzIG5vdCBoYXZlIG5vbWluYXRpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBwb29sLiBNZW1iZXJzIGNhbiBuZXZlciB1bmJvbmQgdG8gYWh2YWx1ZSBiZWxvdyBgTWluSm9pbkJvbmRgLjBPdmVyZmxvd1Jpc2sACQQhAVRoZSB0cmFuc2FjdGlvbiBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgZHVlIHRvIG92ZXJmbG93IHJpc2sgZm9yIHRoZSBwb29sLjROb3REZXN0cm95aW5nAAoIXQFBIHBvb2wgbXVzdCBiZSBpbiBbYFBvb2xTdGF0ZTo6RGVzdHJveWluZ2BdIGluIG9yZGVyIGZvciB0aGUgZGVwb3NpdG9yIHRvIHVuYm9uZCBvciBmb3K4b3RoZXIgbWVtYmVycyB0byBiZSBwZXJtaXNzaW9ubGVzc2x5IHVuYm9uZGVkLjBOb3ROb21pbmF0b3IACwT0VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIG5vbWluYXRpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBwb29sLlROb3RLaWNrZXJPckRlc3Ryb3lpbmcADAQ9AUVpdGhlciBhKSB0aGUgY2FsbGVyIGNhbm5vdCBtYWtlIGEgdmFsaWQga2ljayBvciBiKSB0aGUgcG9vbCBpcyBub3QgZGVzdHJveWluZy4cTm90T3BlbgANBHBUaGUgcG9vbCBpcyBub3Qgb3BlbiB0byBqb2luIE1heFBvb2xzAA4EhFRoZSBzeXN0ZW0gaXMgbWF4ZWQgb3V0IG9uIHBvb2xzLjhNYXhQb29sTWVtYmVycwAPBJxUb28gbWFueSBtZW1iZXJzIGluIHRoZSBwb29sIG9yIHN5c3RlbS5EQ2FuTm90Q2hhbmdlU3RhdGUAEASIVGhlIHBvb2xzIHN0YXRlIGNhbm5vdCBiZSBjaGFuZ2VkLlREb2VzTm90SGF2ZVBlcm1pc3Npb24AEQS4VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLlRNZXRhZGF0YUV4Y2VlZHNNYXhMZW4AEgSsTWV0YWRhdGEgZXhjZWVkcyBbYENvbmZpZzo6TWF4TWV0YWRhdGFMZW5gXSREZWZlbnNpdmUEABkPAThEZWZlbnNpdmVFcnJvcgATCDEBU29tZSBlcnJvciBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4uIFRoaXMgc2hvdWxkIGJlIHJlcG9ydGVkIHRvIHRoZTBtYWludGFpbmVycy6cUGFydGlhbFVuYm9uZE5vdEFsbG93ZWRQZXJtaXNzaW9ubGVzc2x5ABQEvFBhcnRpYWwgdW5ib25kaW5nIG5vdyBhbGxvd2VkIHBlcm1pc3Npb25sZXNzbHkuXE1heENvbW1pc3Npb25SZXN0cmljdGVkABUEHQFUaGUgcG9vbCdzIG1heCBjb21taXNzaW9uIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gdGhlIGV4aXN0aW5nIHZhbHVlLmBDb21taXNzaW9uRXhjZWVkc01heGltdW0AFgTsVGhlIHN1cHBsaWVkIGNvbW1pc3Npb24gZXhjZWVkcyB0aGUgbWF4IGFsbG93ZWQgY29tbWlzc2lvbi54Q29tbWlzc2lvbkV4Y2VlZHNHbG9iYWxNYXhpbXVtABcE6FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgZ2xvYmFsIG1heGltdW0gY29tbWlzc2lvbi5kQ29tbWlzc2lvbkNoYW5nZVRocm90dGxlZAAYBAkBTm90IGVub3VnaCBibG9ja3MgaGF2ZSBzdXJwYXNzZWQgc2luY2UgdGhlIGxhc3QgY29tbWlzc2lvbiB1cGRhdGUueENvbW1pc3Npb25DaGFuZ2VSYXRlTm90QWxsb3dlZAAZBAEBVGhlIHN1Ym1pdHRlZCBjaGFuZ2VzIHRvIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgYXJlIG5vdCBhbGxvd2VkLkxOb1BlbmRpbmdDb21taXNzaW9uABoEoFRoZXJlIGlzIG5vIHBlbmRpbmcgY29tbWlzc2lvbiB0byBjbGFpbS5YTm9Db21taXNzaW9uQ3VycmVudFNldAAbBIxObyBjb21taXNzaW9uIGN1cnJlbnQgaGFzIGJlZW4gc2V0LixQb29sSWRJblVzZQAcBGRQb29sIGlkIGN1cnJlbnRseSBpbiB1c2UuNEludmFsaWRQb29sSWQAHQScUG9vbCBpZCBwcm92aWRlZCBpcyBub3QgY29ycmVjdC91c2FibGUuTEJvbmRFeHRyYVJlc3RyaWN0ZWQAHgT8Qm9uZGluZyBleHRyYSBpcyByZXN0cmljdGVkIHRvIHRoZSBleGFjdCBwZW5kaW5nIHJld2FyZCBhbW91bnQuPE5vdGhpbmdUb0FkanVzdAAfBLBObyBpbWJhbGFuY2UgaW4gdGhlIEVEIGRlcG9zaXQgZm9yIHRoZSBwb29sLjhOb3RoaW5nVG9TbGFzaAAgBMxObyBzbGFzaCBwZW5kaW5nIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIG1lbWJlci4sU2xhc2hUb29Mb3cAIQSoVGhlIHNsYXNoIGFtb3VudCBpcyB0b28gbG93IHRvIGJlIGFwcGxpZWQuPEFscmVhZHlNaWdyYXRlZAAiBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGUgc3Rha2UuLE5vdE1pZ3JhdGVkACMEFQFUaGUgcG9vbCBvciBtZW1iZXIgZGVsZWdhdGlvbiBoYXMgbm90IG1pZ3JhdGVkIHlldCB0byBkZWxlZ2F0ZSBzdGFrZS4wTm90U3VwcG9ydGVkACQE8FRoaXMgY2FsbCBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcGFsbGV0LihSZXN0cmljdGVkACUIUQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHBvb2xzLiBUaGlzIG1heSBoYXBwZW4gaWYgdGhlIGFjY291bnQgaXN8c3Rha2luZyBpbiBhbm90aGVyIHdheSBhbHJlYWR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZDwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0OERlZmVuc2l2ZUVycm9yAAEcaE5vdEVub3VnaFNwYWNlSW5VbmJvbmRQb29sAAAAMFBvb2xOb3RGb3VuZAABAEhSZXdhcmRQb29sTm90Rm91bmQAAgBAU3ViUG9vbHNOb3RGb3VuZAADAHBCb25kZWRTdGFzaEtpbGxlZFByZW1hdHVyZWx5AAQAVERlbGVnYXRpb25VbnN1cHBvcnRlZAAFADxTbGFzaE5vdEFwcGxpZWQABgAAHQ8MQHBhbGxldF9iYWdzX2xpc3QQbGlzdBBOb2RlCARUAARJAAAUAQhpZAQBMFQ6OkFjY291bnRJZAABEHByZXapAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARBuZXh0qQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEkYmFnX3VwcGVyKAEgVDo6U2NvcmUAARRzY29yZSgBIFQ6OlNjb3JlAAAhDwxAcGFsbGV0X2JhZ3NfbGlzdBBsaXN0DEJhZwgEVAAESQAACAEQaGVhZKkBAVBPcHRpb248VDo6QWNjb3VudElkPgABEHRhaWypAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AACUPAAACKAApDwxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQURXJyb3IIBFQABEkAAQgQTGlzdAQALQ8BJExpc3RFcnJvcgAABLRBIGVycm9yIGluIHRoZSBsaXN0IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4YTG9ja2VkAAEE2ENvdWxkIG5vdCB1cGRhdGUgYSBub2RlLCBiZWNhdXNlIHRoZSBwYWxsZXQgaXMgbG9ja2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4tDwxAcGFsbGV0X2JhZ3NfbGlzdBBsaXN0JExpc3RFcnJvcgABFCREdXBsaWNhdGUAAAAoTm90SGVhdmllcgABADBOb3RJblNhbWVCYWcAAgAwTm9kZU5vdEZvdW5kAAMAGExvY2tlZAAEAAAxDwAABAj8/AA1DwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzKERlbGVnYXRpb24EBFQAAAgBFGFnZW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAAOQ8MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWRxAQEwQmFsYW5jZU9mPFQ+AAFUdW5jbGFpbWVkX3dpdGhkcmF3YWxzcQEBMEJhbGFuY2VPZjxUPgABNHBlbmRpbmdfc2xhc2hxAQEwQmFsYW5jZU9mPFQ+AAA9DwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQ8AAAQIRQ84AEUPCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnRIVmFsaWRhdG9yU2V0UmVwb3J0BCRBY2NvdW50SWQBBAAQAURuZXdfdmFsaWRhdG9yX3NldHkBAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/gAVBPcHRpb248U2Vzc2lvbkluZGV4PgABIGxlZnRvdmVydQEBEGJvb2wAAEkPDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEVycm9yBARUAAEUNFhjbVNlbmRGYWlsZWQAAAS4RmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UgdG8gdGhlIFJlbGF5IENoYWluLjBOb3RWYWxpZGF0b3IAARTEVGhlIG9yaWdpbiBhY2NvdW50IGlzIG5vdCBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLgBZAU9ubHkgYWNjb3VudHMgdGhhdCBoYXZlIGNhbGxlZCBgdmFsaWRhdGUoKWAgY2FuIHNldCBvciBwdXJnZSBzZXNzaW9uIGtleXMuIFdoZW4gY2FsbGVkSQF2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgb3JpZ2luIGlzIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgKHN0YXNoKSwgd2hpY2ggbXVzdCBiZSBhVHJlZ2lzdGVyZWQgdmFsaWRhdG9yLixJbnZhbGlkS2V5cwACBEUBVGhlIHNlc3Npb24ga2V5cyBjb3VsZCBub3QgYmUgZGVjb2RlZCBhcyB0aGUgZXhwZWN0ZWQgUmVsYXlDaGFpblNlc3Npb25LZXlzIHR5cGUuMEludmFsaWRQcm9vZgADBLRJbnZhbGlkIG93bmVyc2hpcCBwcm9vZiBmb3IgdGhlIHNlc3Npb24ga2V5cy48RmVlc0V4Y2VlZGVkTWF4AAQEtERlbGl2ZXJ5IGZlZXMgZXhjZWVkZWQgdGhlIHNwZWNpZmllZCBtYXhpbXVtLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVEPBFMAAAQAWQ8BGFZlYzxUPgAAUQ8AAAQMBChVDwBVDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAB5AQEYVmVjPFQ+AABZDwAAAlEPAF0PDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AAGEPDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEVycm9yBARUAAEMIEZhbGxiYWNrAAAEhFRyaWdnZXJpbmcgdGhlIGBGYWxsYmFja2AgZmFpbGVkLjxVbmV4cGVjdGVkUGhhc2UAAQRAVW5leHBlY3RlZCBwaGFzZSBTbmFwc2hvdAACBGRTbmFwc2hvdCB3YXMgdW5hdmFpbGFibGUuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLmUPEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHM0VmFsaWRTb2x1dGlvbgABCARYAAAABFkAAQAAaQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFtDwRTAAAEAHUPARhWZWM8VD4AAG0PAAAECARxDwBxDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzPFBhcnRpYWxCYWNraW5ncwAACAEUdG90YWw1AQE8RXh0ZW5kZWRCYWxhbmNlAAEcYmFja2VyczgBDHUzMgAAdQ8AAAJtDwB5DxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGFN0YXR1cwABCBxPbmdvaW5nBAA4ASRQYWdlSW5kZXgAAAAcTm90aGluZwABAAB9DwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEPBFMAAAQAhQ8BGFZlYzxUPgAAgQ8AAAQIBPkFAIUPAAACgQ8AiQ8AAAQMOAQ4AI0PDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkSFN1Ym1pc3Npb25NZXRhZGF0YQQEVAAAFAEcZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4AAQxmZWU1AQEwQmFsYW5jZU9mPFQ+AAEYcmV3YXJkNQEBMEJhbGFuY2VPZjxUPgABNGNsYWltZWRfc2NvcmX5BQE0RWxlY3Rpb25TY29yZQABFHBhZ2VzkQ8BaEJvdW5kZWRWZWM8Ym9vbCwgVDo6UGFnZXM+AACRDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUBBFMAAAQAlQ8BGFZlYzxUPgAAlQ8AAAJ1AQCZDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXJyb3IEBFQAASQ4UGhhc2VOb3RTaWduZWQAAARgVGhlIHBoYXNlIGlzIG5vdCBzaWduZWQuJER1cGxpY2F0ZQABBHhUaGUgc3VibWlzc2lvbiBpcyBhIGR1cGxpY2F0ZS4kUXVldWVGdWxsAAIESFRoZSBxdWV1ZSBpcyBmdWxsLjBCYWRQYWdlSW5kZXgAAwSAVGhlIHBhZ2UgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy40Tm90UmVnaXN0ZXJlZAAEBHhUaGUgYWNjb3VudCBpcyBub3QgcmVnaXN0ZXJlZC4wTm9TdWJtaXNzaW9uAAUEUE5vIHN1Ym1pc3Npb24gZm91bmQuMFJvdW5kTm90T3ZlcgAGBFhSb3VuZCBpcyBub3QgeWV0IG92ZXIuOEJhZFdpdG5lc3NEYXRhAAcEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAgEsFRvbyBtYW55IGludnVsbmVyYWJsZSBhY2NvdW50cyBhcmUgcHJvdmlkZWQsBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lp0PDFBwYWxsZXRfc3Rha2luZ19hc3luYxhsZWRnZXI0U3Rha2luZ0xlZGdlcgQEVAAAEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARR0b3RhbHEBATBCYWxhbmNlT2Y8VD4AARhhY3RpdmVxAQEwQmFsYW5jZU9mPFQ+AAEkdW5sb2NraW5nHQcB8EJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6TWF4VW5sb2NraW5nQ2h1bmtzPgAAoQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jLE5vbWluYXRpb25zBARUAAAMARx0YXJnZXRzVQ8BtEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBNYXhOb21pbmF0aW9uc09mPFQ+PgABMHN1Ym1pdHRlZF9pbjgBIEVyYUluZGV4AAEoc3VwcHJlc3NlZHUBARBib29sAAClDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM0QWN0aXZlRXJhSW5mbwAACAEUaW5kZXg4ASBFcmFJbmRleAABFHN0YXJ0/AEsT3B0aW9uPHU2ND4AAKkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzARTAAAEACUKARhWZWM8VD4AAK0PCChzcF9zdGFraW5nVFBhZ2VkRXhwb3N1cmVNZXRhZGF0YQQcQmFsYW5jZQE1AQAQARR0b3RhbHEBARxCYWxhbmNlAAEMb3ducQEBHEJhbGFuY2UAATxub21pbmF0b3JfY291bnQ4AQx1MzIAAShwYWdlX2NvdW50OAEQUGFnZQAAsQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXRMQm91bmRlZEV4cG9zdXJlUGFnZQQEVAAABAC1DwGgRXhwb3N1cmVQYWdlPFQ6OkFjY291bnRJZCwgQmFsYW5jZU9mPFQ+PgAAtQ8IKHNwX3N0YWtpbmcwRXhwb3N1cmVQYWdlCCRBY2NvdW50SWQBBBxCYWxhbmNlATUBAAgBKHBhZ2VfdG90YWxxAQEcQmFsYW5jZQABGG90aGVyc7kPAaxWZWM8SW5kaXZpZHVhbEV4cG9zdXJlPEFjY291bnRJZCwgQmFsYW5jZT4+AAC5DwAAAr0PAL0PCChzcF9zdGFraW5nSEluZGl2aWR1YWxFeHBvc3VyZQgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAIAQx3aG8EASRBY2NvdW50SWQAARR2YWx1ZXEBARxCYWxhbmNlAADBDwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUATgEUwAABABZBAEYVmVjPFQ+AADFDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM8RXJhUmV3YXJkUG9pbnRzBARUAAAIARR0b3RhbDgBLFJld2FyZFBvaW50AAEoaW5kaXZpZHVhbMkPAfhCb3VuZGVkQlRyZWVNYXA8VDo6QWNjb3VudElkLCBSZXdhcmRQb2ludCwgVDo6TWF4VmFsaWRhdG9yU2V0PgAAyQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgE4BFMAAAQAzQ8BOEJUcmVlTWFwPEssIFY+AADNDwQgQlRyZWVNYXAIBEsBBARWATgABACtBQAAANEPDFBwYWxsZXRfc3Rha2luZ19hc3luYyBzbGFzaGluZzRPZmZlbmNlUmVjb3JkBCRBY2NvdW50SWQBBAAUASByZXBvcnRlcqkBAURPcHRpb248QWNjb3VudElkPgABMHJlcG9ydGVkX2VyYTgBIEVyYUluZGV4AAE0ZXhwb3N1cmVfcGFnZTgBDHUzMgABOHNsYXNoX2ZyYWN0aW9uRQUBHFBlcmJpbGwAAVBwcmlvcl9zbGFzaF9mcmFjdGlvbkUFARxQZXJiaWxsAADVDwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUATgEUwAABABZBAEYVmVjPFQ+AADZDwAABAw4BNEPAN0PAAAECDgpBwDhDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM4VW5hcHBsaWVkU2xhc2gEBFQAABQBJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABDG93bjUBATBCYWxhbmNlT2Y8VD4AARhvdGhlcnPlDwERAVdlYWtCb3VuZGVkVmVjPChUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPiksIFQ6Ok1heEV4cG9zdXJlUGFnZVNpemU+AAEgcmVwb3J0ZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARhwYXlvdXQ1AQEwQmFsYW5jZU9mPFQ+AADlDwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAe0FBFMAAAQA8QUBGFZlYzxUPgAA6Q8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH9BgRTAAAEAPkGARhWZWM8VD4AAO0PAAAECEUFNQEA8Q8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFNuYXBzaG90U3RhdHVzBCRBY2NvdW50SWQBBAEMHE9uZ29pbmcEAAQBJEFjY291bnRJZAAAACBDb25zdW1lZAABABxXYWl0aW5nAAIAAPUPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAEEBFMAAAQAiQ0BLEJUcmVlU2V0PFQ+AAD5DxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCxQcnVuaW5nU3RlcAABJEBFcmFzU3Rha2Vyc1BhZ2VkAAAATEVyYXNTdGFrZXJzT3ZlcnZpZXcAAQBIRXJhc1ZhbGlkYXRvclByZWZzAAIAOENsYWltZWRSZXdhcmRzAAMATEVyYXNWYWxpZGF0b3JSZXdhcmQABABARXJhc1Jld2FyZFBvaW50cwAFAExTaW5nbGVFbnRyeUNsZWFudXBzAAYATFZhbGlkYXRvclNsYXNoSW5FcmEABwBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAAIAAD9DxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFcnJvcgQEVAABmDROb3RDb250cm9sbGVyAAAEZE5vdCBhIGNvbnRyb2xsZXIgYWNjb3VudC4gTm90U3Rhc2gAAQRQTm90IGEgc3Rhc2ggYWNjb3VudC40QWxyZWFkeUJvbmRlZAACBGBTdGFzaCBpcyBhbHJlYWR5IGJvbmRlZC40QWxyZWFkeVBhaXJlZAADBHRDb250cm9sbGVyIGlzIGFscmVhZHkgcGFpcmVkLjBFbXB0eVRhcmdldHMABARgVGFyZ2V0cyBjYW5ub3QgYmUgZW1wdHkuOER1cGxpY2F0ZUluZGV4AAUEQER1cGxpY2F0ZSBpbmRleC5ISW52YWxpZFNsYXNoUmVjb3JkAAYEXFNsYXNoIHJlY29yZCBub3QgZm91bmQuQEluc3VmZmljaWVudEJvbmQABww1AUNhbm5vdCBib25kLCBub21pbmF0ZSBvciB2YWxpZGF0ZSB3aXRoIHZhbHVlIGxlc3MgdGhhbiB0aGUgbWluaW11bSBkZWZpbmVkIGJ5PQFnb3Zlcm5hbmNlIChzZWUgYE1pblZhbGlkYXRvckJvbmRgIGFuZCBgTWluTm9taW5hdG9yQm9uZGApLiBJZiB1bmJvbmRpbmcgaXMgdGhlFQFpbnRlbnRpb24sIGBjaGlsbGAgZmlyc3QgdG8gcmVtb3ZlIG9uZSdzIHJvbGUgYXMgdmFsaWRhdG9yL25vbWluYXRvci4wTm9Nb3JlQ2h1bmtzAAgEkENhbiBub3Qgc2NoZWR1bGUgbW9yZSB1bmxvY2sgY2h1bmtzLjROb1VubG9ja0NodW5rAAkEoENhbiBub3QgcmVib25kIHdpdGhvdXQgdW5sb2NraW5nIGNodW5rcy4wRnVuZGVkVGFyZ2V0AAoEyEF0dGVtcHRpbmcgdG8gdGFyZ2V0IGEgc3Rhc2ggdGhhdCBzdGlsbCBoYXMgZnVuZHMuSEludmFsaWRFcmFUb1Jld2FyZAALBFhJbnZhbGlkIGVyYSB0byByZXdhcmQuaEludmFsaWROdW1iZXJPZk5vbWluYXRpb25zAAwEeEludmFsaWQgbnVtYmVyIG9mIG5vbWluYXRpb25zLjhBbHJlYWR5Q2xhaW1lZAANBAkBUmV3YXJkcyBmb3IgdGhpcyBlcmEgaGF2ZSBhbHJlYWR5IGJlZW4gY2xhaW1lZCBmb3IgdGhpcyB2YWxpZGF0b3IuLEludmFsaWRQYWdlAA4EhE5vIG5vbWluYXRvcnMgZXhpc3Qgb24gdGhpcyBwYWdlLlRJbmNvcnJlY3RIaXN0b3J5RGVwdGgADwTASW5jb3JyZWN0IHByZXZpb3VzIGhpc3RvcnkgZGVwdGggaW5wdXQgcHJvdmlkZWQuIEJhZFN0YXRlABAEOQFJbnRlcm5hbCBzdGF0ZSBoYXMgYmVjb21lIHNvbWVob3cgY29ycnVwdGVkIGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBjb250aW51ZS44VG9vTWFueVRhcmdldHMAEQSUVG9vIG1hbnkgbm9taW5hdGlvbiB0YXJnZXRzIHN1cHBsaWVkLiRCYWRUYXJnZXQAEgQ9AUEgbm9taW5hdGlvbiB0YXJnZXQgd2FzIHN1cHBsaWVkIHRoYXQgd2FzIGJsb2NrZWQgb3Igb3RoZXJ3aXNlIG5vdCBhIHZhbGlkYXRvci5AQ2Fubm90Q2hpbGxPdGhlcgATBFUBVGhlIHVzZXIgaGFzIGVub3VnaCBib25kIGFuZCB0aHVzIGNhbm5vdCBiZSBjaGlsbGVkIGZvcmNlZnVsbHkgYnkgYW4gZXh0ZXJuYWwgcGVyc29uLkRUb29NYW55Tm9taW5hdG9ycwAUCE0BVGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgaW4gdGhlIHN5c3RlbS4gR292ZXJuYW5jZSBuZWVkcyB0byBhZGp1c3QgdGhlIHN0YWtpbme0c2V0dGluZ3MgdG8ga2VlcCB0aGluZ3Mgc2FmZSBmb3IgdGhlIHJ1bnRpbWUuRFRvb01hbnlWYWxpZGF0b3JzABUIVQFUaGVyZSBhcmUgdG9vIG1hbnkgdmFsaWRhdG9yIGNhbmRpZGF0ZXMgaW4gdGhlIHN5c3RlbS4gR292ZXJuYW5jZSBuZWVkcyB0byBhZGp1c3QgdGhl1HN0YWtpbmcgc2V0dGluZ3MgdG8ga2VlcCB0aGluZ3Mgc2FmZSBmb3IgdGhlIHJ1bnRpbWUuQENvbW1pc3Npb25Ub29Mb3cAFgTgQ29tbWlzc2lvbiBpcyB0b28gbG93LiBNdXN0IGJlIGF0IGxlYXN0IGBNaW5Db21taXNzaW9uYC4sQm91bmROb3RNZXQAFwRYU29tZSBib3VuZCBpcyBub3QgbWV0LlBDb250cm9sbGVyRGVwcmVjYXRlZAAYBAEBVXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8gdXNlIGRlcHJlY2F0ZWQgY29udHJvbGxlciBhY2NvdW50IGxvZ2ljLkxDYW5ub3RSZXN0b3JlTGVkZ2VyABkEWENhbm5vdCByZXNldCBhIGxlZGdlci5sUmV3YXJkRGVzdGluYXRpb25SZXN0cmljdGVkABoErFByb3ZpZGVkIHJld2FyZCBkZXN0aW5hdGlvbiBpcyBub3QgYWxsb3dlZC44Tm90RW5vdWdoRnVuZHMAGwScTm90IGVub3VnaCBmdW5kcyBhdmFpbGFibGUgdG8gd2l0aGRyYXcuXFZpcnR1YWxTdGFrZXJOb3RBbGxvd2VkABwEqE9wZXJhdGlvbiBub3QgYWxsb3dlZCBmb3IgdmlydHVhbCBzdGFrZXJzLjxDYW5ub3RSZWFwU3Rhc2gAHQT0U3Rhc2ggY291bGQgbm90IGJlIHJlYXBlZCBhcyBvdGhlciBwYWxsZXQgbWlnaHQgZGVwZW5kIG9uIGl0LjxBbHJlYWR5TWlncmF0ZWQAHgQJAVRoZSBzdGFrZSBvZiB0aGlzIGFjY291bnQgaXMgYWxyZWFkeSBtaWdyYXRlZCB0byBgRnVuZ2libGVgIGhvbGRzLjRFcmFOb3RTdGFydGVkAB8EUEVyYSBub3QgeWV0IHN0YXJ0ZWQuKFJlc3RyaWN0ZWQAIAhZAUFjY291bnQgaXMgcmVzdHJpY3RlZCBmcm9tIHBhcnRpY2lwYXRpb24gaW4gc3Rha2luZy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzxHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeSwgc3VjaCBhcyB2aWEgcG9vbC50VW5hcHBsaWVkU2xhc2hlc0luUHJldmlvdXNFcmEAIQgtAVVuYXBwbGllZCBzbGFzaGVzIGluIHRoZSByZWNlbnRseSBjb25jbHVkZWQgZXJhIGlzIGJsb2NraW5nIHRoaXMgb3BlcmF0aW9uLphTZWUgYENhbGw6OmFwcGx5X3NsYXNoYCB0byBhcHBseSB0aGVtLjhFcmFOb3RQcnVuYWJsZQAiBJBUaGUgZXJhIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJ1bmluZy44Q2FuY2VsbGVkU2xhc2gAIwTMVGhlIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZCBhbmQgY2Fubm90IGJlIGFwcGxpZWQuRENvbW1pc3Npb25Ub29IaWdoACQE+ENvbW1pc3Npb24gaXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBgTWF4Q29tbWlzc2lvbmAuVE9wdGltdW1HcmVhdGVyVGhhbkNhcAAlBMxPcHRpbXVtIHNlbGYtc3Rha2UgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBoYXJkIGNhcC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuARAIUHBhbGxldF9zdGFraW5nX2FzeW5jJFJld2FyZFBvdAABCBxHZW5lcmFsBAAFEAEoUmV3YXJkS2luZAAAAAxFcmEIADgBIEVyYUluZGV4AAAFEAEoUmV3YXJkS2luZAABAAAFEAhQcGFsbGV0X3N0YWtpbmdfYXN5bmMoUmV3YXJkS2luZAABCDRTdGFrZXJSZXdhcmRzAAAASFZhbGlkYXRvclNlbGZTdGFrZQABAAAJEAxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcmV3YXJkTEVyYVJld2FyZEFsbG9jYXRpb24EHEJhbGFuY2UBNQEACAE4c3Rha2VyX3Jld2FyZHM1AQEcQmFsYW5jZQABTHZhbGlkYXRvcl9pbmNlbnRpdmU1AQEcQmFsYW5jZQAADRAAAAQIOP0JABEQDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxR0eXBlc0BDb2xsZWN0aW9uTWludGVyBCRBY2NvdW50SWQBBAAIARRvd25lcgQBJEFjY291bnRJZAABJHNlbGVjdGlvblkHATRJdGVtU2VsZWN0aW9uAAAVEAxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMYcGFsbGV0FEVycm9yBARUAAEkRFVua25vd25Bd2FyZEJsb2NrAAAMWQFObyB0cmVlIGlzIGhlbGQgZm9yIHRoZSBhd2FyZCBibG9jaywgc28gbm90aGluZyBjYW4gYmUgcHJvdmVuIGFnYWluc3QgaXQuIFRoZSB0cmVlIG1heVEBc3RpbGwgYmUgb24gaXRzIHdheSwgb3IgaGF2ZSBiZWVuIGxvc3QsIGluIHdoaWNoIGNhc2UgYSBgcmVwbGF5X2NyZWRpdF90cmVlc2Agb24gdGhlYGdhbWUgcGFsbGV0IGRlbGl2ZXJzIGl0LlBMZWFmSW5kZXhPdXRPZkJvdW5kcwABBLxUaGUgbGVhZiBpbmRleCBpcyBub3Qgb25lIG9mIHRoZSB0cmVlJ3MgbGVhdmVzLjhBbHJlYWR5Q2xhaW1lZAACBOxUaGUgY3JlZGl0IGhhcyBhbHJlYWR5IGJlZW4gY2xhaW1lZCBhbmQgbWludHMgb25lIE5GVCBvbmx5LjBJbnZhbGlkUHJvb2YAAwhZAVRoZSBwcm9vZiBkb2VzIG5vdCByZWhhc2ggdGhlIGNyZWRpdCdzIGxlYWYgdG8gdGhlIHRyZWUncyByb290LCBzbyB0aGUgb3JpZ2luIGhvbGRzIG5vaHN1Y2ggY3JlZGl0IGluIHRoYXQgYmxvY2suRFVua25vd25Db2xsZWN0aW9uAAQEqFRoZSBjb2xsZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIFNjYXJjaXR5LkhOb3RDb2xsZWN0aW9uT3duZXIABQQBAU9ubHkgdGhlIGNvbGxlY3Rpb24ncyBvd25lciBtYXkgcmVnaXN0ZXIgb3Igd2l0aGRyYXcgaXRzIG1pbnRlci5cQ29sbGVjdGlvbk5vdFJlZ2lzdGVyZWQABghJAVRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIgaGFzIG5vdCByZWdpc3RlcmVkIGl0IGZvciBjbGFpbXMsIHNvIG5vIGNsYWltIGNhbiBtaW50IGludG8MaXQuWENvbGxlY3Rpb25Pd25lckNoYW5nZWQABwg9AVRoZSBjb2xsZWN0aW9uIGhhcyBjaGFuZ2VkIG93bmVycyBzaW5jZSByZWdpc3RyYXRpb24sIHNvIGl0cyBjdXJyZW50IG93bmVyIG11c3RIcmVnaXN0ZXIgaXQgYWdhaW4uHE5vSXRlbXMACARJAVRoZSBjb2xsZWN0aW9uIGhhcyBubyBpdGVtIGRlZmluaXRpb25zIGZvciBbYEl0ZW1TZWxlY3Rpb246OlJhbmRvbWBdIHRvIGRyYXcgZnJvbS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGRAAAAQMOAg4AB0QDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIRAEUwAABAAlEAEYVmVjPFQ+AAAhEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdHkHATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAAlEAAAAiEQACkQDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzRFJpbmdQdXJnZVByb2dyZXNzAAAIAShnZW5lcmF0aW9uOAEoR2VuZXJhdGlvbgABEHBhZ2U4AQx1MzIAAC0QDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABQBKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxuZXh0X3NjYW5faW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXMxEAGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlczkQAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAMRAMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQANRABOEJUcmVlTWFwPEssIFY+AAA1EAQgQlRyZWVNYXAIBEsBOARWATgABAAlCgAAADkQDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAPRABLEJUcmVlU2V0PFQ+AAA9EAQgQlRyZWVTZXQEBFQBOAAEAFkEAAAAQRAMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAABFEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AABJEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbhkCASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AABNEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASw0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy48UmV2aXNpb25FeHBpcmVkAAkEOQFSZXF1ZXN0ZWQgcmV2aXNpb24gaGFzIGJlZW4gc3VwZXJzZWRlZCBmb3IgbG9uZ2VyIHRoYW4gdGhlIHJldGVudGlvbiBkdXJhdGlvbi5IVG9vTWFueUNvbGxlY3Rpb25zAAoEAQFUaGUgbm90aWZpZXIgaW5pdGlhbGl6ZWQgbW9yZSB0aGFuIGBNYXhDb2xsZWN0aW9uc2AgY29sbGVjdGlvbnMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEQAAAECAhVEABVEBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAAWRAMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYVUQATxDb250ZXh0dWFsQWxpYXMAAF0QDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAEsREludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzRmVlVW5zZXQABQToVGhlIFBHQVMgZmVlIGZvciBhbGlhcyByZWdpc3RyYXRpb25zIGhhcyBub3QgYmVlbiBzZXQgeWV0LjxSZXByb3ZlTWlzbWF0Y2gABggdAVRoZSBwcm9vZiBwYXNzZWQgdG8gYHJlcHJvdmVfYWxpYXNfYWNjb3VudGAgcHJvZHVjZWQgYW4gYWxpYXMgLyBjb250ZXh02HRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLkBSaW5nUm9vdE5vdEZvdW5kAAcEBQFObyByaW5nIHJvb3Qgd2FzIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIGNvbGxlY3Rpb24gLyByaW5nIGluZGV4LjRTdGFsZVJldmlzaW9uAAgEAQFUaGUgcmVxdWVzdGVkIHJpbmcgcmV2aXNpb24gaXMgbm8gbG9uZ2VyIGFjY2VwdGVkIGZvciB0aGlzIHJpbmcuIEJhZFByb29mAAkEjFJpbmctVlJGIHByb29mIHZlcmlmaWNhdGlvbiBmYWlsZWQuTEludmFsaWRSaW5nQ2FwYWNpdHkACgTwVGhlIGNvbmZpZ3VyZWQgcmluZyBjYXBhY2l0eSBpcyBpbnZhbGlkIGZvciB0aGlzIGNvbGxlY3Rpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmEQAAAECBUECABlEAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEVycm9yBARUAAEQOEFscmVhZHlDbGFpbWVkAAAE+FRoaXMgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIFBHQVMgaW4gdGhpcyBwZXJpb2QuOFBnYXNNaW50RmFpbGVkAAEEwFRoZSBQR0FTIGFzc2V0IGRvZXMgbm90IGV4aXN0IG9yIG1pbnRpbmcgZmFpbGVkLjxOb1JlY29yZHNGb3JEYXkAAgQxAWBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHNgIHdhcyBjYWxsZWQgd2l0aCBhIGRheSB0aGF0IGhhcyBubyBzdG9yZWQgcmVjb3Jkcy5IRmlyc3RBbGlhc01pc21hdGNoAAMIVQFUaGUgYGZpcnN0X2FsaWFzYCBwYXNzZWQgdG8gYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2AgZG9lcyBub3QgbWF0Y2ggdGhlIGZpcnN0IGFsaWFziGN1cnJlbnRseSBzdG9yZWQgdW5kZXIgdGhlIHByZWZpeC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuaRAMNHBhbGxldF9yZXZpdmUIdm0gQ29kZUluZm8EBFQAABgBFG93bmVyBAE4QWNjb3VudElkT2Y8VD4AARxkZXBvc2l0cQEBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50tAEMdTY0AAEgY29kZV9sZW44AQx1MzIAASRjb2RlX3R5cGVtEAEwQnl0ZWNvZGVUeXBlAAFEYmVoYXZpb3VyX3ZlcnNpb244AQx1MzIAAG0QDDRwYWxsZXRfcmV2aXZlCHZtMEJ5dGVjb2RlVHlwZQABCAxQdm0AAAAMRXZtAAEAAHEQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudEluZm8EBFQAAAgBMGFjY291bnRfdHlwZXUQAThBY2NvdW50VHlwZTxUPgABEGR1c3Q4AQx1MzIAAHUQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudFR5cGUEBFQAAQggQ29udHJhY3QEAHkQATxDb250cmFjdEluZm88VD4AAAAMRU9BAAEAAHkQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UwQ29udHJhY3RJbmZvBARUAAAgARx0cmllX2lkXQQBGFRyaWVJZAABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAATRzdG9yYWdlX2J5dGVzOAEMdTMyAAE0c3RvcmFnZV9pdGVtczgBDHUzMgABUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfaXRlbV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABSGltbXV0YWJsZV9kYXRhX2xlbjgBDHUzMgAAfRAAAAQIBAQAgRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACFEAw0cGFsbGV0X3Jldml2ZRxzdG9yYWdlRERlbGV0aW9uUXVldWVJdGVtBARUAAAIARx0cmllX2lkXQQBGFRyaWVJZAABKGFjY291bnRfaWQEAThBY2NvdW50SWRPZjxUPgAAiRAMNHBhbGxldF9yZXZpdmUcc3RvcmFnZVBEZWxldGlvblF1ZXVlTWFuYWdlcgQEVAAACAE4aW5zZXJ0X2NvdW50ZXI4AQx1MzIAAThkZWxldGVfY291bnRlcjgBDHUzMgAAjRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuFEJsb2NrAABsAUBiYXNlX2ZlZV9wZXJfZ2FznQcBEFUyNTYAATRibG9iX2dhc191c2VknQcBEFUyNTYAAShkaWZmaWN1bHR5nQcBEFUyNTYAATxleGNlc3NfYmxvYl9nYXOdBwEQVTI1NgABKGV4dHJhX2RhdGGREAEUQnl0ZXMAASRnYXNfbGltaXSdBwEQVTI1NgABIGdhc191c2VknQcBEFUyNTYAARBoYXNoPAEQSDI1NgABKGxvZ3NfYmxvb22VEAEgQnl0ZXMyNTYAARRtaW5lcl0HARxBZGRyZXNzAAEgbWl4X2hhc2g8ARBIMjU2AAEUbm9uY2WdEAEYQnl0ZXM4AAEYbnVtYmVynQcBEFUyNTYAAWBwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3QhBQEwT3B0aW9uPEgyNTY+AAEscGFyZW50X2hhc2g8ARBIMjU2AAE0cmVjZWlwdHNfcm9vdDwBEEgyNTYAATRyZXF1ZXN0c19oYXNoIQUBME9wdGlvbjxIMjU2PgABMHNoYV8zX3VuY2xlczwBEEgyNTYAARBzaXplnQcBEFUyNTYAAShzdGF0ZV9yb290PAEQSDI1NgABJHRpbWVzdGFtcJ0HARBVMjU2AAFAdG90YWxfZGlmZmljdWx0eaEQATBPcHRpb248VTI1Nj4AATB0cmFuc2FjdGlvbnOlEAFgSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAFEdHJhbnNhY3Rpb25zX3Jvb3Q8ARBIMjU2AAEYdW5jbGVzwAEkVmVjPEgyNTY+AAEsd2l0aGRyYXdhbHPxEAE8VmVjPFdpdGhkcmF3YWw+AAFAd2l0aGRyYXdhbHNfcm9vdDwBEEgyNTYAAJEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRRCeXRlcwAABAAYARxWZWM8dTg+AACVEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUgQnl0ZXMyNTYAAAQAmRABJFt1ODsgMjU2XQAAmRAAAAMAAQAADACdEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUYQnl0ZXM4AAAEAHUCARxbdTg7IDhdAAChEAQYT3B0aW9uBARUAZ0HAQgQTm9uZQAAABBTb21lBACdBwAAAQAApRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuYEhhc2hlc09yVHJhbnNhY3Rpb25JbmZvcwABCBhIYXNoZXMEAMABJFZlYzxIMjU2PgAAAEBUcmFuc2FjdGlvbkluZm9zBACpEAFQVmVjPFRyYW5zYWN0aW9uSW5mbz4AAQAAqRAAAAKtEACtEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48VHJhbnNhY3Rpb25JbmZvAAAYAShibG9ja19oYXNoPAEQSDI1NgABMGJsb2NrX251bWJlcp0HARBVMjU2AAEQZnJvbV0HARxBZGRyZXNzAAEQaGFzaDwBEEgyNTYAAUR0cmFuc2FjdGlvbl9pbmRleJ0HARBVMjU2AAFIdHJhbnNhY3Rpb25fc2lnbmVksRABRFRyYW5zYWN0aW9uU2lnbmVkAACxEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5EVHJhbnNhY3Rpb25TaWduZWQAARRUVHJhbnNhY3Rpb243NzAyU2lnbmVkBAC1EAFUVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAAVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAQAzRABVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAABAFRUcmFuc2FjdGlvbjE1NTlTaWduZWQEANUQAVRUcmFuc2FjdGlvbjE1NTlTaWduZWQAAgBUVHJhbnNhY3Rpb24yOTMwU2lnbmVkBADhEAFUVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAMAXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkBADpEAFcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQABAAAtRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZLkQAVxUcmFuc2FjdGlvbjc3MDJVbnNpZ25lZAABBHKdBwEQVTI1NgABBHOdBwEQVTI1NgABBHahEAEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHmdBwEQVTI1NgAAuRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAAsASxhY2Nlc3NfbGlzdL0QAShBY2Nlc3NMaXN0AAFIYXV0aG9yaXphdGlvbl9saXN0xRABbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABIGNoYWluX2lknQcBEFUyNTYAAQxnYXOdBwEQVTI1NgABFGlucHV0kRABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FznQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdBwEQVTI1NgABFG5vbmNlnQcBEFUyNTYAAQh0b10HARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDc3MDIAARR2YWx1ZZ0HARBVMjU2AAC9EAAAAsEQAMEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxBY2Nlc3NMaXN0RW50cnkAAAgBHGFkZHJlc3NdBwEcQWRkcmVzcwABMHN0b3JhZ2Vfa2V5c8ABJFZlYzxIMjU2PgAAxRAAAALJEADJEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5YQXV0aG9yaXphdGlvbkxpc3RFbnRyeQAAGAEgY2hhaW5faWSdBwEQVTI1NgABHGFkZHJlc3NdBwEcQWRkcmVzcwABFG5vbmNlnQcBEFUyNTYAASB5X3Bhcml0eZ0HARBVMjU2AAEEcp0HARBVMjU2AAEEc50HARBVMjU2AADNEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAAQAWR0cmFuc2FjdGlvbl80ODQ0X3Vuc2lnbmVk0RABXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAEEcp0HARBVMjU2AAEEc50HARBVMjU2AAEgeV9wYXJpdHmdBwEQVTI1NgAA0RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAAwASxhY2Nlc3NfbGlzdL0QAShBY2Nlc3NMaXN0AAFUYmxvYl92ZXJzaW9uZWRfaGFzaGVzwAEkVmVjPEgyNTY+AAEgY2hhaW5faWSdBwEQVTI1NgABDGdhc50HARBVMjU2AAEUaW5wdXSREAEUQnl0ZXMAAVBtYXhfZmVlX3Blcl9ibG9iX2dhc50HARBVMjU2AAE8bWF4X2ZlZV9wZXJfZ2FznQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdBwEQVTI1NgABFG5vbmNlnQcBEFUyNTYAAQh0b10HARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDQ4NDQAARR2YWx1ZZ0HARBVMjU2AADVEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24xNTU5U2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8xNTU5X3Vuc2lnbmVk2RABXFRyYW5zYWN0aW9uMTU1OVVuc2lnbmVkAAEEcp0HARBVMjU2AAEEc50HARBVMjU2AAEEdqEQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eZ0HARBVMjU2AADZEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAACwBLGFjY2Vzc19saXN0vRABKEFjY2Vzc0xpc3QAASBjaGFpbl9pZJ0HARBVMjU2AAEMZ2FznQcBEFUyNTYAASRnYXNfcHJpY2WdBwEQVTI1NgABFGlucHV0kRABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FznQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXOdBwEQVTI1NgABFG5vbmNlnQcBEFUyNTYAAQh0b90QATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMASxUeXBlRWlwMTU1OQABFHZhbHVlnQcBEFUyNTYAAN0QBBhPcHRpb24EBFQBXQcBCBBOb25lAAAAEFNvbWUEAF0HAAABAADhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVk5RABXFRyYW5zYWN0aW9uMjkzMFVuc2lnbmVkAAEEcp0HARBVMjU2AAEEc50HARBVMjU2AAEEdqEQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eZ0HARBVMjU2AADlEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAACQBLGFjY2Vzc19saXN0vRABKEFjY2Vzc0xpc3QAASBjaGFpbl9pZJ0HARBVMjU2AAEMZ2FznQcBEFUyNTYAASRnYXNfcHJpY2WdBwEQVTI1NgABFGlucHV0kRABFEJ5dGVzAAEUbm9uY2WdBwEQVTI1NgABCHRv3RABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAyOTMwAAEUdmFsdWWdBwEQVTI1NgAA6RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkAAAQAWx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWTtEAFkVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAABBHKdBwEQVTI1NgABBHOdBwEQVTI1NgABBHadBwEQVTI1NgAA7RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuZFRyYW5zYWN0aW9uTGVnYWN5VW5zaWduZWQAACABIGNoYWluX2lkoRABME9wdGlvbjxVMjU2PgABDGdhc50HARBVMjU2AAEkZ2FzX3ByaWNlnQcBEFUyNTYAARRpbnB1dJEQARRCeXRlcwABFG5vbmNlnQcBEFUyNTYAAQh0b90QATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMAShUeXBlTGVnYWN5AAEUdmFsdWWdBwEQVTI1NgAA8RAAAAL1EAD1EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4oV2l0aGRyYXdhbAAAEAEcYWRkcmVzc10HARxBZGRyZXNzAAEYYW1vdW50nQcBEFUyNTYAARRpbmRleJ0HARBVMjU2AAE8dmFsaWRhdG9yX2luZGV4nQcBEFUyNTYAAPkQAAAC/RAA/RAQNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g4UmVjZWlwdEdhc0luZm8AAAgBIGdhc191c2VknQcBEFUyNTYAAUxlZmZlY3RpdmVfZ2FzX3ByaWNlnQcBEFUyNTYAAAERFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoNGJsb2NrX2J1aWxkZXJYRXRoZXJldW1CbG9ja0J1aWxkZXJJUgQEVAAAIAFgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVyBREBYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABVHJlY2VpcHRzX3Jvb3RfYnVpbGRlcgURAWBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAAUBiYXNlX2ZlZV9wZXJfZ2FznQcBEFUyNTYAATxibG9ja19nYXNfbGltaXSdBwEQVTI1NgABIGdhc191c2VknQcBEFUyNTYAAShsb2dzX2Jsb29tmRABWFt1ODsgQkxPT01fU0laRV9CWVRFU10AASR0eF9oYXNoZXPAASRWZWM8SDI1Nj4AASBnYXNfaW5mb/kQAUxWZWM8UmVjZWlwdEdhc0luZm8+AAAFERQ0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDBoYXNoX2J1aWxkZXJgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAAoAQxrZXkYARxWZWM8dTg+AAEodmFsdWVfdHlwZQwBCHU4AAE0YnVpbGRlcl92YWx1ZRgBHFZlYzx1OD4AARRzdGFjazQBMFZlYzxWZWM8dTg+PgABLHN0YXRlX21hc2tzCREBIFZlYzx1MTY+AAEodHJlZV9tYXNrcwkRASBWZWM8dTE2PgABKGhhc2hfbWFza3MJEQEgVmVjPHUxNj4AAUhzdG9yZWRfaW5fZGF0YWJhc2V1AQEQYm9vbAABHHJscF9idWYYARxWZWM8dTg+AAEUaW5kZXgoAQx1NjQAAAkRAAAC7QMADREEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAAAREQw0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZXUBARBib29sAAE8YnlwYXNzX2VpcF8zNjA3dQEBEGJvb2wAASBwdm1fbG9nc3UBARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ3UBARBib29sAAAVEQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNIUmVnaXN0cmF0aW9uUmVjb3JkBARUAAAIAShjb2xsZWN0aW9uHREBKENvbGxlY3Rpb24AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAAdEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMoQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoUGVvcGxlTGl0ZQABAAAhEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNEQWNjb3VudE5hbWVSZWNvcmQAAAgBEGxpdGUlEQFET3B0aW9uPE5hbWVFbnRyeT4AARBmdWxsJREBRE9wdGlvbjxOYW1lRW50cnk+AAAlEQQYT3B0aW9uBARUASkRAQgQTm9uZQAAABBTb21lBAApEQAAAQAAKREMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzJE5hbWVFbnRyeQAACAEUbGFiZWypBwEkQmFzZUxhYmVsAAEQY2hhdC0RATxPcHRpb248Q2hhdEtleT4AAC0RBBhPcHRpb24EBFQBrQcBCBBOb25lAAAAEFNvbWUEAK0HAAABAAAxEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEVycm9yBARUAAEoREFscmVhZHlSZWdpc3RlcmVkAAAEoFRoZSBhbGlhcyBoYXMgYWxyZWFkeSByZWdpc3RlcmVkIGEgbmFtZS5IQ29udHJhY3RDYWxsRmFpbGVkAAEI/FRoZSBjb250cmFjdCBjYWxsIGZhaWxlZCAobm9uLXJldmVydDogb3V0LW9mLWdhcywgbG93LWxldmVsLCBvclB1bmRlY29kYWJsZSByZXZlcnQpLjhDb250cmFjdFJldmVydAQANREBQERpc3BhdGNoZXJSZXZlcnQAAggRAUNvbnRyYWN0IHJldmVydGVkIHdpdGggYSB0eXBlZCBlcnJvciBmcm9tIGBSb290R2F0ZXdheURpc3BhdGNoZXJgIG9yoHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBpdCBmb3J3YXJkcyB0by4sSW52YWxpZE5hbWUAAwj0VGhlIG5hbWUgaXMgaW52YWxpZCAoZW1wdHkgb3IgdG9vIGxvbmcsIG9yIGRvZXMgbm90IG1hdGNoIHRoZYByZXF1aXJlZCBETlMvbGl0ZS1sYWJlbCBmb3JtYXQpLlhOb0F0dGVzdGF0aW9uQWxsb3dhbmNlAAQE0FRoZSBhdHRlc3RlciBoYXMgbm8gYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHJlbWFpbmluZy5sSW52YWxpZEF0dGVzdGF0aW9uU2lnbmF0dXJlAAUElFRoZSBjYW5kaWRhdGUncyBzaWduYXR1cmUgaXMgaW52YWxpZC5sUmVzZXJ2YXRpb25TaWduYXR1cmVFeHBpcmVkAAYEHQFUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGlzIG9sZGVyIHRoYW4gW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdLnhSZXNlcnZhdGlvblNpZ25hdHVyZUZyb21GdXR1cmUABwj8VGhlIHJlc2VydmF0aW9uIHNpZ25hdHVyZSBjbGFpbXMgdG8gaGF2ZSBiZWVuIGNyZWF0ZWQgbW9yZSB0aGFuzFtgQ29uZmlnOjpNYXhWYWxpZGl0eVNlY29uZHNgXSBhaGVhZCBvZiBjaGFpbiB0aW1lLkROb3RMaXRlTGFiZWxPd25lcgAICAkBVGhlIGBMaW5rOjpMaXRlVXNlcm5hbWVgIHRhcmdldCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlciAob3IgaGFzeG5vIG9uLWNoYWluIG93bmVyc2hpcCByZWNvcmQpLlxEaXNwYXRjaGVyQWRkcmVzc05vdFNldAAJBPhUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyBoYXMgbm90IGJlZW4gc2V0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC41EQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNARGlzcGF0Y2hlclJldmVydAABIBxOb3RSb290AAAAKE5vdEdhdGV3YXkAAQBASW52YWxpZExpdGVMYWJlbAACAEBJbnZhbGlkQmFzZUxhYmVsAAMATE5vQWN0aXZlUmVzZXJ2YXRpb24ABAAkUXVldWVGdWxsAAUAPEFscmVhZHlSZXNlcnZlZAAGACROb3RIb2xkZXIABwAAOREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgACAEQdXNlZDUBARxCYWxhbmNlAAEgYXRfYmxvY2s4ASxCbG9ja051bWJlcgAAPREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEVycm9yBARUAAEIHE5vVXNhZ2UAAASAVGhlIG9yaWdpbiBoYXMgbm8gdXNhZ2UgdHJhY2tlZC4cTm90WmVybwABBFhUaGUgdXNhZ2UgaXMgbm90IHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkERDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuRREISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AABJERAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAWkKAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3NNEQFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAE0RAAACUREAUREIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAFURCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAFkRCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAF0RBBhPcHRpb24EBFQBWREBCBBOb25lAAAAEFNvbWUEAFkRAAABAABhEQQYUmVzdWx0CARUAXEIBEUBZREBCAhPawQAcQgAAAAADEVycgQAZREAAAEAAGURDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBABpEQFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAG0RAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAaREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAAbREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAcREIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGF1EQGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAdREEIEJUcmVlTWFwCARLAXUCBFYBGAAEAHkRAAAAeREAAAJ9EQB9EQAABAh1AhgAgREIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theXUBARBib29sAAEsZmF0YWxfZXJyb3J1AQEQYm9vbAABGGVycm9yc3ERATBJbmhlcmVudERhdGEAAIURDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAiREEGFJlc3VsdAgEVAGNEQRFAWURAQgIT2sEAI0RAAAAAAxFcnIEAGURAAABAACNEQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZXUBARBib29sAACREQwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAJURBBhPcHRpb24EBFQBmREBCBBOb25lAAAAEFNvbWUEAJkRAAABAACZEQAAAp0RAJ0RAAAECBjdCwChEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4eQIBIFt1ODsgMTZdAAEYc3VmZml4eQIBIFt1ODsgMTZdAAClEQQYUmVzdWx0CARUARgERQGpEQEICE9rBAAYAAAAAAxFcnIEAKkRAAABAACpEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBAChEQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAArREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBNQEYV2VpZ2h0AREBAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc0UIATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWU1AQEcQmFsYW5jZQAAsREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBNQEACAE0aW5jbHVzaW9uX2ZlZbURAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcDUBARxCYWxhbmNlAAC1EQQYT3B0aW9uBARUAbkRAQgQTm9uZQAAABBTb21lBAC5EQAAAQAAuREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQE1AQAMASBiYXNlX2ZlZTUBARxCYWxhbmNlAAEcbGVuX2ZlZTUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZTUBARxCYWxhbmNlAAC9EQQYUmVzdWx0CARUAcERBEUBxREBCAhPawQAwREAAAAADEVycgQAxREAAAEAAMERAAACvQMAxREMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAADJEQQYUmVzdWx0CARUAREBBEUBxREBCAhPawQAEQEAAAAADEVycgQAxREAAAEAAM0RBBhSZXN1bHQIBFQBNQEERQHFEQEICE9rBAA1AQAAAAAMRXJyBADFEQAAAQAA0REEGFJlc3VsdAgEVAGJAwRFAcURAQgIT2sEAIkDAAAAAAxFcnIEAMURAAABAADVEQQYUmVzdWx0CARUAdkRBEUB8REBCAhPawQA2REAAAAADEVycgQA8REAAAEAANkRDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50ATkIABABQGV4ZWN1dGlvbl9yZXN1bHSJCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c90RAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNt4REBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21z5REBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADdEQAAAjkIAOERBBhPcHRpb24EBFQBTQIBCBBOb25lAAAAEFNvbWUEAE0CAAABAADlEQAAAukRAOkRAAAECMUB7REA7REAAAJNAgDxEQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAD1EQQYUmVzdWx0CARUAfkRBEUB8REBCAhPawQA+REAAAAADEVycgQA8REAAAEAAPkRDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQBOQgADAFAZXhlY3V0aW9uX3Jlc3VsdAkJARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHPdEQEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21z5REBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAD9EQQYUmVzdWx0CARUAQQERQEBEgEICE9rBAAEAAAAAAxFcnIEAAESAAABAAABEgxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAAUSCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAGUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA2QIBJHY0OjpBc3NldAAEAAhWNQQAJQMBJHY1OjpBc3NldAAFAAAJEgQYUmVzdWx0CARUAXUBBEUBDRIBCAhPawQAdQEAAAAADEVycgQADRIAAAEAAA0SDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAAAREgQYUmVzdWx0CARUAYEMBEUBFRIBCAhPawQAgQwAAAAADEVycgQAFRIAAAEAABUSDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAABkSBBhSZXN1bHQIBFQBdQEERQEVEgEICE9rBAB1AQAAAAAMRXJyBAAVEgAAAQAAHRIEGFJlc3VsdAgEVAGJAwRFASESAQgIT2sEAIkDAAAAAAxFcnIEACESAAABAAAhEgw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAACUSAAACKRIAKRIMPHBhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaTRNZXRhZGF0YVF1ZXJ5AAEMIEluc3RhbmNlBAAoAShJbnN0YW5jZUlkAAAAEEl0ZW0IAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABAChDb2xsZWN0aW9uBAA4ATBDb2xsZWN0aW9uSWQAAgAALRIEGFJlc3VsdAgEVAExEgRFAUESAQgIT2sEADESAAAAAAxFcnIEAEESAAABAAAxEgAAAjUSADUSDDxwYWxsZXRfc2NhcmNpdHkscnVudGltZV9hcGk4TWV0YWRhdGFMYXllcnMAABABIHJlc29sdmVkORIBWE9wdGlvbjxNZXRhZGF0YVRhcmdldD4AAShjb2xsZWN0aW9uLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AARBpdGVtLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASBpbnN0YW5jZSwBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAA5EgQYT3B0aW9uBARUAT0SAQgQTm9uZQAAABBTb21lBAA9EgAAAQAAPRIMPHBhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaThNZXRhZGF0YVRhcmdldAABDCBJbnN0YW5jZQwBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAAAEEl0ZW0IAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABAChDb2xsZWN0aW9uBAA4ATBDb2xsZWN0aW9uSWQAAgAAQRIMPHBhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaShCYXRjaEVycm9yAAEEIFRvb0xhcmdlBAEMbWF4OAEMdTMyAAAAAEUSAAACSRIASRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpMFByZXZpZXdRdWVyeQAACAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAABNEgQYUmVzdWx0CARUAVESBEUBYRIBCAhPawQAURIAAAAADEVycgQAYRIAAAEAAFESAAACVRIAVRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdPdXRjb21lAAEIFE1pbnRzCAEQaXRlbTgBJEl0ZW1JbmRleAABDHZpYVkSATRTZWxlY3Rpb25LaW5kAAAAFEZhaWxzBAEYcmVhc29uXRIBOFByZXZpZXdGYWlsdXJlAAEAAFkSDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcyxydW50aW1lX2FwaTRTZWxlY3Rpb25LaW5kAAEIGFJhbmRvbQAAACBDb250cmFjdAQAXQcBEEgxNjAAAQAAXRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdGYWlsdXJlAAEYXENvbGxlY3Rpb25Ob3RSZWdpc3RlcmVkAAAARFVua25vd25Db2xsZWN0aW9uAAEAWENvbGxlY3Rpb25Pd25lckNoYW5nZWQAAgAcTm9JdGVtcwADACxVbmtub3duSXRlbQQBEGl0ZW04ASRJdGVtSW5kZXgABABcQ29udHJhY3RTZWxlY3Rpb25GYWlsZWQEARRlcnJvck0IATREaXNwYXRjaEVycm9yAAUAAGESDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcyxydW50aW1lX2FwaShCYXRjaEVycm9yAAEEIFRvb0xhcmdlBAEMbWF4OAEMdTMyAAAAAGUSCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2Vz4QoBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGVpEgGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAABpEgQYT3B0aW9uBARUAW0SAQgQTm9uZQAAABBTb21lBABtEgAAAQAAbRIMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAcRIEGFJlc3VsdAgEVAEQBEUBMQoBCAhPawQAEAAAAAAMRXJyBAAxCgAAAQAAdRIEGE9wdGlvbgQEVAExCgEIEE5vbmUAAAAQU29tZQQAMQoAAAEAAHkSAAACMQoAfRIEGE9wdGlvbgQEVAHRDQEIEE5vbmUAAAAQU29tZQQA0Q0AAAEAAIESDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZYUSAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludNENAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAIUSDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AACJEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAY0SHEJhbGFuY2UBNQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXSVEgFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0lRIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkNQEBHEJhbGFuY2UAARhyZXN1bHSZEgFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AACNEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3OREgEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAAkRIMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAAlRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQE1AQEIGFJlZnVuZAQANQEBHEJhbGFuY2UAAAAYQ2hhcmdlBAA1AQEcQmFsYW5jZQABAACZEgQYUmVzdWx0CARUAY0SBEUBTQgBCAhPawQAjRIAAAAADEVycgQATQgAAAEAAJ0SDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEADwBNHNwX2NvcmU6OkgyNTYAAQAAoRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgGlEhxCYWxhbmNlATUBABgBPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0lRIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdJUSAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZDUBARxCYWxhbmNlAAEYcmVzdWx0qRIBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAApRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHSNEgE8RXhlY1JldHVyblZhbHVlAAEQYWRkcl0HARBIMTYwAACpEgQYUmVzdWx0CARUAaUSBEUBTQgBCAhPawQApRIAAAAADEVycgQATQgAAAEAAK0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN0sRIBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdMUQAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AARRibG9ic7USAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWShEAEwT3B0aW9uPFUyNTY+AAEQZnJvbd0QATxPcHRpb248QWRkcmVzcz4AAQxnYXOhEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNloRABME9wdGlvbjxVMjU2PgABFGlucHV0uRIBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXOhEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2FzoRABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc6EQATBPcHRpb248VTI1Nj4AARRub25jZaEQATBPcHRpb248VTI1Nj4AAQh0b90QATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGXBEgEwT3B0aW9uPEJ5dGU+AAEUdmFsdWWhEAEwT3B0aW9uPFUyNTY+AACxEgQYT3B0aW9uBARUAb0QAQgQTm9uZQAAABBTb21lBAC9EAAAAQAAtRIAAAKREAC5EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV0vRIBNE9wdGlvbjxCeXRlcz4AARBkYXRhvRIBNE9wdGlvbjxCeXRlcz4AAL0SBBhPcHRpb24EBFQBkRABCBBOb25lAAAAEFNvbWUEAJEQAAABAADBEgQYT3B0aW9uBARUAcUSAQgQTm9uZQAAABBTb21lBADFEgAAAQAAxRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAMkSBBhSZXN1bHQIBFQBzRIERQHREgEICE9rBADNEgAAAAAMRXJyBADREgAAAQAAzRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBNQEAFAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAEcZXRoX2dhc50HARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AANESDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEADEKARhTdHJpbmcAAQAA1RIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGX8AThPcHRpb248TW9tZW50PgABWHBlcmZvcm1fYmFsYW5jZV9jaGVja3PZEgEwT3B0aW9uPGJvb2w+AAE8c3RhdGVfb3ZlcnJpZGVz3RIBYE9wdGlvbjxTdGF0ZU92ZXJyaWRlU2V0PgAA2RIEGE9wdGlvbgQEVAF1AQEIEE5vbmUAAAAQU29tZQQAdQEAAAEAAN0SBBhPcHRpb24EBFQB4RIBCBBOb25lAAAAEFNvbWUEAOESAAABAADhEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5AU3RhdGVPdmVycmlkZVNldAAABADlEgGAQlRyZWVNYXA8QWRkcmVzcywgU3RhdGVPdmVycmlkZT4AAOUSBCBCVHJlZU1hcAgESwFdBwRWAekSAAQAARMAAADpEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW40U3RhdGVPdmVycmlkZQAAFAEcYmFsYW5jZaEQATBPcHRpb248VTI1Nj4AARRub25jZaEQATBPcHRpb248VTI1Nj4AARBjb2RlvRIBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdl7RIBXE9wdGlvbjxTdG9yYWdlT3ZlcnJpZGU+AAFobW92ZV9wcmVjb21waWxlX3RvX2FkZHJlc3PdEAE8T3B0aW9uPEFkZHJlc3M+AADtEgQYT3B0aW9uBARUAfESAQgQTm9uZQAAABBTb21lBADxEgAAAQAA8RIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPFN0b3JhZ2VPdmVycmlkZQABCBRTdGF0ZQQA9RIBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAAAJFN0YXRlRGlmZgQA9RIBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAEAAPUSBCBCVHJlZU1hcAgESwE8BFYBPAAEAPkSAAAA+RIAAAL9EgD9EgAABAg8PAABEwAAAgUTAAUTAAAECF0H6RIACRMEGFJlc3VsdAgEVAGdBwRFAdESAQgIT2sEAJ0HAAAAAAxFcnIEANESAAABAAANEwQYUmVzdWx0CARUAREBBEUB0RIBCAhPawQAEQEAAAAADEVycgQA0RIAAAEAABETBBhSZXN1bHQIBFQBFRMERQFNCAEICE9rBAAVEwAAAAAMRXJyBABNCAAAAQAAFRMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBNQEACAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXQ1AQEcQmFsYW5jZQAAGRMEGFJlc3VsdAgEVAFhAQRFAR0TAQgIT2sEAGEBAAAAAAxFcnIEAB0TAAABAAAdEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBABNCAE0RGlzcGF0Y2hFcnJvcgACAAAhExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEACUTAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAC0TAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQANRMBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAACUTBBhPcHRpb24EBFQBKRMBCBBOb25lAAAAEFNvbWUEACkTAAABAAApExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3N1AQEQYm9vbAABNG9ubHlfdG9wX2NhbGx1AQEQYm9vbAAALRMEGE9wdGlvbgQEVAExEwEIEE5vbmUAAAAQU29tZQQAMRMAAAEAADETFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGV1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAEwZGlzYWJsZV9jb2RldQEBEGJvb2wAADUTBBhPcHRpb24EBFQBORMBCBBOb25lAAAAEFNvbWUEADkTAAABAAA5ExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnl1AQEQYm9vbAABNGRpc2FibGVfc3RhY2t1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhdQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc3UBARBib29sAAEUbGltaXT8ASxPcHRpb248dTY0PgABRG1lbW9yeV93b3JkX2xpbWl0OAEMdTMyAAA9EwAAAkETAEETAAAECDhFEwBFExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxRUcmFjZQABDBBDYWxsBABJEwEkQ2FsbFRyYWNlAAAAIFByZXN0YXRlBABdEwE0UHJlc3RhdGVUcmFjZQABACRFeGVjdXRpb24EAH0TAThFeGVjdXRpb25UcmFjZQACAABJExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyRDYWxsVHJhY2UAADQBEGZyb21dBwEQSDE2MAABDGdhcygBDHU2NAABIGdhc191c2VkKAEMdTY0AAEIdG9dBwEQSDE2MAABFGlucHV0kRABFEJ5dGVzAAEYb3V0cHV0kRABFEJ5dGVzAAEUZXJyb3J1EgE4T3B0aW9uPFN0cmluZz4AATRyZXZlcnRfcmVhc29udRIBOE9wdGlvbjxTdHJpbmc+AAEUY2FsbHNNEwE4VmVjPENhbGxUcmFjZT4AARBsb2dzURMBMFZlYzxDYWxsTG9nPgABFHZhbHVloRABME9wdGlvbjxVMjU2PgABJGNhbGxfdHlwZVkTASBDYWxsVHlwZQABQGNoaWxkX2NhbGxfY291bnQ4AQx1MzIAAE0TAAACSRMAURMAAAJVEwBVExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxxDYWxsTG9nAAAQARxhZGRyZXNzXQcBEEgxNjAAARh0b3BpY3PAASRWZWM8SDI1Nj4AARBkYXRhkRABFEJ5dGVzAAEgcG9zaXRpb244AQx1MzIAAFkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzIENhbGxUeXBlAAEYEENhbGwAAAAoU3RhdGljQ2FsbAABADBEZWxlZ2F0ZUNhbGwAAgAYQ3JlYXRlAAMAHENyZWF0ZTIABAAwU2VsZmRlc3RydWN0AAUAAF0TFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNFByZXN0YXRlVHJhY2UAAQggUHJlc3RhdGUEAGETAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAAAgRGlmZk1vZGUIAQxwcmVhEwGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEQcG9zdGETAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAQAAYRMEIEJUcmVlTWFwCARLAV0HBFYBZRMABAB1EwAAAGUTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzRFByZXN0YXRlVHJhY2VJbmZvAAAQARxiYWxhbmNloRABME9wdGlvbjxVMjU2PgABFG5vbmNl4AEsT3B0aW9uPHUzMj4AARBjb2RlvRIBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlaRMBeEJUcmVlTWFwPEJ5dGVzLCBPcHRpb248Qnl0ZXM+PgAAaRMEIEJUcmVlTWFwCARLAZEQBFYBvRIABABtEwAAAG0TAAACcRMAcRMAAAQIkRC9EgB1EwAAAnkTAHkTAAAECF0HZRMAfRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM4RXhlY3V0aW9uVHJhY2UAABgBDGdhcygBDHU2NAABPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAAUBiYXNlX2NhbGxfd2VpZ2h0EQEBGFdlaWdodAABGGZhaWxlZHUBARBib29sAAEwcmV0dXJuX3ZhbHVlkRABFEJ5dGVzAAEsc3RydWN0X2xvZ3OBEwFIVmVjPEV4ZWN1dGlvblN0ZXA+AACBEwAAAoUTAIUTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNEV4ZWN1dGlvblN0ZXAAABwBDGdhc7QBDHU2NAABIGdhc19jb3N0tAEMdTY0AAEsd2VpZ2h0X2Nvc3QRAQEYV2VpZ2h0AAEUZGVwdGjtAwEMdTE2AAEscmV0dXJuX2RhdGGREAEUQnl0ZXMAARRlcnJvcnUSAThPcHRpb248U3RyaW5nPgABEGtpbmSJEwFERXhlY3V0aW9uU3RlcEtpbmQAAIkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzREV4ZWN1dGlvblN0ZXBLaW5kAAEIJEVWTU9wY29kZRQBCHBjYAEMdTMyAAEIb3AMAQh1OAABFHN0YWNrtRIBKFZlYzxCeXRlcz4AARhtZW1vcnm1EgEoVmVjPEJ5dGVzPgABHHN0b3JhZ2WNEwHIT3B0aW9uPGFsbG9jOjpjb2xsZWN0aW9uczo6QlRyZWVNYXA8Qnl0ZXMsIEJ5dGVzPj4AAAAoUFZNU3lzY2FsbAwBCG9wDAEIdTgAARBhcmdzJQ8BIFZlYzx1NjQ+AAEgcmV0dXJuZWT8ASxPcHRpb248dTY0PgABAACNEwQYT3B0aW9uBARUAZETAQgQTm9uZQAAABBTb21lBACREwAAAQAAkRMEIEJUcmVlTWFwCARLAZEQBFYBkRAABACVEwAAAJUTAAACmRMAmRMAAAQIkRCREACdEwQYT3B0aW9uBARUAUUTAQgQTm9uZQAAABBTb21lBABFEwAAAQAAoRMEGFJlc3VsdAgEVAFFEwRFAdESAQgIT2sEAEUTAAAAAAxFcnIEANESAAABAAClExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXPdEgFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AACpEwQYUmVzdWx0CARUAa0TBEUBsRMBCAhPawQArRMAAAAADEVycgQAsRMAAAEAAK0TAAAECDUBOACxEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAAC1EwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAdQYU3lzdGVtBABhCgFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAPEKAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBQcmVpbWFnZQQAFQsBfHBhbGxldF9wcmVpbWFnZTo6RXJyb3I8UnVudGltZT4ABQAkU2NoZWR1bGVyBAAtCwGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4ABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEADELAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ACAA0TmV0d29ya1N1ZmZpeAQARQsBrGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeDo6RXJyb3I8UnVudGltZT4AmgAgQmFsYW5jZXMEAIkLAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAoAHFZlc3RpbmcEAKULAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4ADgAYQ2xhaW1zBACpCwF0cGFsbGV0X2NsYWltczo6RXJyb3I8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAMELAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBADhCwF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAHQwBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBACFDAFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBACpDAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQArQwBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXJyb3I8UnVudGltZT4AJAAcVXRpbGl0eQQAsQwBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQAwQwBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAOUMAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAHEluZGljZXMEAO0MAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4AKwAYQXNzZXRzBAAZDQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBABFDQF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAJkNAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQArQ0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQAvQ0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADJDQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEANUNAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBADZDQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBTY2FyY2l0eQQA/Q0BfHBhbGxldF9zY2FyY2l0eTo6RXJyb3I8UnVudGltZT4AOgAgVHJlYXN1cnkEABEOAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAEUOAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAjQ4BgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAkQ4BgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AEAAIEJvdW50aWVzBAChDgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBACtDgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBCACRBc3NldFJhdGUEALEOAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBADNDgGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBEAAxEYXAEANEOAWhwYWxsZXRfZGFwOjpFcnJvcjxSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EALUJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAFQ8BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEACkPAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAD0PAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQASQ8BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBABhDwHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAJkPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQA/Q8BkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZACROZnRDbGFpbXMEABUQAZxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltczo6RXJyb3I8UnVudGltZT4AYABETWVtYmVyc1N1YnNjcmliZXIEAE0QAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFcnJvcjxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBABdEAGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFcnJvcjxSdW50aW1lPgBiABBQZ2FzBABlEAGEaW5kaXZfcGFsbGV0X3BnYXM6OkVycm9yPFJ1bnRpbWU+AGMAGFJldml2ZQQAFREBdHBhbGxldF9yZXZpdmU6OkVycm9yPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAMREBqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFcnJvcjxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAPREBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AJkAEFN1ZG8EAEERAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4A+wAAEQEYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBCEIQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAdQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQAtCBgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AJEJsb2NrU2l6ZQAAOAQADLAgVG90YWwgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjdXJyZW50IGJsb2NrLgDIIFRyYWNrcyB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGFuZCBhbGwgZXh0cmluc2ljcy4AJEJsb2NrSGFzaAEBBAU4PIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy4ANEV4dHJpbnNpY0RhdGEBAQQFOBgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4AGE51bWJlcgEAOBAAAAAABAkBIFRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBiZWluZyBwcm9jZXNzZWQuIFNldCBieSBgZXhlY3V0ZV9ibG9ja2AuAChQYXJlbnRIYXNoAQA8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suABhEaWdlc3QBAGQEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuABhFdmVudHMBADEIBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLgAoRXZlbnRDb3VudAEAOBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuACxFdmVudFRvcGljcwEBBAI8JQoEACglASBNYXBwaW5nIGJldHdlZW4gYSB0b3BpYyAocmVwcmVzZW50ZWQgYnkgVDo6SGFzaCkgYW5kIGEgdmVjdG9yIG9mIGluZGV4ZXOUIG9mIGV2ZW50cyBpbiB0aGUgYDxFdmVudHM8VD4+YCBsaXN0LgBRASBBbGwgdG9waWMgdmVjdG9ycyBoYXZlIGRldGVybWluaXN0aWMgc3RvcmFnZSBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4gVGhpc0UBIGFsbG93cyBsaWdodC1jbGllbnRzIHRvIGxldmVyYWdlIHRoZSBjaGFuZ2VzIHRyaWUgc3RvcmFnZSB0cmFja2luZyBtZWNoYW5pc20gYW5k5CBpbiBjYXNlIG9mIGNoYW5nZXMgZmV0Y2ggdGhlIGxpc3Qgb2YgZXZlbnRzIG9mIGludGVyZXN0LgBZASBUaGUgdmFsdWUgaGFzIHRoZSB0eXBlIGAoQmxvY2tOdW1iZXJGb3I8VD4sIEV2ZW50SW5kZXgpYCBiZWNhdXNlIGlmIHdlIHVzZWQgb25seSBqdXN0TQEgdGhlIGBFdmVudEluZGV4YCB0aGVuIGluIGNhc2UgaWYgdGhlIHRvcGljIGhhcyB0aGUgc2FtZSBjb250ZW50cyBvbiB0aGUgbmV4dCBibG9jawEBIG5vIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB0aHVzIHRoZSBldmVudCBtaWdodCBiZSBsb3N0LgBITGFzdFJ1bnRpbWVVcGdyYWRlAAApCgQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLgBEQmxvY2tzVGlsbFVwZ3JhZGUAAAwEAATsIE51bWJlciBvZiBibG9ja3MgdGlsbCB0aGUgcGVuZGluZyBjb2RlIHVwZ3JhZGUgaXMgYXBwbGllZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAdQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAHUBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAIQoEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAADUKBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAEQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAE9CAAYMEJsb2NrV2VpZ2h0czkKiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGhFCjQAAEQAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHRNCkBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9uUQqRBlBuZXh0LWFzc2V0LWh1Yi1wYXNlb1BuZXh0LWFzc2V0LWh1Yi1wYXNlbwEAAADAxi0AAAAAAHjdcY1cxTJi1AEAAAAE5wUhoNPS+AIAAAAWK/GRN6usvQEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAACCUn1h6OFA4wEAAAD+JvwaDdWuAAEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAAVAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml47QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAFhCgAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZxkFBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrZQoIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YSUICGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAB9CgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAAZBgQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQCBCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAClCgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAHUBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQCpCgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAJ0KBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAALEKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAMUKBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAzQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBANEKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAA3QoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAN0KBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAOEKBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEANQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABEBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAADpCgQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABZQgABChTZWxmUGFyYUlknBDcBQAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAHxCgAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAHUBBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAY89QoEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBjz9CgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBg0LEQsEAAAAAbwAAWkIAAABFQsAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOBkLBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALMKQsEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjMBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHEAAFtCAAINE1heGltdW1XZWlnaHQRASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAEtCwAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCeQiRCAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHQAAF1CAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAABFAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVZARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAT0BAAGlCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AATELAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMANQsEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwA5CxAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwBBCwTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4ANE5ldHdvcmtTdWZmaXgBNE5ldHdvcmtTdWZmaXgENE5ldHdvcmtTdWZmaXgBAGkBGBRwYXNlbwQlASBOZXR3b3JrIHN1ZmZpeCBhcHBlbmRlZCB0byBwcm9kdWN0IG5hbWVzIHdoZW4gZGVyaXZpbmcgcHJvZHVjdCBjb250ZXh0cy4AAWUBAAGpCAAAAUULAAAAmgAAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEANQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBADUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBCUIAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIESQsEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIEWQsEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgRlCwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBHELBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAW0BAAGtCAAQSEV4aXN0ZW50aWFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAYkLABBEUnVudGltZUhvbGRSZWFzb261CAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZTUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJ1AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllcnkLBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBADUFQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAjQsEAAAAPFR4UGF5bWVudENyZWRpdAAAkQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAHpCAAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAAB7QgAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgSZCwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQChCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABgQEAAfEIAAhETWluVmVzdGVkVHJhbnNmZXI1AUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABpQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAaVATUBBAAAABRUb3RhbAEANQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGlQGdAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAaVAaUBBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgSVAQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAGJAQAB9QgABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAGpCwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQCtCwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBALELBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABrQEAAfkIABgUUG90SWS9CyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABwQsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQB5AQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQB1AQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDFCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDNCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBLUBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF2QsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGxAQAB/QgABChLZXlEZXBvc2l0NQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAeELAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlztQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQDlCwQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQDtCyAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWS5AQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQDlCwQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAA8QsEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEA9QsEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQD9CwQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBREMFQwEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApwVDAQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAGQwwIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAdQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcNQVAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgABvQEAAQEJAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABHQwAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKCEMBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCNQw4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCNQwoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAjUMOQwEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAPQwEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAASQwEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgJNDFEMBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgRhDAQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQB1AQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAdQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAARAwQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAsUBbQwEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABwQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAEFCQAQRFVuaXZlcnNhbExvY2F0aW9uHQIYAgkCAHEXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAYUMBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABwQMAARUJAAAAAAAgAABEVG9LdXNhbWFYY21Sb3V0ZXIBRFRvS3VzYW1hWGNtUm91dGVyBBhCcmlkZ2UBAI0MRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgABxQMAARkJAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXNA5EMdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAADNAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBZ0MoQwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgAByQMAAR0JABAgSGVhcFNpemU4EAgAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0DQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABqQwABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQBYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZARMRXhwb3J0T3BlcmF0aW5nTW9kZQEA1QMEAATYIFRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgdG8gRXRoZXJldW0uAAHRAwABJQkAAAGtDAAAACQAABxVdGlsaXR5AAHlAwABKQkABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAbEMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbvEDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQK1DLkMBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AASUEAAEtCQAMLERlcG9zaXRCYXNlNQFAANu7dwAAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3I1AUAA1DAAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgABwQwABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQTFDEQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQTVDEQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABMQQAATEJABhAUHJveHlEZXBvc2l0QmFzZTUBQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcjUBQKBaMgAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZTUBQADSfncAAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcjUBQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAeUMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlOQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZTkEdQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrOQQcYWdhaW5zdDkEdQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjjpDAQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAE9BAABOQkABBxEZXBvc2l0NQFAANJ+dwAAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgAB7QwABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgArAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjjxDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAvkM/QwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgIJDQ0NBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4EQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjhFBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAUEEAAE9CQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdDUBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0NQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2U1AUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlNQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0NQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAEZDQAUHEJhbGFuY2U1AQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyYBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEGgqWdUaueSKjIzEGP+XCNKnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOB0NBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0lMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDgxAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4IQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4SQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADIAABxVbmlxdWVzARxVbmlxdWVzKBRDbGFzcwABBAI4JQ0EAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgIpDRAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAwQ2xhc3NBY2NvdW50AAEIAgKxBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AFEFzc2V0AAEIAgLMLQ0EAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgA8Q2xhc3NNZXRhZGF0YU9mAAEEAjgxDQQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgBISW5zdGFuY2VNZXRhZGF0YU9mAAEIAgLMNQ0EAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAAQwCAgI5DT0NBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgLMQQ0EAARwIFByaWNlIG9mIGFuIGFzc2V0IGluc3RhbmNlLgBMQ29sbGVjdGlvbk1heFN1cHBseQABBAI4OAQABPAgS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gbWlnaHQgaGF2ZS4AAU0EAAFBCQAgRENvbGxlY3Rpb25EZXBvc2l0NQFAAOh2SBcAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0NQFAAOH1BQAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQKBq+ncAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2U1AUAAlDV3AAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQgAAAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBAgAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBBAAAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AAUUNAAgwQ29sbGVjdGlvbklkOAScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi4AMwAAEE5mdHMBEE5mdHM8KENvbGxlY3Rpb24AAQQCOEkNBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgICKQ0QBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4ARENvbGxlY3Rpb25BY2NvdW50AAEIAgKxBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AQENvbGxlY3Rpb25Sb2xlT2YAAQgCAvkMTQ0EAAjQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLqAgU3RvcmVzIGNvbGxlY3Rpb24gcm9sZXMgYXMgcGVyIGFjY291bnQuABBJdGVtAAEIAgLMVQ0EAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgBQQ29sbGVjdGlvbk1ldGFkYXRhT2YAAQQCOG0NBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uADhJdGVtTWV0YWRhdGFPZgABCAICzHENBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEQAgICAnkNfQ0EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAsxBDQQABFAgQSBwcmljZSBvZiBhbiBpdGVtLgBkSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNPZgEBCAICzIUNBAAEaCBJdGVtIGF0dHJpYnV0ZSBhcHByb3ZhbHMuAEBOZXh0Q29sbGVjdGlvbklkAAA4BAAIMQEgU3RvcmVzIHRoZSBgQ29sbGVjdGlvbklkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNvbGxlY3Rpb24u8CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgY29sbGVjdGlvbiBpcyBjcmVhdGVkLgA0UGVuZGluZ1N3YXBPZgABCAICzI0NBAAEfCBIYW5kbGVzIGFsbCB0aGUgcGVuZGluZyBzd2Fwcy4ASENvbGxlY3Rpb25Db25maWdPZgABBAI4ZQQEAARgIENvbmZpZyBvZiBhIGNvbGxlY3Rpb24uADBJdGVtQ29uZmlnT2YAAQgCAsyNBAQABEwgQ29uZmlnIG9mIGFuIGl0ZW0uAAFhBAABRQkAOERDb2xsZWN0aW9uRGVwb3NpdDUBQEDx+3cAAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdDUBQBAyAQMAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2U1AUAQcf8LAAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNlNQFAAMLrCwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRlNQFAoIYBAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EAABAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQQAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQAAEAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuADhBcHByb3ZhbHNMaW1pdDgQFAAAAASoIFRoZSBtYXhpbXVtIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuAHBJdGVtQXR0cmlidXRlc0FwcHJvdmFsc0xpbWl0OBAeAAAABNQgVGhlIG1heGltdW0gYXR0cmlidXRlcyBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgAcTWF4VGlwczgQCgAAAASoIFRoZSBtYXggbnVtYmVyIG9mIHRpcHMgYSB1c2VyIGNvdWxkIHNlbmQuAExNYXhEZWFkbGluZUR1cmF0aW9uOBAAGk8ABKggVGhlIG1heCBkdXJhdGlvbiBpbiBibG9ja3MgZm9yIGRlYWRsaW5lcy4AUE1heEF0dHJpYnV0ZXNQZXJDYWxsOBAKAAAABOAgVGhlIG1heCBudW1iZXIgb2YgYXR0cmlidXRlcyBhIHVzZXIgY291bGQgc2V0IHBlciBjYWxsLgAgRmVhdHVyZXORDSAAAAAAAAAAAASQIERpc2FibGVzIHNvbWUgb2YgcGFsbGV0J3MgZmVhdHVyZXMuAAGZDQAMMENvbGxlY3Rpb25JZDgknCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLgBJASBTQUZFVFk6IFRoZSBmdW5jdGlvbnMgaW4gdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdCBhcmUgZmFsbGlibGUuIElmIHRoZSBmdW5jdGlvbnNBASBvZiB0aGUgaW1wbGVtZW50YXRpb24gYm90aCByZXR1cm4gYE5vbmVgLCB0aGUgYXV0b21hdGljIENvbGxlY3Rpb25JZCBnZW5lcmF0aW9uKQEgc2hvdWxkIG5vdCBiZSB1c2VkLiBTbyB0aGUgYGNyZWF0ZWAgYW5kIGBmb3JjZV9jcmVhdGVgIGV4dHJpbnNpY3MgYW5kIHRoZU0BIGBjcmVhdGVfY29sbGVjdGlvbmAgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gYFVua25vd25Db2xsZWN0aW9uYCBFcnJvci4gSW5zdGVhZCB1c2VBASB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9uLiBIb3dldmVyLCBpZiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0SQEgaW1wbGVtZW50YXRpb24gaGFzIGFuIGluY3JlbWVudGFsIG9yZGVyLCB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9u/CBzaG91bGQgbm90IGJlIHVzZWQgYXMgaXQgY2FuIGNsYWltIGEgdmFsdWUgaW4gdGhlIElEIHNlcXVlbmNlLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uRE9mZmNoYWluU2lnbmF0dXJltQQMaCBPZmYtQ2hhaW4gc2lnbmF0dXJlIHR5cGUuAAkBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6T2ZmY2hhaW5QdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuADQAADRGb3JlaWduQXNzZXRzATRGb3JlaWduQXNzZXRzGBRBc3NldAABBAIZAvEMBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICnQ39DAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAqENDQ0EAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAhkCpQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAhkCxQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAGQIEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABwQQAAU0JABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0NQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXQ1AUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXQ1AUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAa0NABQcQmFsYW5jZTUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZBkCBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyGQIcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YckEBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QMOZKVgJvS148LRlig6mhfacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQZAh0NBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZBkCMQEEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9LodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkGQKxDQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1k9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZBkCzQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADUAAChQb29sQXNzZXRzAShQb29sQXNzZXRzGBRBc3NldAABBAI48QwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgL5DP0MBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICCQ0NDQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOLUNUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4RQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHRBAABUQkAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXQ1AUAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdDUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlNQFAAAAAAAAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZTUBQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABvQ0AFBxCYWxhbmNlNQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjgcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBNsGuhym8Yse2wb/CC0kQJpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDgdDQSoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4MQEEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOMENBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOEkEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA2AAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAlkJxQ0EAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgAB1QQAAVUJABwUTFBGZWVdCRC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZTUBQEAtk+8AAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0GQIIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWVdCRAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHk1AUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkvQsgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAckNAAgkQXNzZXRLaW5kGQIIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZFkJBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDEZAhhhc3NldDIZAs0NCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxGQIYYXNzZXQyGQIYYW1vdW50NQEsaW5jbHVkZV9mZWV1ATEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4ANwAANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAvkMcQsEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4RnJvemVuQmFsYW5jZXMAAQgCAvkMNQEEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABaQkAAAHVDQAETFJ1bnRpbWVGcmVlemVSZWFzb255CwR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA4AAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgL5DGULBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAIC+Qw1AQQABGkBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGJhbGFuY2Ugb24gaG9sZCBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABbQkAAAHZDQAERFJ1bnRpbWVIb2xkUmVhc29utQgEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOQAAIFNjYXJjaXR5ASBTY2FyY2l0eTBATmV4dENvbGxlY3Rpb25JZAEAOBAAAAAABLAgVGhlIG5leHQgY29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIGFsbG9jYXRlLgAsQ29sbGVjdGlvbnMAAQQFON0NBAAE4CBJbW11dGFibGUgaXRlbSBjYXRhbG9ndWVzLCBncm91cGVkIGJ5IHRoZWlyIGNvbGxlY3Rpb24uACBJdGVtRGVmcwABCAUFzOUNBAAE9CBJbW11dGFibGUgaXRlbSBkZWZpbml0aW9ucywgaW5kZXhlZCB3aXRoaW4gdGhlaXIgY29sbGVjdGlvbi4ASENvbGxlY3Rpb25NZXRhZGF0YQABCAUC6Q3tDQQADAkBIENvbGxlY3Rpb24td2lkZSBkZWZhdWx0cyBpbmhlcml0ZWQgYnkgZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uAC0BIEVudHJpZXMgbXVzdCBiZSByZW1vdmVkIGluZGl2aWR1YWxseSBiZWZvcmUgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGRlbGV0ZWQuADBJdGVtTWV0YWRhdGEAAQwFBQLxDe0NBAAUHQEgUGVyLWl0ZW0gZGVmYXVsdHMgd2hpY2ggb3ZlcnJpZGUgY29sbGVjdGlvbiBkZWZhdWx0cyBmb3IgdGhlIHNhbWUga2V5LgBFASBUaGVzZSBlbnRyaWVzIGFyZSBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGl0ZW0gZGVmaW5pdGlvbi4gSXRlbWUBIGRlZmluaXRpb25zIG91dGxpdmUgbWludGVkIGluc3RhbmNlcywgc28gYnVybmluZyBhbiBpbnN0YW5jZSBuZXZlciByZW1vdmVzIHRoZW0uIEVudHJpZXMhASBtdXN0IGJlIHJlbW92ZWQgaW5kaXZpZHVhbGx5IGJlZm9yZSB0aGUgaXRlbSBkZWZpbml0aW9uIGNhbiBiZSBkZWxldGVkLgA4TmV4dEluc3RhbmNlSWQBACggAAAAAAAAAAAE0CBUaGUgbmV4dCBwZXJtYW5lbnQgaW5zdGFuY2UgaWRlbnRpZmllciB0byBhbGxvY2F0ZS4ALE5mdHNCeU93bmVyAAEEAgQJBAQABLQgT25lIE5GVCBwZXIgb3duZXIga2V5IOKAlCB0aGUgY29pbmFnZSBtb2RlbC4AJEluc3RhbmNlcwABBAUoBAQABCEBIFN0YWJsZSByZXZlcnNlIGluZGV4IGZyb20gaW5zdGFuY2UgaWRlbnRpZmllciB0byBpdHMgY3VycmVudCBvd25lciBrZXkuAEBJbnN0YW5jZURlcG9zaXRzAAEEBSg1AQQABDEBIEV4YWN0IHBlci1pbnN0YW5jZSBzdG9yYWdlIGRlcG9zaXRzLCBwcmVzZW50IG9ubHkgZm9yIGRlcG9zaXQtcGF5aW5nIG1pbnRzLgBUSW5zdGFuY2VNZXRhZGF0YUNvdW50AQEEBSg4EAAAAAAQ8CBOdW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBmb3IgZWFjaCBsaXZlIGluc3RhbmNlLgBJASBUaGlzIGVudHJ5IGV4aXN0cyBldmVuIHdoZW4gdGhlIGNvdW50IGlzIHplcm8gc28gYnVybiBjbGVhbnVwIHJlbWFpbnMgYm91bmRlZCBhbmRJASBgdHJ5X3N0YXRlYCBjYW4gdmVyaWZ5IHRoYXQgZXZlcnkgbGl2ZSBpbnN0YW5jZSBoYXMgZXhwbGljaXQgbWV0YWRhdGEgYWNjb3VudGluZy4AQEluc3RhbmNlTWV0YWRhdGEAAQgFAvUN7Q0EAARNASBQZXItaW5zdGFuY2UgZW50cmllcyB3aGljaCBvdmVycmlkZSBpdGVtIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGZvciB0aGUgc2FtZSBrZXkuABhMb2NrZWQAAQQCBPkNBAAQvCBQb3N0LWZhaWx1cmUgYmFja29mZiBsb2NrcyBmb3IgTkZUIHB1cnNlIGtleXMuAFkBIEEgc2VwYXJhdGUgbG9jayBleHBsaWNpdGx5IHJlamVjdHMgdHJhbnNhY3Rpb25zIGR1cmluZyBiYWNrb2ZmLiBVcGRhdGluZyBgbGFzdF9tb3ZlZGAVASB3b3VsZCBvbmx5IGxvd2VyIHRyYW5zYWN0aW9uIHByaW9yaXR5IGFuZCB3b3VsZCBub3QgZW5mb3JjZSBhIGRlbGF5LgAB3QQAAXEJABQkTWF4S2V5TGVuOBAgAAAABKQgTWF4aW11bSBieXRlIGxlbmd0aCBvZiBvbmUgbWV0YWRhdGEga2V5LgAsTWF4VmFsdWVMZW44EAABAAAErCBNYXhpbXVtIGJ5dGUgbGVuZ3RoIG9mIG9uZSBtZXRhZGF0YSB2YWx1ZS4ATE1heEluc3RhbmNlTWV0YWRhdGE4EGQAAAAMCQEgTWF4aW11bSBudW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBvbiBvbmUgbGl2ZSBpbnN0YW5jZS4ARQEgVGhpcyBib3VuZHMgYnVybiBjbGVhbnVwIGluZGVwZW5kZW50bHkgb2YgaG93IG1hbnkgbXV0YXRpb24gY2FsbHMgYXJlIHN1Ym1pdHRlZC4AKExvY2tQZXJpb2QoIDwAAAAAAAAABAEBIEJhc2UgbG9jayBwZXJpb2QgYWZ0ZXIgYSBmYWlsZWQgcHVyc2Uta2V5IGRpc3BhdGNoLCBpbiBzZWNvbmRzLgBMTWF4VHJhbnNmZXJQcmlvcml0eSggQEIPAAAAAAAErCBQcmlvcml0eSBjZWlsaW5nIGZvciByZXN0ZWQgTkZUIHRyYW5zZmVycy4AAf0NAAAAOgAAIFRyZWFzdXJ5ASBUcmVhc3VyeRw0UHJvcG9zYWxDb3VudAEAOBAAAAAAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgCkIE51bWJlciBvZiBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AJFByb3Bvc2FscwABBAU4AQ4EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ALERlYWN0aXZhdGVkAQA1AUAAAAAAAAAAAAAAAAAAAAAABPAgVGhlIGFtb3VudCB3aGljaCBoYXMgYmVlbiByZXBvcnRlZCBhcyBpbmFjdGl2ZSB0byBDdXJyZW5jeS4AJEFwcHJvdmFscwEABQ4EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4A+CBQcm9wb3NhbCBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGF3YXJkZWQuAChTcGVuZENvdW50AQA4EAAAAAAEpCBUaGUgY291bnQgb2Ygc3BlbmRzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuABhTcGVuZHMAAQQFOAkOBAAE0CBTcGVuZHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYW5kIGJlaW5nIHByb2Nlc3NlZC4APExhc3RTcGVuZFBlcmlvZAAAOAQABNQgVGhlIGJsb2NrbnVtYmVyIGZvciB0aGUgbGFzdCB0cmlnZ2VyZWQgc3BlbmQgcGVyaW9kLgAB8QQIAwKVAVRoZSBgc3BlbmRfbG9jYWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBNaWdyYXRlIHRvIHRoZSBuZXcgZmxvdyBhbmQgdXNlIHRoZSBgc3BlbmRgIGNhbGwuAAQCtQFUaGUgYHJlbW92ZV9hcHByb3ZhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIEl0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVwcmVjYXRlZCBgc3BlbmRfbG9jYWxgIGNhbGwuAAF1CQAYLFNwZW5kUGVyaW9kOBDAqAAABIggUGVyaW9kIGJldHdlZW4gc3VjY2Vzc2l2ZSBzcGVuZHMuABBCdXJuXQkQAAAAAAQRASBQZXJjZW50YWdlIG9mIHNwYXJlIGZ1bmRzIChpZiBhbnkpIHRoYXQgYXJlIGJ1cm50IHBlciBzcGVuZCBwZXJpb2QuACBQYWxsZXRJZL0LIHB5L3Ryc3J5BBkBIFRoZSB0cmVhc3VyeSdzIHBhbGxldCBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgAwTWF4QXBwcm92YWxzOBBkAAAAGEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgAVASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgY2FuIHdhaXQgaW4gdGhlIHNwZW5kaW5nIHF1ZXVlLgBNASBOT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHNvIHVzZWQgd2l0aGluIHRoZSBCb3VudGllcyBQYWxsZXQgZXh0ZW5zaW9uIGlmIGVuYWJsZWQuADBQYXlvdXRQZXJpb2Q4EADhAAAEGQEgVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggYW4gYXBwcm92ZWQgdHJlYXN1cnkgc3BlbmQgaGFzIHRvIGJlIGNsYWltZWQuACxwb3RfYWNjb3VudASAbW9kbHB5L3Ryc3J5AAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAREOAAgkQXNzZXRLaW5k9QQELQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB0byBiZSBzcGVudCBmcm9tIHRoZSB0cmVhc3VyeS4sQmVuZWZpY2lhcnn5BARdASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgdHJlYXN1cnkgc3BlbmRzLgA8AABAQ29udmljdGlvblZvdGluZwFAQ29udmljdGlvblZvdGluZwgkVm90aW5nRm9yAQEIBQUVDhkO2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1ASBBbGwgdm90aW5nIGZvciBhIHBhcnRpY3VsYXIgdm90ZXIgaW4gYSBwYXJ0aWN1bGFyIHZvdGluZyBjbGFzcy4gV2Ugc3RvcmUgdGhlIGJhbGFuY2UgZm9yIHRoZZwgbnVtYmVyIG9mIHZvdGVzIHRoYXQgd2UgaGF2ZSByZWNvcmRlZC4ANENsYXNzTG9ja3NGb3IBAQQFBDkOBAAMaQEgVGhlIHZvdGluZyBjbGFzc2VzIHdoaWNoIGhhdmUgYSBub24temVybyBsb2NrIHJlcXVpcmVtZW50IGFuZCB0aGUgbG9jayBhbW91bnRzIHdoaWNoIHRoZXltASByZXF1aXJlLiBUaGUgYWN0dWFsIGFtb3VudCBsb2NrZWQgb24gYmVoYWxmIG9mIHRoaXMgcGFsbGV0IHNob3VsZCBhbHdheXMgYmUgdGhlIG1heGltdW0gb2YsIHRoaXMgbGlzdC4AAf0EAAF5CQAIIE1heFZvdGVzOBAAAgAAEPAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdm90ZXMgYW4gYWNjb3VudCBtYXkgaGF2ZS4AVQEgQWxzbyB1c2VkIHRvIGNvbXB1dGUgd2VpZ2h0LCBhbiBvdmVybHkgbGFyZ2UgdmFsdWUgY2FuIGxlYWQgdG8gZXh0cmluc2ljcyB3aXRoIGxhcmdlwCB3ZWlnaHQgZXN0aW1hdGlvbjogc2VlIGBkZWxlZ2F0ZWAgZm9yIGluc3RhbmNlLgBEVm90ZUxvY2tpbmdQZXJpb2Q4EMCJAQAQkCBUaGUgbWluaW11bSBwZXJpb2Qgb2Ygdm90ZSBsb2NraW5nLgBlASBJdCBzaG91bGQgYmUgbm8gc2hvcnRlciB0aGFuIGVuYWN0bWVudCBwZXJpb2QgdG8gZW5zdXJlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYW4gYXBwcm92YWwsSQEgdGhvc2Ugc3VjY2Vzc2Z1bCB2b3RlcnMgYXJlIGxvY2tlZCBpbnRvIHRoZSBjb25zZXF1ZW5jZXMgdGhhdCB0aGVpciB2b3RlcyBlbnRhaWwuAAFFDgAAAD0AACRSZWZlcmVuZGEBJFJlZmVyZW5kYRQ8UmVmZXJlbmR1bUNvdW50AQA4EAAAAAAEMQEgVGhlIG5leHQgZnJlZSByZWZlcmVuZHVtIGluZGV4LCBha2EgdGhlIG51bWJlciBvZiByZWZlcmVuZGEgc3RhcnRlZCBzbyBmYXIuAERSZWZlcmVuZHVtSW5mb0ZvcgABBAI4SQ4EAAS0IEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgYW55IGdpdmVuIHJlZmVyZW5kdW0uAChUcmFja1F1ZXVlAQEEBe0DaQ4EABBdASBUaGUgc29ydGVkIGxpc3Qgb2YgcmVmZXJlbmRhIHJlYWR5IHRvIGJlIGRlY2lkZWQgYnV0IG5vdCB5ZXQgYmVpbmcgZGVjaWRlZCwgb3JkZXJlZCBieXwgY29udmljdGlvbi13ZWlnaHRlZCBhcHByb3ZhbHMuAEEBIFRoaXMgc2hvdWxkIGJlIGVtcHR5IGlmIGBEZWNpZGluZ0NvdW50YCBpcyBsZXNzIHRoYW4gYFRyYWNrSW5mbzo6bWF4X2RlY2lkaW5nYC4ANERlY2lkaW5nQ291bnQBAQQF7QM4EAAAAAAExCBUaGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBiZWluZyBkZWNpZGVkIGN1cnJlbnRseS4AKE1ldGFkYXRhT2YAAQQCODwEABgFASBUaGUgbWV0YWRhdGEgaXMgYSBnZW5lcmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIHJlZmVyZW5kdW0uSQEgVGhlIGBIYXNoYCByZWZlcnMgdG8gdGhlIHByZWltYWdlIG9mIHRoZSBgUHJlaW1hZ2VzYCBwcm92aWRlciB3aGljaCBjYW4gYmUgYSBKU09OiCBkdW1wIG9yIElQRlMgaGFzaCBvZiBhIEpTT04gZmlsZS4AdQEgQ29uc2lkZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIGEgbWV0YWRhdGEgb2YgZmluaXNoZWQgcmVmZXJlbmR1bXMgdG8gYHVucmVxdWVzdGAgKHJlbW92ZSlEIGxhcmdlIHByZWltYWdlcy4AAREFAAF9CQAURFN1Ym1pc3Npb25EZXBvc2l0NQFAAOh2SBcAAAAAAAAAAAAAAAQ1ASBUaGUgbWluaW11bSBhbW91bnQgdG8gYmUgdXNlZCBhcyBhIGRlcG9zaXQgZm9yIGEgcHVibGljIHJlZmVyZW5kdW0gcHJvcG9zYWwuACRNYXhRdWV1ZWQ4EGQAAAAE5CBNYXhpbXVtIHNpemUgb2YgdGhlIHJlZmVyZW5kdW0gcXVldWUgZm9yIGEgc2luZ2xlIHRyYWNrLgBEVW5kZWNpZGluZ1RpbWVvdXQ4EMCoAAAIVQEgVGhlIG51bWJlciBvZiBibG9ja3MgYWZ0ZXIgc3VibWlzc2lvbiB0aGF0IGEgcmVmZXJlbmR1bSBtdXN0IGJlZ2luIGJlaW5nIGRlY2lkZWQgYnku5CBPbmNlIHRoaXMgcGFzc2VzLCB0aGVuIGFueW9uZSBtYXkgY2FuY2VsIHRoZSByZWZlcmVuZHVtLgA0QWxhcm1JbnRlcnZhbDgQAQAAAAxdASBRdWFudGl6YXRpb24gbGV2ZWwgZm9yIHRoZSByZWZlcmVuZHVtIHdha2V1cCBzY2hlZHVsZXIuIEEgaGlnaGVyIG51bWJlciB3aWxsIHJlc3VsdCBpbl0BIGZld2VyIHN0b3JhZ2UgcmVhZHMvd3JpdGVzIG5lZWRlZCBmb3Igc21hbGxlciB2b3RlcnMsIGJ1dCBhbHNvIHJlc3VsdCBpbiBkZWxheXMgdG8gdGhlVQEgYXV0b21hdGljIHJlZmVyZW5kdW0gc3RhdHVzIGNoYW5nZXMuIEV4cGxpY2l0IHNlcnZpY2luZyBpbnN0cnVjdGlvbnMgYXJlIHVuYWZmZWN0ZWQuABhUcmFja3N1DhUaQAAAZHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAIDGpH6NAwAAAAAAAAAAALAEAAAAJwYAQDgAAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQEAZHdoaXRlbGlzdGVkX2NhbGxlcgAAAAAAAABkAAAAAEB6EPNaAAAAAAAAAAAAACwBAAAAJwYAZAAAAGQAAAAC7JclEAAAAAB7VzwXAAAAAEI5LxIAAAAAAg4AhAAAAAAA1uYfAQAAAAA5YnkCAAAAAAIAZHdpc2hfZm9yX2NoYW5nZQAAAAAAAAAAAAAKAAAAAID0IOa1AAAAAAAAAAAAALAEAAAAJwYAQDgAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQoAZHN0YWtpbmdfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////wsAZHRyZWFzdXJlcgAAAAAAAAAAAAAAAAAAAAACAAAAAKAxqV/jAAAAAAAAAAAAALAEAAAAJwYAwIkBAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjuAlpgAAGXNHQwAZGxlYXNlX2FkbWluAAAAAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w0AZGZlbGxvd3NoaXBfYWRtaW4AAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w4AZGdlbmVyYWxfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////w8AZGF1Y3Rpb25fYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////xQAZHJlZmVyZW5kdW1fY2FuY2VsbGVyAAAAAAD0AQAAACA9iHktAAAAAAAAAAAAALAEAADAiQEACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////xUAZHJlZmVyZW5kdW1fa2lsbGVyAAAAAAAAAADoAwAAAEBjUr/GAQAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////x4AZHNtYWxsX3RpcHBlcgAAAAAAAAAAAAAAAADIAAAAAOQLVAIAAAAAAAAAAAAAAAoAAADAiQEAZAAAAAoAAAAASZFJFQBlzR0Aypo7Avm6GAAAAAAAKk0xAAAAAABrWef//////x8AZGJpZ190aXBwZXIAAAAAAAAAAAAAAAAAAABkAAAAAOh2SBcAAAAAAAAAAAAAAGQAAADAiQEAWAIAAGQAAAAASZFJFQBlzR0Aypo7AmlPPwAAAAAANZZ9AAAAAADlNMH//////yAAZHNtYWxsX3NwZW5kZXIAAAAAAAAAAAAAAAAFAAAAAKByThgJAAAAAAAAAAAAAGAJAAAAJwYAgHAAAEA4AAAAyUMwJABlzR0Aypo7AgqzOgAAAAAAU611AAAAAAA3CxIAAAAAACEAZG1lZGl1bV9zcGVuZGVyAAAAAAAAAAAAAAAyAAAAACBKqdEBAAAAAAAAAAAAAGAJAAAAJwYAAOEAAEA4AAAAWwH2MABlzR0Aypo7AiCeaQAAAAAAT3fSAAAAAAD+HOT//////yIAZGJpZ19zcGVuZGVyAAAAAAAAAAAAAAAAAAADAAAAACA9iHktAAAAAAAAAAAAAGAJAAAAJwYAwIkBAEA4AAAAAMqaOwBlzR0Aypo7As1YYgAAAAAAWyTFAAAAAAA1WREAAAAAAAxIIEEgbGlzdCBvZiB0cmFja3MuAF0BIE5vdGU6IGlmIHRoZSB0cmFja3MgYXJlIGR5bmFtaWMsIHRoZSB2YWx1ZSBpbiB0aGUgc3RhdGljIG1ldGFkYXRhIG1pZ2h0IGJlIGluYWNjdXJhdGUuAAGNDgAMLFJ1bnRpbWVDYWxsIAAUVm90ZXM1AQTMIFRoZSBjb3VudGluZyB0eXBlIGZvciB2b3Rlcy4gVXN1YWxseSBqdXN0IGJhbGFuY2UuFFRhbGx5gQkETCBUaGUgdGFsbHlpbmcgdHlwZS4APgAAHE9yaWdpbnMAAAAAAAAAPwAAJFdoaXRlbGlzdAEkV2hpdGVsaXN0BDxXaGl0ZWxpc3RlZENhbGwAAQQFPBAEAAAAASUFAAGFCQAAAZEOAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AQAAAIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4lQ4EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuAEhCb3VudHlEZXNjcmlwdGlvbnMAAQQFOJ0OBAAEgCBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBib3VudHkuADxCb3VudHlBcHByb3ZhbHMBAAUOBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAAEpBQABlQkAJERCb3VudHlEZXBvc2l0QmFzZTUBQACODAEAAAAAAAAAAAAAAAAE6CBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgcGxhY2luZyBhIGJvdW50eSBwcm9wb3NhbC4AYEJvdW50eURlcG9zaXRQYXlvdXREZWxheTgQAAAAAARZASBUaGUgZGVsYXkgcGVyaW9kIGZvciB3aGljaCBhIGJvdW50eSBiZW5lZmljaWFyeSBuZWVkIHRvIHdhaXQgYmVmb3JlIGNsYWltIHRoZSBwYXlvdXQuAEhCb3VudHlVcGRhdGVQZXJpb2Q4EAAEFwMY9CBUaGUgdGltZSBsaW1pdCBmb3IgYSBjdXJhdG9yIHRvIGFjdCBiZWZvcmUgYSBib3VudHkgZXhwaXJlcy4AVQEgVGhlIHBlcmlvZCB0aGF0IHN0YXJ0cyB3aGVuIGEgY3VyYXRvciBpcyBhcHByb3ZlZCwgZHVyaW5nIHdoaWNoIHRoZXkgbXVzdCBleGVjdXRlIG9yVQEgdXBkYXRlIHRoZSBib3VudHkgdmlhIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuIElmIG1pc3NlZCwgdGhlIGJvdW50eSBleHBpcmVzLCBhbmQgdGhlVQEgY3VyYXRvciBtYXkgYmUgc2xhc2hlZC4gSWYgYEJsb2NrTnVtYmVyRm9yOjpNQVhgLCBib3VudGllcyBzdGF5IGFjdGl2ZSBpbmRlZmluaXRlbHksuCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4AYEN1cmF0b3JEZXBvc2l0TXVsdGlwbGllcl0JECChBwAQGQEgVGhlIGN1cmF0b3IgZGVwb3NpdCBpcyBjYWxjdWxhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY3VyYXRvciBmZWUuADkBIFRoaXMgZGVwb3NpdCBoYXMgb3B0aW9uYWwgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyB3aXRoIGBDdXJhdG9yRGVwb3NpdE1heGAgYW5kVCBgQ3VyYXRvckRlcG9zaXRNaW5gLgBEQ3VyYXRvckRlcG9zaXRNYXgxAUQBACBKqdEBAAAAAAAAAAAAAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4AREN1cmF0b3JEZXBvc2l0TWluMQFEAQDodkgXAAAAAAAAAAAAAAAESQEgTWluaW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAEhCb3VudHlWYWx1ZU1pbmltdW01AUAA6HZIFwAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAEhEYXRhRGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAABGEBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IHBlciBieXRlIHdpdGhpbiB0aGUgdGlwIHJlcG9ydCByZWFzb24gb3IgYm91bnR5IGRlc2NyaXB0aW9uLgBMTWF4aW11bVJlYXNvbkxlbmd0aDgQAEAAAAyIIE1heGltdW0gYWNjZXB0YWJsZSByZWFzb24gbGVuZ3RoLgBlASBCZW5jaG1hcmtzIGRlcGVuZCBvbiB0aGlzIHZhbHVlLCBiZSBzdXJlIHRvIHVwZGF0ZSB3ZWlnaHRzIGZpbGUgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlAAGhDgAAAEEAADRDaGlsZEJvdW50aWVzATRDaGlsZEJvdW50aWVzHEBDaGlsZEJvdW50eUNvdW50AQA4EAAAAAAIbQEgREVQUkVDQVRFRDogUmVwbGFjZWQgd2l0aCBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYCBzdG9yYWdlIGl0ZW0ga2VlcGluZyBkZWRpY2F0ZWQgY291bnRzVQEgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzLiBXaWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuAExQYXJlbnRDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAIzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LuAgTWFwIG9mIHBhcmVudCBib3VudHkgaW5kZXggdG8gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzLgBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAEQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgA0Q2hpbGRCb3VudGllcwABCAUFzKUOBAAElCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AZENoaWxkQm91bnR5RGVzY3JpcHRpb25zVjEAAQgFBcydDgQADCkBIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGNoaWxkLWJvdW50eS4gSW5kZXhlZCBieSBgKHBhcmVudF9pZCwgY2hpbGRfaWQpYC4AbQEgVGhpcyBpdGVtIHJlcGxhY2VzIHRoZSBgQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNgIHN0b3JhZ2UgaXRlbSBmcm9tIHRoZSBWMCBzdG9yYWdlIHZlcnNpb24uAFBWMFRvVjFDaGlsZEJvdW50eUlkcwABBAU4zAQAFF0BIFRoZSBtYXBwaW5nIG9mIHRoZSBjaGlsZCBib3VudHkgaWRzIGZyb20gc3RvcmFnZSB2ZXJzaW9uIGBWMGAgdG8gdGhlIG5ldyBgVjFgIHZlcnNpb24uAG0BIFRoZSBgVjBgIGlkcyBiYXNlZCBvbiB0b3RhbCBjaGlsZCBib3VudHkgY291bnQgW2BDaGlsZEJvdW50eUNvdW50YF1gLiBUaGUgYFYxYCB2ZXJzaW9uIGlkc0EBIGJhc2VkIG9uIHRoZSBjaGlsZCBib3VudHkgY291bnQgcGVyIHBhcmVudCBib3VudHkgW2BQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgXS5lASBUaGUgaXRlbSBpbnRlbmRlZCBzb2xlbHkgZm9yIGNsaWVudCBjb252ZW5pZW5jZSBhbmQgbm90IHVzZWQgaW4gdGhlIHBhbGxldCdzIGNvcmUgbG9naWMuAExDaGlsZHJlbkN1cmF0b3JGZWVzAQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAABAEBIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZlZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LgABLQUAAZkJAAhkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bTUBQADkC1QCAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AAa0OAAAAQgAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAvUENQUEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAATEFAAGdCQAAAbEOAAQkQXNzZXRLaW5k9QQERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AQwAASE11bHRpQXNzZXRCb3VudGllcwFITXVsdGlBc3NldEJvdW50aWVzHCxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTi1DgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ANENoaWxkQm91bnRpZXMAAQgFBczBDgQADJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgBYQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbFRvdGFsQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbENoaWxkQm91bnRpZXNWYWx1ZVBlclBhcmVudAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAABBtASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgdmFsdWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gVG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSBwYXJlbnSQIGJvdW50eSBwYXlvdXQgd2hlbiBhd2FyZGluZyBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuADhDdXJhdG9yRGVwb3NpdAABCAUFxQ7JDgQALGUBIFRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaW5jdXJyZWQgYnkgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciBmb3IgY29tbWl0dGluZyB0byB0aGUgcm9sZS4AcQEgRGV0ZXJtaW5lZCBieSBbYHBhbGxldDo6Q29uZmlnOjpDb25zaWRlcmF0aW9uYF0uIEl0IGlzIGNyZWF0ZWQgd2hlbiB0aGUgY3VyYXRvciBhY2NlcHRzIHRoZUUBIHJvbGUsIGFuZCBpcyBlaXRoZXIgYnVybmVkIGlmIHRoZSBjdXJhdG9yIG1pc2JlaGF2ZXMgb3IgY29uc3VtZWQgdXBvbiBzdWNjZXNzZnVshCBjb21wbGV0aW9uIG9mIHRoZSBjaGlsZC0vYm91bnR5LgARASBOb3RlOiBJZiB0aGUgcGFyZW50IGN1cmF0b3IgaXMgYWxzbyBhc3NpZ25lZCB0byB0aGUgY2hpbGQtYm91bnR5LCAgDQEgdGhlIGNvbnNpZGVyYXRpb24gY29zdCBpcyBjaGFyZ2VkIG9ubHkgb25jZSDigJQgd2hlbiB0aGUgY3VyYXRvciAgoCBhY2NlcHRzIHRoZSByb2xlIGZvciB0aGUgcGFyZW50IGJvdW50eS4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAAE5BQABoQkADEhCb3VudHlWYWx1ZU1pbmltdW01AUAAyBeoBAAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bTUBQACUNXcAAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgABzQ4ACCRBc3NldEtpbmT1BAhBASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHVzZWQgdG8gZnVuZCwgcmVmdW5kIGFuZCBzcGVuZCBmcm9tKCBib3VudGllcy4sQmVuZWZpY2lhcnn5BARBASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgcGF5bWVudHMuAEQAAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAQQUEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAE9BQABpQkADCBQYWxsZXRJZL0LIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgAB0Q4AAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwDVDhAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgBFAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBAGEFOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEAWQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAAF0FBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AAVUFAAGtCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAG1CQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEANQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEANQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAEUFBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQTdDgQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOOkOBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOPkOBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBTj9DgQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOFkBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBIkFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAFtBQABuQkADCBQYWxsZXRJZL0LIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AARUPAAQ0UmV3YXJkQ291bnRlcjUFMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQQdDwQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSghDwQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAGhBQABwQkACDRCYWdUaHJlc2hvbGRzJQ8JGSEDAOQLVAIAAADznoCXAgAAAKixl+ICAAAAlEkuNgMAAAAnnDqTAwAAAAO8zvoDAAAAQsAbbgQAAAAbR3XuBAAAADheVX0FAAAARtxgHAYAAACJOGzNBgAAALbugJIHAAAA/n7jbQgAAADoGxpiCQAAALAZ9HEKAAAAEDWSoAsAAADPyW/xDAAAAEEUbWgOAAAA55vaCRAAAADO6IXaEQAAACipx98TAAAAu3CTHxYAAACOQImgGAAAAIEKCWobAAAANmpIhB4AAABb02r4IQAAAIB8nNAlAAAAyVUwGCoAAAC9Y8HbLgAAAHHgVyk0AAAAaJCSEDoAAADtxNSiQAAAAGmTefNHAAAAj9gMGFAAAABLr4ooWQAAAGoWpj9jAAAACZUXe24AAAB4xfT7egAAAGLIEeeIAAAAUb9tZZgAAAAEjqukqQAAAFRGmNe8AAAAkcrANtIAAAAXXxgB6gAAAL0VsnwEAQAAQzWP9yEBAAC4/ITIQgEAAJlnPFBnAQAAB+RO+o8BAACzQYM+vQEAAAJ/LqLvAQAAmIO8uScCAAAWTWUqZgIAALSVE6yrAgAALY6CC/kCAACh5pgsTwMAAKYWCA2vAwAAzJ03xxkEAACg1YSVkAQAAELn4NUUBQAAAozXDagFAAAPdQrvSwYAAOqNLlwCBwAAw8uZbs0HAACx5XF8rwgAAKorjh+rCQAAtcEgPcMKAAAm0D0O+wsAAHDHWSlWDQAA663ajNgOAAD3l9uqhhAAAM/wRHZlEgAAHyZgcXoUAAAJphG+yxYAAB376C9gGQAAlDo8YD8cAACK/onEcR8AAM7ZY8cAIwAAA6kq5PYmAAD+cu7FXysAADbJzGlIMAAA2uMyRb81AAAGKnRw1DsAAHyXMtaZQgAAhKMkaCNKAABXGtRZh1IAAOfxAmLeWwAADbh2A0RmAACuBAHe1nEAAH2eswi5fgAAHgRKdhCNAAA6HfBkB50AAOBPr9rMrgAAVnnwL5XCAACVw6qpmtgAAJZ8BSUe8QAAF3pm1mcMAQAoyx8eyCoBAPooL3WYTAEA1X3IdDxyAQB9xLP7IpwBADZc3nTHygEAnrjhQrP+AQAMMa5UfzgCAF/hAejVeAIAY3PafnTAAgBR0aYNLhADAMfppGjtaAMAYcCR97fLAwC/J6G3sDkEAHsUmZQbtAQAhSPtImE8BQBppdTFEtQFAOyMk03vfAYA9aqQG+g4BwCMvl3bJgoIAAKXjOET8wgA+uMUQ132CQDd8S26/hYLAC663G9KWAwADFUYxPK9DQDwu1QxFUwPAEmOhmtGBxEAssFT3p/0EgAnii+yzhkVALI5n4QkfRcA4ZnnBKolGgC6E/WrMxsdACZHhcx4ZiAAiL+APy0RJAAcmCP4HSYoAMzEItRQsSwA8IiCBSjAMQA2fG1+iWE3AG6TKdMKpj0AjLxsEyKgRAAAcPMqXGRMALQ7hGmZCVUAgLSr5FCpXgCgzal5219pAEzCf0zHTHUA0KwOujSTggBIPgzPPVqRAGjGjnRpzaEAKB5vpSsdtACYqSMmdH/IAPCadGNNMN8AgM38S41y+ACQFGAtmpAUAfC0E9lF3TMBIJc1lsG0VgFQ3PuurX19AeARmLlHqqgBMMfuFru52AEgbkiGlzkOAqD6Sx1yx0kCwBFxcLUSjAKAihZDpt7VAsD4I7GiBCgDgK9ZcKJ2gwPAby2H/0HpA0CTf6yPkloEAJEJcRe22ARAD99bISBlBQBJwUlEbgEGAI68puVsrwYAWVaGhRxxB4BoqjSkt0gIgKHinlK5OAkAvavogORDCgAqcrQgTG0LgPHAEzNcuAwAoDzL3OMoDoC4YpqeIMMPAN5Wk9LKixEAXX9MkyOIEwAah981BL4VAKfOS4TvMxgAARD76iTxGgCAKuXRtf0dACKhNGCdYiEARCFr8NopJQACYfGCj14pAGYgz4UeDS4AhBAZUlJDMwCgwY/KhBA5ACatFJPMhT8A0M0kZi+2RgCc4Zoc2rZOAFjMwgxfn1cAIAp1ePuJYQAwu7vW5JNsAGDLp9ye3XgAuDvAQluLhgC4hiNhZMWVAPjxX9yTuKYAIGqRwNaWuQDY7+KPwJfOAGgpm/Uu+eX//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABKQ8ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EMQ8YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUENQ8EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBDkPBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAcUJAAggUGFsbGV0SWS9CyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uRQUQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABPQ8AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AACpBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAEEPBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAGlBQAByQkABChLZXlEZXBvc2l0NQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgABSQ8AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBANEFBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBcxNDwQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUFzDwEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUFzF0PBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUFzDwEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAckFAAHRCQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAWEPAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXM2QUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBczZBQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBThlDwQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBcxpDwQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTj5BQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAA+QUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAHkPBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAH9BQAB1QkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAQEGAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQBVDwQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4fQ8EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFiQ8NBgQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUF+QyNDwQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAHZBgAB5QkAAAGZDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzODUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBADUBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEARQUQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAEUFEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQA1AUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEANQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAEUFEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUF+Qw1AQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQB1AQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4dQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEnQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUE5QYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQTpBggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUEoQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAApQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBAKkPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUF+QytDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQWJD7EPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBfkMwQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBfkM6QYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4NQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4xQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEA7QkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAAD1BgQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAEUFEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBADUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUF+QzRDwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAANUPBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAADZDwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBd0P4Q8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU46Q8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBfkM7Q8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAA9QYEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQDxDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBAPUPBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4+Q8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgAB4QYAAekJADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ3UBBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgAB/Q8ABDxDdXJyZW5jeUJhbGFuY2U1AQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3QBEAQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3QBEDUBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYTgJEAwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAACROZnRDbGFpbXMBJE5mdENsYWltcxQsQ3JlZGl0VHJlZXMAAQQFOD0HBAAIYQEgVGhlIE1lcmtsZSBjb21taXRtZW50IHRvIHRoZSBORlQgY2xhaW0gY3JlZGl0cyBhd2FyZGVkIGluIG9uZSBQZW9wbGUtY2hhaW4gYmxvY2ssIGtleWVkPCBieSB0aGF0IGJsb2NrLgBQTmV4dEV4cGVjdGVkU2VxdWVuY2UBACggAAAAAAAAAAAMSQEgVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgbmV4dCB0cmVlIGV4cGVjdGVkIGZyb20gdGhlIGdhbWUgcGFsbGV0J3MgbGl2ZSBzdHJlYW0uAC0BIEEgYmF0Y2ggc3RhcnRpbmcgYWJvdmUgaXQgbWVhbnMgdGhlIHRyZWVzIGluIGJldHdlZW4gd2VyZSBsb3N0IG9uIHRoZSB3YXkuADhDbGFpbWVkQ3JlZGl0cwABCAUGDRAQBAAM8CBUaGUgbGVhdmVzIG9mIGFuIGF3YXJkIGJsb2NrJ3MgdHJlZSB0aGF0IGhhdmUgYmVlbiBjbGFpbWVkLmkBIEEgbGVhZiBjb21taXRzIHRvIG9uZSBjbGFpbWFudCBob2xkaW5nIG9uZSBjcmVkaXQsIHNvIGl0IGlkZW50aWZpZXMgdGhlIGNsYWltIG9uIGl0cyBvd24uRQEgRW50cmllcyBhcmUga2VwdCBmb3IgZ29vZDogZHJvcHBpbmcgb25lIHdvdWxkIGxldCB0aGF0IGNyZWRpdCBtaW50IGEgc2Vjb25kIE5GVC4ANENsYWltZWRDb3VudHMBAQQFODgQAAAAAAjcIEhvdyBtYW55IG9mIGFuIGF3YXJkIGJsb2NrJ3MgbGVhdmVzIGhhdmUgYmVlbiBjbGFpbWVkLj0BIEFnYWluc3QgdGhlIHRyZWUncyBgbGVhZl9jb3VudGAsIHRoaXMgdGVsbHMgd2hldGhlciBhbnl0aGluZyBpcyBsZWZ0IHRvIGNsYWltLgBEQ29sbGVjdGlvbk1pbnRlcnMAAQQFOBEQBAAIYQEgVGhlIGNvbGxlY3Rpb25zIHdob3NlIG93bmVycyBhY2NlcHQgY2xhaW1zLCBlYWNoIGJvdW5kIHRvIHRoZSByZWdpc3RlcmluZyBvd25lciBhbmQgdGhlYQEgW2BJdGVtU2VsZWN0aW9uYF0gZGVjaWRpbmcgdGhlIGl0ZW0uIEEgY29sbGVjdGlvbiB3aXRoIG5vIGVudHJ5IGNhbm5vdCBiZSBjbGFpbWVkIGludG8uAAEtBwAB+QkACEhNYXhUcmVlc1Blck1lc3NhZ2U4ECAAAAAQ2CBNYXhpbXVtIG51bWJlciBvZiBjcmVkaXQgdHJlZXMgYWNjZXB0ZWQgaW4gb25lIGJhdGNoLgBVASBNdXN0IGJlIGF0IGxlYXN0IHRoZSBnYW1lIHBhbGxldCdzIGBNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2VgLCBvdGhlcndpc2UgdGhlIGJhdGNoZXPgIGl0IHNlbmRzIGZhaWwgdG8gZGVjb2RlIGFuZCB0aGUgdHJlZXMgaW4gdGhlbSBhcmUgbG9zdC4ANE1heFByb29mTm9kZXM4EBAAAAAQ/CBNYXhpbXVtIG51bWJlciBvZiBzaWJsaW5nIGhhc2hlcyBhbiBpbmNsdXNpb24gcHJvb2YgbWF5IGNhcnJ5LgBBASBBIHRyZWUgb2YgYG5gIGxlYXZlcyBuZWVkcyBgY2VpbChsb2cyKG4pKWAgb2YgdGhlbSwgc28gdGhpcyBtdXN0IGNvdmVyIHRoZSBnYW1lZQEgY2hhaW4ncyBgTWF4Q3JlZGl0c1BlckJsb2NrYDogYSBsb3dlciBib3VuZCBsZWF2ZXMgdGhlIHRhaWwgb2YgYSBsYXJnZSB0cmVlIHVuY2xhaW1hYmxlLgABFRAAAABgAABETWVtYmVyc1N1YnNjcmliZXIBRE1lbWJlcnNTdWJzY3JpYmVyHCRSaW5nUm9vdHMAAQwFAgIZEB0QBAAkuCBSZWNlbnQgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllci5ZASBNYXBzIChnZW5lcmF0aW9uLCBpZGVudGlmaWVyLCByaW5nX2luZGV4KSB0byBhIHNsaWRpbmcgd2luZG93IG9mIHJpbmcgcm9vdHM7IG9ubHkgdGhlTQEgW2BDdXJyZW50R2VuZXJhdGlvbmBdIHByZWZpeCBpcyBsaXZlLCBzbyBhIGxvZ2ljYWwgY2xlYXIgbGVhdmVzIHRoZSBvbGRlciBwcmVmaXhlc8wgdW5yZWFjaGFibGUgdW50aWwgdGhlIG9mZmNoYWluIHB1cmdlIHJlbW92ZXMgdGhlbS4tASBQcm9vZnMgYXJlIGFjY2VwdGVkIGFnYWluc3QgYW55IHJvb3QgaW4gdGhlIHdpbmRvdyB0aGF0IGhhcyBub3QgZXhwaXJlZDogYTUBIHN1cGVyc2VkZWQgcm9vdCBleHBpcmVzIG9uY2UgYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbmAgaGFzIHBhc3NlZCBzaW5jZSBpdHMxASBzdWNjZXNzb3IncyBzb3VyY2UgdGltZS4gVGhlIG9sZGVzdCByb290IGlzIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IHJlYWNoZXM9ASBgTWF4UmVjZW50Um9vdHNQZXJSaW5nYCwgc28gZXhwaXJlZCByb290cyBtYXkgcmVtYWluIHN0b3JlZCB1bnRpbCB0aGVuIGJ1dCBhcmV4IHJlamVjdGVkIGR1cmluZyB2ZXJpZmljYXRpb24uAERDdXJyZW50R2VuZXJhdGlvbgEAOBAAAAAADBUBIEdlbmVyYXRpb24gcHJlZml4IGhvbGRpbmcgdGhlIGxpdmUgYFJpbmdSb290c2AgZW50cmllcy4gSW5jcmVhc2VkIG9uYQEgYGNsZWFyX2FsbF9yaW5nX2RhdGFgIGNhbGwuIEEgc2F0dXJhdGVkIGNvdW50ZXIgc3RvcHMgZGlzdGluZ3Vpc2hpbmcgZ2VuZXJhdGlvbnMsIHdoaWNo3CBpcyB1bnJlYWNoYWJsZSBmb3Igbm90aWZpZXItZHJpdmVuIHJlLWluaXRpYWxpemF0aW9ucy4APFF1ZXVlZFJpbmdQdXJnZQAAKRAEAAhhASBQb3NpdGlvbiBvZiB0aGUgcHVyZ2UgdGhhdCByZW1vdmVzIHRoZSBzdGFsZSBgUmluZ1Jvb3RzYCBwcmVmaXhlcy4gQWJzZW50IHdoZW4gbm8gc3RhbGVMIHJpbmcgZGF0YSByZW1haW5zLgBQUmluZ0NvbGxlY3Rpb25TdGF0ZXMBAQQCCC0QOAAAAAAAAAAAAAAAAAAABEEBIFN0YXRlIG9mIGVhY2ggcmluZyBjb2xsZWN0aW9uIGluY2x1ZGluZyByaW5ncyBjb3VudCBhbmQgbWlzc2luZyByaW5ncyB0cmFja2luZy4AXFJpbmdDb2xsZWN0aW9uRXhwb25lbnRzAAEEAghlBwQAGOQgUmluZyBleHBvbmVudCByZWNvcmRlZCBwZXIgY29sbGVjdGlvbiBhdCBpbml0aWFsaXphdGlvbi4ARQEgVGhlIHN1YnNjcmliZXIgbmVlZHMgdGhlIGV4cG9uZW50IHRvIGRlcml2ZSB0aGUgY3J5cHRvJ3MgYENvbmZpZ2Agd2hlbiB2ZXJpZnlpbmdJASBwcm9vZnMsIHNpbmNlIHJpbmcgcm9vdHMgb24gdGhlaXIgb3duIGRvIG5vdCBjYXJyeSB0aGF0IGluZm9ybWF0aW9uLiBUaGUgZW50cnkgaXNFASB3cml0dGVuIGJ5IGBpbml0aWFsaXplX3Jpbmdfcm9vdHNgIGFuZCBpcyByZWFkIGR1cmluZyBwcm9vZiB2ZXJpZmljYXRpb24gdmlhIHRoZWQgYE1lbWJlcnNoaXBQcm92ZXJgIGltcGwuADBTdWJzY3JpcHRpb24BAEEQBAAEdCBDdXJyZW50IHN1YnNjcmlwdGlvbiBzdGF0dXMuADxQcm9jZXNzaW5nU3RhdGUBAEUQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdASBTdGF0ZSBmb3IgdHJhY2tpbmcgdXBkYXRlcyBwcm9jZXNzaW5nIHRpbWVzdGFtcHMgYW5kIHNlcXVlbmNlIG51bWJlcnMuAAFhBwABAQoAOERSaW5nUm9vdHNOb3RpZmllckkQGAEBAHkXRQikIEVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBub3RpZmllci6wIEluY2x1ZGVzIHRoZSBYQ00gbG9jYXRpb24gYW5kIHBhbGxldCBpbmRleC4AKFNlbGZQYXJhSWQ4ENwFAAAEIQEgVGhpcyBjaGFpbidzIHBhcmFjaGFpbiBJRCwgaW5jbHVkZWQgaW4gcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllci4AcE1heE1pc3NpbmdSb290c1BlckNvbGxlY3Rpb244EP8AAAAE1CBNYXhpbXVtIG51bWJlciBvZiBtaXNzaW5nIHJpbmcgcm9vdHMgcGVyIGNvbGxlY3Rpb24uAHBNYXhEZWxldGVkUmluZ3NQZXJDb2xsZWN0aW9uOBBkAAAACPwgTWF4aW11bSBudW1iZXIgb2YgZGVsZXRlZCByaW5nIGluZGljZXMgdHJhY2tlZCBwZXIgY29sbGVjdGlvbi7MIFByZXZlbnRzIGZhbHNlbHkgbWFya2luZyBkZWxldGVkIHJpbmdzIGFzIG1pc3NpbmcuAEhNYXhHYXBTY2FuUGVyQmF0Y2g4ECAAAAAM4CBOdW1iZXIgb2YgcmluZyBpbmRpY2VzIHRoZSBnYXAgc2NhbiBleGFtaW5lcyBwZXIgYmF0Y2gu/CBJdCBtdXN0IGV4Y2VlZCBgTWF4VXBkYXRlc1BlckJhdGNoYCwgb3RoZXJ3aXNlIHRoZSBzY2FuIGN1cnNvchkBIGFkdmFuY2VzIG5vIGZhc3RlciB0aGFuIHRoZSByaW5nIGluZGV4IGZyb250aWVyIGFuZCBuZXZlciBjYXRjaGVzIHVwLgA0UHVyZ2VQYWdlU2l6ZTgQZAAAAAxFASBNYXhpbXVtIG51bWJlciBvZiBgUmluZ1Jvb3RzYCBlbnRyaWVzIHJlbW92ZWQgcGVyIGBwdXJnZV9zdGFsZV9yaW5nX3Jvb3RzYCBjYWxsLjEBIEJvdW5kcyB0aGUgd2VpZ2h0IG9mIGEgc2luZ2xlIHB1cmdlIHBhZ2U7IHRoZSBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyBwYWdlc5QgdW50aWwgYWxsIHN0YWxlIGVudHJpZXMgYXJlIHJlbW92ZWQuADhNYXhDb2xsZWN0aW9uczgQCgAAAATgIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAIVQEgQ29vbGRvd24gcGVyaW9kIChpbiBzZWNvbmRzKSBhZnRlciByZWNlaXZpbmcgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyByZXBsYXkgcmVxdWVzdHMu2CBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSB2aWEgWENNLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb24oIBAOAAAAAAAAEC0BIER1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBhIHN1cGVyc2VkZWQgcmluZyByb290IHJlbWFpbnMgYWNjZXB0ZWQgZm9yIHByb29mTQEgdmVyaWZpY2F0aW9uLCBtZWFzdXJlZCBmcm9tIGl0cyBzdWNjZXNzb3IncyBzb3VyY2UgdGltZS4gVGhlIG5ld2VzdCByb290IG9mIGEgcmluZzUBIG5ldmVyIGV4cGlyZXMuIEJvdW5kcyBob3cgbG9uZyBhIG1lbWJlciByZW1vdmVkIGZyb20gYSByaW5nIGNhbiBrZWVwIHByb3ZpbmecIG1lbWJlcnNoaXAgYWdhaW5zdCBhIHByZS1yZW1vdmFsIHJvb3QuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAU0QAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgJREAQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgRZEAQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAoU3RhbGVTaW5jZQABBAIEKAQAIF0BIFdoZW4gYSBtYXBwaW5nIHdhcyBmaXJzdCByZXBvcnRlZCBzdGFsZSwgd2hpY2ggaXMgd2hhdCBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGlzOCBjb3VudGVkIGZyb20uAFUBIFRoZSBmaXJzdCBbYFBhbGxldDo6cmVwb3J0X3N0YWxlX2FsaWFzZXNgXSBmb3IgYSBzdGFsZSBtYXBwaW5nIHN0YW1wcyBpdCBhbmQgcmVtb3Zlc3EBIG5vdGhpbmc7IGEgbGF0ZXIgY2FsbCBkb2VzIHRoZSByZW1vdmFsLiBUaGUgc3RhbXAgaXMgdGhlIHJpbmcncyBuZXdlc3Qgcm9vdCB0aW1lIHdoZXJlIHRoYXRNASBpcyBzdGlsbCBrbm93biBhbmQgdGhlIGNhbGwncyBvd24gdGltZSBvdGhlcndpc2UsIHNvIGEgZGVsZXRlZCByaW5nIGtlZXBzIHRoZSBmdWxsaQEgcmV0ZW50aW9uLiBFdmVyeSBwYXRoIHRoYXQgd3JpdGVzIFtgQWNjb3VudFRvQWxpYXNgXSBjbGVhcnMgaXQsIGFzIGRvZXMgYSBjYWxsIHRoYXQgZmluZHMtASB0aGUgcmV2aXNpb24gdmVyaWZ5aW5nIGFnYWluLCBzbyBhIG1hcHBpbmcga25vd24gdG8gYmUgdmFsaWQgaGFzIG5vIHN0YW1wLgABhQcAAQUKABxMUHJvb2ZWYWxpZGl0eVdpbmRvdyggLAEAAAAAAAAM6CBUaW1lIHRvbGVyYW5jZSAoaW4gc2Vjb25kcykgZm9yIHByb29mLWJhc2VkIHRyYW5zYWN0aW9ucy5JASBQcm9vZnMgYXJlIHZhbGlkIGZyb20gYHByb29mX3ZhbGlkX2F0YCB0byBgcHJvb2ZfdmFsaWRfYXQgKyBQcm9vZlZhbGlkaXR5V2luZG93YC5sIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAEBNYXBwaW5nUmV0ZW50aW9uKCAAp3YAAAAAABBJASBIb3cgbG9uZyAoaW4gc2Vjb25kcykgYSBtYXBwaW5nIGlzIGtlcHQsIGNvdW50ZWQgZnJvbSBbYFN0YWxlU2luY2VgXSwgYWZ0ZXIgd2hpY2hhASBbYFBhbGxldDo6cmV0aXJlX3N0YWxlX2FsaWFzZXNgXSBtYXkgcmVtb3ZlIGl0LiBBIHJlYnVpbHQgcmluZyBzdGFtcHMgdGhlIG5ld2VzdCByb290J3NZASBzb3VyY2UgdGltZSwgd2hpY2ggW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXSBhbHNvIG1lYXN1cmVzIGl0cyBvd24gcmV0ZW50aW9uIGZyb20sIHNvWQEgdGhlIG1hcHBpbmcgb3V0bGl2ZXMgdGhlIHJldmlzaW9uIG9ubHkgYnkgdGhlIGRpZmZlcmVuY2UuIE11c3QgZXhjZWVkIHRoYXQgcmV0ZW50aW9uLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudGUHBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudGUHBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAEhNYXhTdGFsZUFsaWFzQmF0Y2g4ECAAAAAUMQEgVGhlIG1vc3QgbWFwcGluZ3Mgb25lIHN3ZWVwIHRyYW5zYWN0aW9uIGNhcnJpZXMuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAF0BIEEgc3dlZXAgc3VibWl0cyBvbmUgdHJhbnNhY3Rpb24gcGVyIGFjdGlvbiwgc28gdGhpcyBib3VuZHMgZWFjaCBvZiB0aGVtLiBFdmVyeSBtYXBwaW5nQQEgaW4gYSBiYXRjaCBpcyB2ZXJpZmllZCB0d2ljZSwgb25jZSBpbiBgYXV0aG9yaXplYCBhbmQgb25jZSBpbiB0aGUgY2FsbCwgYW5kIHRoZbggYGludGVncml0eV90ZXN0YCBob2xkcyB0aGUgcGFpciB0byB0aGUgYmxvY2suAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABXRAAAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGAmEQEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABkQcAAQkKABQsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnQ1AUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgABZRAAAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAY8GAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAY8aRAEAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGXQdxEAQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYGfRA1AUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGXQeBEAQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTiFEAQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEAiRAgAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAZdBwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAI0QEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEA+RAEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAAEREQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAwHPES3QBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQANEQQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBABEREAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAGVBwABDQoALDhEZXBvc2l0UGVyQnl0ZTUBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbTUBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbTUBQADC6wsAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50RQUQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RldQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQ1BUAAANpJO3F9DAAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWR1AQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwdQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABFREABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAAAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkYREFsaWFzUmVnaXN0cmF0aW9uAAEEAggZEQQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCqQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuADBBY2NvdW50TmFtZXMAAQQCBCERBAA49CBUaGUgZG90TlMgbGFiZWxzIGVhY2ggYWNjb3VudCBhY3F1aXJlZCB0aHJvdWdoIHRoaXMgZ2F0ZXdheS4AJQEgS2V5ZWQgYnkgYWNjb3VudCBzbyBjbGllbnRzIGNhbiB3YXRjaCBhIHNldCBvZiBhY2NvdW50cyB3aXRoIG9uZSBzdG9yYWdlOCBzdWJzY3JpcHRpb24uACkBIFdhcm5pbmc6IHRoaXMgbWFwIGlzIG5vdCB0aGUgc291cmNlIG9mIHRydXRoOyB0aGUgZG90TlMgY29udHJhY3RzIGFyZS4gSXQtASBpcyB3cml0dGVuIG9uIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBhbmQgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBvbmx5LCUBIHNvIGEgbGFiZWwgdGhhdCBjaGFuZ2VzIHB1cmVseSBjb250cmFjdC1zaWRlIChmb3IgZXhhbXBsZSBhIHRyYW5zZmVyKSBpcykBIG5vdCByZWZsZWN0ZWQgaGVyZSBhbmQgY2xpZW50cyBtdXN0IHJlLXZlcmlmeSBvbiByZWFkIHZpYSBjb250cmFjdCB2aWV3cy4lASBOYW1lcyByZWdpc3RlcmVkIG91dHNpZGUgdGhlc2UgcGF0aHMgbmV2ZXIgYXBwZWFyIGhlcmUgYXQgYWxsLCBpbmNsdWRpbmcxASBwcmUtbGF1bmNoIHdoaXRlbGlzdCBhbGxvY2F0aW9ucywgd2hpY2ggY2xhaW1hbnRzIHJlZ2lzdGVyIGRpcmVjdGx5IGFnYWluc3SAIHRoZSBkb3ROUyByZWdpc3RyYXIgY29udHJvbGxlci4pASBUaGUgbWFwIGlzIHRlbXBvcmFyeSBhbmQgZ29lcyBhd2F5IG9uY2UgYXBwcyBjYW4gb2JzZXJ2ZSBjb250cmFjdCBzdG9yYWdlNQEgZGlyZWN0bHk6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9pbmRpdmlkdWFsaXR5LWNvbW11bml0eS9pc3N1ZXMvNTI+LgBERGlzcGF0Y2hlckFkZHJlc3MAAF0HBAAMNQEgQWRkcmVzcyBvZiB0aGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QuIE11c3QgYmUgc2V0ICh2aWEgZ2VuZXNpcyBvch0BIFtgUGFsbGV0OjpzZXRfZGlzcGF0Y2hlcl9hZGRyZXNzYF0pIGJlZm9yZSBbYFBhbGxldDo6cmVzZXJ2ZV9uYW1lYF0gb3KcIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHN1Y2NlZWQuAAGlBwABEQoADFRNYXhDb250cmFjdENhbGxXZWlnaHQRASgHAOh2SBcCAIAADDEBIE1heGltdW0gd2VpZ2h0IGJ1ZGdldCBmb3IgYSBzaW5nbGUgY29udHJhY3QgY2FsbC4gVGhlIGV4dHJpbnNpYyBwcmUtY2hhcmdlczEBIHBhbGxldCBvdmVyaGVhZCArIHRoaXMgYnVkZ2V0IGFuZCByZWZ1bmRzIHVudXNlZCB3ZWlnaHQgYmFzZWQgb24gdGhlIGFjdHVhbKAgd2VpZ2h0IHJlcG9ydGVkIGJ5IHRoZSBjb250cmFjdCBjYWxsZXIuAEhNYXhWYWxpZGl0eVNlY29uZHMoIID0AwAAAAAACJwgU2lnbmF0dXJlIHZhbGlkaXR5IHdpbmRvdywgaW4gc2Vjb25kcy4lASBBIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBub3cgPD0gc2lnbmVkX2F0ICsgTWF4VmFsaWRpdHlTZWNvbmRzYC4AUE1heEZ1dHVyZVNrZXdTZWNvbmRzKCAeAAAAAAAAAAjIIENsb2NrLXNrZXcgdG9sZXJhbmNlIGZvciBgc2lnbmVkX2F0YCwgaW4gc2Vjb25kcy4tASBBIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgLgABMREABFBBdHRlc3RhdGlvblNpZ25hdHVyZbUEBA0BIFNpZ25hdHVyZSB0eXBlIHVzZWQgYnkgY2FuZGlkYXRlcyB0byBjb25zZW50IHRvIG5hbWUgcmVzZXJ2YXRpb25zLgCYAABET3JpZ2luUmVzdHJpY3Rpb24BRE9yaWdpblJlc3RyaWN0aW9uBBhVc2FnZXMAAQQCvQc5EQQABIwgVGhlIGN1cnJlbnQgdXNhZ2UgZm9yIGVhY2ggZW50aXR5LgABuQcAARUKAAABPREABEBSZXN0cmljdGVkRW50aXR5vQckUQEgVGhlIHR5cGUgdGhhdCByZXByZXNlbnQgdGhlIGVudGl0aWVzIHRyYWNrZWQsIGl0cyBhbGxvd2FuY2UgYW5kIHRoZSBjb252ZXJzaW9uIGZyb22sIG9yaWdpbiBpcyBib3VuZGVkIGluIFtgUmVzdHJpY3RlZEVudGl0eWBdLgAdASBUaGlzIGlzIHRoZSBjYW5vbmljYWwgb3JpZ2luIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdXNhZ2UgdHJhY2tpbmcujCBFYWNoIGVudGl0eSBpcyB0cmFja2VkIHNlcGFyYXRlbHkuAEkBIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gb3JpZ2luIGFzIGEgbXVsdGlwbGUgb3JpZ2luIGNhbiByZXByZXNlbnQgYSBzaW5nbGUgZW50aXR5LmEBIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgREFPIG9yaWdpbiB3aXRoIGEgcGVyY2VudGFnZSBvZiB2b3RlcnMsIHdlIHdhbnQgdG8gdHJhY2sgdGhlIERBT6wgZW50aXR5IHJlZ2FyZGxlc3Mgb2YgdGhlIHZvdGVyIHBlcmNlbnRhZ2UuAJkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAHBBwABGQoAAAFBEQAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuAPsAADRQZ2FzQWxsb3dhbmNlAAABHQoAAAAAAPwAAAgEBQAgtQQEAEQABAgMEBQYHCAkKCwwNDg8QERgVW5pdFRyYW5zYWN0aW9uRXh0ZW5zaW9uEBAoQXNTY2FyY2l0ecUHEDRBdXRob3JpemVDYWxs0QcQGEFzUGdhc9UHEDhBc0RvdG5zR2F0ZXdheeEHEDxSZXN0cmljdE9yaWdpbnPtBxBIQ2hlY2tOb25aZXJvU2VuZGVy8QcQQENoZWNrU3BlY1ZlcnNpb271Bzg4Q2hlY2tUeFZlcnNpb275BzgwQ2hlY2tHZW5lc2lz/Qc8OENoZWNrTW9ydGFsaXR5AQg8KENoZWNrTm9uY2UJCBAsQ2hlY2tXZWlnaHQNCBBQQ2hhcmdlQXNzZXRUeFBheW1lbnQRCBBEQ2hlY2tNZXRhZGF0YUhhc2gVCJkHMEV0aFNldE9yaWdpbh0IEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQeBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAEURDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwDpCwScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpCExyZWxheV9wYXJlbnRfb2Zmc2V0ADgMFQEgRmV0Y2ggdGhlIHJlbGF5IHBhcmVudCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AXQEgVGhpcyBkZXRlcm1pbmVzIGhvdyBtYW55IGJsb2NrcyBiZWhpbmQgdGhlIHJlbGF5IGNoYWluIHRpcCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZS4AWG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQADIjoIE1heGltdW0gY2xhaW0gcXVldWUgb2Zmc2V0IGZvciBhc3luYyBiYWNraW5nIGZsZXhpYmlsaXR5LgA5ASBCb3VuZHMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBhIGNhbmRpZGF0ZSBtYXkgbG9vayBpbiB0aGUgY2xhaW0gcXVldWUgd2hlblEBIHNlbGVjdGluZyBhIGNvcmUuIFRoZSBlZmZlY3RpdmUgY2xhaW0gcXVldWUgZGVwdGggZGVwZW5kcyBvbiB0aGUgY2FuZGlkYXRlIHZlcnNpb246AGEBIC0gKipWMS9WMiBjYW5kaWRhdGVzKio6IHRoZSBjbGFpbSBxdWV1ZSBpcyBsb29rZWQgdXAgYXQgdGhlIGNhbmRpZGF0ZSdzIGByZWxheV9wYXJlbnRgLEkBICAgd2hpY2ggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXRgIGJsb2NrcyBiZWhpbmQgdGhlIHJlbGF5LWNoYWluIHRpcC4gVGhlIGVmZmVjdGl2ZewgICBkZXB0aCBpcyBgcmVsYXlfcGFyZW50X29mZnNldCArIG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgLgAVASAtICoqVjMgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUnc10BICAgYHNjaGVkdWxpbmdfcGFyZW50YCDigJQgdGhlIHJlbGF5LWNoYWluIGJsb2NrIG9mIHRoZSAqbGFzdCBmaW5pc2hlZCogc2xvdCwgZGVjb3VwbGVkJQEgICBmcm9tIHRoZSBleGVjdXRpb24tY29udGV4dCBgcmVsYXlfcGFyZW50YC4gVGhlIGVmZmVjdGl2ZSBkZXB0aCBpcyBqdXN0cCAgIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AIQEgQ29sbGF0b3JzIHNlbGVjdCBhIGNvcmUgdmlhIGFuIG9mZnNldCBpbiBgWzAsIG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRdYC4AUQEgLSAqKlYyIGNhbmRpZGF0ZXMqKjogYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAxYCBpcyBzdWZmaWNpZW50LiBUaGUgY2xhaW0gcXVldWUgaXNZASAgIGxvb2tlZCB1cCBhdCBgcmVsYXlfcGFyZW50YCwgd2hpY2ggc2l0cyBiZWhpbmQgdGhlIHRpcC4gT2Zmc2V0IDAgY292ZXJzIHN5bmNocm9ub3VzVQEgICBiYWNraW5nIGluIHRoZSBuZXh0IHJlbGF5IGJsb2NrOyBvZmZzZXQgMSBjb3ZlcnMgYXN5bmNocm9ub3VzIGJhY2tpbmcgaW4gdGhlIHJlbGF5UCAgIGJsb2NrIGFmdGVyIHRoYXQuAC0BIC0gKipWMyBjYW5kaWRhdGVzKio6IG9mZnNldCAwIGlzIG5vdCByZWFjaGFibGUg4oCUIHRoZSBgc2NoZWR1bGluZ19wYXJlbnRgVQEgICBpcyB1c3VhbGx5IHRoZSBsZWFmIHdoZW4gcGlja2VkLCBidXQgaXRzIGNoaWxkIGlzIGFscmVhZHkgYmVpbmcgYnVpbHQsIHNvIHRoZXJlIGlzOQEgICBubyBvcHBvcnR1bml0eSB0byBsYW5kIGluIHRoZSBuZXh0IHJlbGF5IGJsb2NrLiBPZmZzZXQgMSBpcyByZWFjaGFibGUgdW5kZXJVASAgIHN5bmNocm9ub3VzLWJhY2tpbmcgc2VtYW50aWNzLiBGb3IgZWxhc3RpYyBzY2FsaW5nIHRoZSBsYXN0IGJsb2NrIGluIHRoZSBidW5kbGUgaXM1ASAgIGJ1aWx0IG5lYXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzbG90LCB3aGljaCBtYWtlcyBvZmZzZXQgMSB0b28gdGlnaHQg4oCUVQEgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldCA9IDJgIGlzIHRoZSBtaW5pbXVtIGNhcCB0aGF0IGtlZXBzIGVsYXN0aWMgc2NhbGluZyB2aWFibGUuAFUBIE5vdGU6IHRoaXMgbWV0aG9kIHdhcyBhZGRlZCBpbiBgYXBpX3ZlcnNpb24gPSAyYC4gQ29sbGF0b3JzIGNhbGxpbmcgb24gcnVudGltZXMgdGhhdE0BIG9ubHkgaW1wbGVtZW50IGBhcGlfdmVyc2lvbiA9IDFgIG9mIFtgUmVsYXlQYXJlbnRPZmZzZXRBcGlgXSB3aWxsIHJlY2VpdmUgYW4gZXJyb3JJASBhbmQgc2hvdWxkIGZhbGwgYmFjayB0byBhIHNlbnNpYmxlIGRlZmF1bHQgKGN1cnJlbnQgY29sbGF0b3IgZGVmYXVsdHM6IGAxYCBvbiB0aGWEIFYzIHBhdGgsIGAwYCBvbiB0aGUgVjEvVjIgcGF0aCkuAPggU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL2lzc3Vlcy84ODkzPgA8UQEgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSBob3cgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUgY2hvc2VuIGFuZCBob3cgY2xhaW0gcXVldWVgIG9mZnNldHMgYXJlIGRldGVybWluZWQuAFkBIEEgbGFyZ2VyIHJlbGF5IHBhcmVudCBvZmZzZXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgbm90IGJlIHRoZSB0aXAgb2ZRASB0aGUgcmVsYXkgY2hhaW4sIGJ1dCBgTmAgYmxvY2tzIGJlaGluZCB0aGUgdGlwLiBUaGlzIG9mZnNldCBpcyB0aGVuIGVuZm9yY2VkIGJ5IHRoZSQgcnVudGltZS4AWQEgVGhlIG1heCBjbGFpbSBxdWV1ZSBvZmZzZXQgZGV0ZXJtaW5lcyBob3cgZmFyICJpbnRvIHRoZSBmdXR1cmUiIGNvbGxhdG9ycyB0YXJnZXQgd2hlblEBIHNlbGVjdGluZyBjb3JlcyBmcm9tIHRoZSBjbGFpbSBxdWV1ZS4gVGhpcyBwcm92aWRlcyBhc3luYyBiYWNraW5nIGZsZXhpYmlsaXR5IHdoaWxlqCBwcmV2ZW50aW5nIGNvbGxhdG9ycyBmcm9tIHNraXBwaW5nIHNsb3RzLvggU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL2lzc3Vlcy84ODkzPgBEIFZlcnNpb24gaGlzdG9yeTr0IC0gVmVyc2lvbiAxOiBJbml0aWFsIHZlcnNpb24gd2l0aCBgcmVsYXlfcGFyZW50X29mZnNldGAgb25secwgLSBWZXJzaW9uIDI6IEFkZGVkIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YCBtZXRob2QIAFhTY2hlZHVsaW5nVjNFbmFibGVkQXBpBFRzY2hlZHVsaW5nX3YzX2VuYWJsZWQAdQEE9CBSZXR1cm5zIHRydWUgaWYgVjMgc2NoZWR1bGluZyBpcyBlbmFibGVkIGZvciB0aGlzIHBhcmFjaGFpbi4AJPAgQVBJIHRvIHRlbGwgdGhlIG5vZGUgc2lkZSB3aGV0aGVyIFYzIHNjaGVkdWxpbmcgaXMgZW5hYmxlZC4A5CBXaGVuIGVuYWJsZWQsIGNvbGxhdG9ycyBtdXN0IHByb2R1Y2UgVjMgY2FuZGlkYXRlcyB3aXRoOuQgLSBQYXJhY2hhaW5CbG9ja0RhdGE6OlYyIGNvbnRhaW5pbmcgdGhlIHNjaGVkdWxpbmcgcHJvb2a8IC0gQ2FuZGlkYXRlRGVzY3JpcHRvclYzIHdpdGggc2NoZWR1bGluZ19wYXJlbnQAHQEgVGhpcyBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCByZWxheSBwYXJlbnQgb2Zmc2V0IChidWlsZGluZyBvbiBvbGRlch0BIHJlbGF5IHBhcmVudHMpLiBBIHBhcmFjaGFpbiBlbmFibGVzIFYzIHdoZW4gaXQgd2FudHMgbG93LWxhdGVuY3kgYmxvY2ucIHByb2R1Y3Rpb24gd2l0aCB0aGUgZHVhbC1wYXJlbnQgbW9kZWwuBABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaDwQc2xvdO0LdQEoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAFEKBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrSREQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJcVREEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEAWREEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uOF0REKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zAFkEDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljaQphERBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudHEReQoEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrSREQZGF0YXERgREEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZYURCHR4aQooYmxvY2tfaGFzaDyJESRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkYQGRERwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYlREMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IAExSdW50aW1lVmlld0Z1bmN0aW9uBFRleGVjdXRlX3ZpZXdfZnVuY3Rpb24IIHF1ZXJ5X2lkoREUaW5wdXQYpREEfCBFeGVjdXRlIGEgdmlldyBmdW5jdGlvbiBxdWVyeS4ABKQgUnVudGltZSBBUEkgZm9yIGV4ZWN1dGluZyB2aWV3IGZ1bmN0aW9ucwQAPEFjY291bnROb25jZUFwaQQ0YWNjb3VudF9ub25jZQQcYWNjb3VudAQ4BMAgR2V0IGN1cnJlbnQgYWNjb3VudCBub25jZSBvZiBnaXZlbiBgQWNjb3VudElkYC4ABIAgVGhlIEFQSSB0byBxdWVyeSBhY2NvdW50IG5vbmNlLgQAVFRyYW5zYWN0aW9uUGF5bWVudEFwaRAocXVlcnlfaW5mbwgMdXh0aQoMbGVuOK0RAABEcXVlcnlfZmVlX2RldGFpbHMIDHV4dGkKDGxlbjixEQAATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBNQEAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4NQEAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjitEQRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjixEQS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQRATUBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYFdlaWdodFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgBMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoODUBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244vREUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZU0CyREUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0EQEUYXNzZXS9A80RGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27FARxtZXNzYWdlTQIgYXNzZXRfaWS9A9ERKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbvEDEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb2441REERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uxQEMeGNtjQP1EQRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbsUB/REEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA8VHJ1c3RlZFF1ZXJ5QXBpCEhpc190cnVzdGVkX3Jlc2VydmUIFGFzc2V0BRIgbG9jYXRpb27FAQkSFPAgUmV0dXJucyBpZiB0aGUgbG9jYXRpb24gaXMgYSB0cnVzdGVkIHJlc2VydmUgZm9yIHRoZSBhc3NldC4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgBUaXNfdHJ1c3RlZF90ZWxlcG9ydGVyCBRhc3NldAUSIGxvY2F0aW9uxQEJEhTgIFJldHVybnMgaWYgdGhlIGFzc2V0IGNhbiBiZSB0ZWxlcG9ydGVkIHRvIHRoZSBsb2NhdGlvbi4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgAE7CBBUEkgZm9yIHF1ZXJ5aW5nIHRydXN0ZWQgcmVzZXJ2ZXMgYW5kIHRydXN0ZWQgdGVsZXBvcnRlcnMuBABUQXV0aG9yaXplZEFsaWFzZXJzQXBpCExhdXRob3JpemVkX2FsaWFzZXJzBBh0YXJnZXTFARESBPQgUmV0dXJucyBsb2NhdGlvbnMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAExpc19hdXRob3JpemVkX2FsaWFzCBhvcmlnaW7FARh0YXJnZXTFARkSBB0BIFJldHVybnMgd2hldGhlciBgb3JpZ2luYCBpcyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ABKAgQVBJIGZvciBxdWVyeWluZyBYQ00gYXV0aG9yaXplZCBhbGlhc2VzBAAwRnVuZ2libGVzQXBpBFhxdWVyeV9hY2NvdW50X2JhbGFuY2VzBBxhY2NvdW50BB0SBOwgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgW2BBc3NldGBdIHRoYXQgYW4gYEFjY291bnRJZGAgaGFzLgAE2CBUaGUgQVBJIGZvciBxdWVyeWluZyBhY2NvdW50J3MgYmFsYW5jZXMgZnJvbSBydW50aW1lLggALFNjYXJjaXR5QXBpBDhtZXRhZGF0YV9iYXRjaAQccXVlcmllcyUSLRIIWQEgUmV0dXJucyBvbmUgcG9zaXRpb25hbGx5IGFsaWduZWQgcmVzdWx0IHBlciBxdWVyeSB3aXRob3V0IGZhaWxpbmcgb24gbWlzc2luZyB0YXJnZXRzLvggQW4gb3ZlcnNpemVkIHJlcXVlc3QgZmFpbHMgZXhwbGljaXRseSBhbmQgaXMgbmV2ZXIgdHJ1bmNhdGVkLgAE/CBSZWFkLW9ubHkgYmF0Y2hlZCBhY2Nlc3MgdG8gU2NhcmNpdHkncyBzdG9yZWQgbWV0YWRhdGEgbGF5ZXJzLgQAME5mdENsYWltc0FwaQQ0cHJldmlld19taW50cwQccXVlcmllc0USTRIQWQEgRXhlY3V0ZXMgdGhlIGNsYWltIHNlbGVjdG9yIG9uY2UgcGVyIHF1ZXJ5IGFuZCByZXR1cm5zIHBvc2l0aW9uYWxseSBhbGlnbmVkIG91dGNvbWVzLmEBIENvbnRyYWN0IHN0YXRlIGNoYW5nZXMgb2NjdXIgb25seSBpbiB0aGUgcnVudGltZSBBUEkgb3ZlcmxheSBhbmQgYXJlIGRpc2NhcmRlZCB3aXRoIGl0Ll0BIFF1ZXJpZXMgcnVuIHNlcXVlbnRpYWxseSBvbiB0aGF0IG9uZSBvdmVybGF5LCBzbyB0d28gcXVlcmllcyBhZ2FpbnN0IHRoZSBzYW1lIHN0YXRlZnVs6CBtaW50ZXIgY29tcG91bmQsIGV4YWN0bHkgYXMgY2xhaW1pbmcgaW4gdGhhdCBvcmRlciB3b3VsZC4ABPggUmVhZC1vbmx5IHByZXZpZXdzIG9mIHRoZSBpdGVtIGVhY2ggTkZUIGNsYWltIGNyZWRpdCBzZWxlY3RzLgQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcZRIQnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhhxEihlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkdRJhAThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAHkSEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQASEFzc2V0Q29udmVyc2lvbkFwaQyMcXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLikAjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEZAhhhc3NldDIZAhhhbW91bnQ1ASxpbmNsdWRlX2ZlZXUBMQEQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQAwZ2V0X3Jlc2VydmVzCBhhc3NldDEZAhhhc3NldDIZAn0SBAUBIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sIGZvciB0aGUgZ2l2ZW4gYXNzZXQgcGFpci4ACCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy4EAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAnASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8ENQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50czUBNQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHM1ATUBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDg1AQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIENQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOHUBIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgR1ARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBDUBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDg1AQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOH0QBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZTUBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BHUBBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8AgRIQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlsJGV0aF9ibG9jawCNEAx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlcp0HIQUE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEA+RAUEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdACdBwR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AbG1heF9leHRyaW5zaWNfd2VpZ2h0X2luX2dhcwCdBwTwIFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIHdlaWdodHMuABxiYWxhbmNlBBxhZGRyZXNzXQedBwQxASBSZXR1cm5zIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MsIHVzaW5nIEVWTSBkZWNpbWFscy4AJGdhc19wcmljZQCdBwRcIFJldHVybnMgdGhlIGdhcyBwcmljZS4AFG5vbmNlBBxhZGRyZXNzXQc4BMQgUmV0dXJucyB0aGUgbm9uY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MuABBjYWxsGBhvcmlnaW4EEGRlc3RdBxR2YWx1ZTUBJGdhc19saW1pdA0BVHN0b3JhZ2VfZGVwb3NpdF9saW1pdDEBKGlucHV0X2RhdGEYiRIM9CBQZXJmb3JtIGEgY2FsbCBmcm9tIGEgc3BlY2lmaWVkIGFjY291bnQgdG8gYSBnaXZlbiBjb250cmFjdC4AiCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX2NhbGxgXS4ALGluc3RhbnRpYXRlHBhvcmlnaW4EFHZhbHVlNQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0MQEQY29kZZ0SEGRhdGEYEHNhbHSZB6ESDHAgSW5zdGFudGlhdGUgYSBuZXcgY29udHJhY3QuAKQgU2VlIGBbY3JhdGU6OlBhbGxldDo6YmFyZV9pbnN0YW50aWF0ZV1gLgAwZXRoX3RyYW5zYWN0BAh0eK0SyRIQaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuAJQgRGVwcmVjYXRlZCB1c2UgYHYyYCB2ZXJzaW9uIGluc3RlYWQusCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAGBldGhfdHJhbnNhY3Rfd2l0aF9jb25maWcICHR4rRIYY29uZmln1RLJEgxoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AsCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAEBldGhfZXN0aW1hdGVfZ2FzCAh0eK0SGGNvbmZpZ9USCRMU6CBFc3RpbWF0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBhIHRyYW5zYWN0aW9ucyByZXF1aXJlcy4AXQEgVGhpcyBmdW5jdGlvbiBlc3RpbWF0ZXMgdGhlIGdhcyBvZiB0aGUgdHJhbnNhY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGJpbmFyeSBzZWFyY2hZASBhbGdvcml0aG0gdGhhdCdzIGltcGxlbWVudGVkIGluIEdldGguIEl0IHN0b3BzIHdoZW4gd2l0aCBhbiBhY2NlcHRhYmxlIGVycm9yIHJhdGlvIG9mtCAxLjUlIHNvIHRoYXQgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGVhcmx5LgBcZXRoX3ByZV9kaXNwYXRjaF93ZWlnaHQECHR4GA0TBE0BIFJldHVybiB0aGUgcHJlLWRpc3BhdGNoIHdlaWdodCBib29rZWQgZm9yIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24gcGF5bG9hZC4ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdDEBERMM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzc10HDGtleQgZExS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNzXQcMa2V5GBkTFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9ja2UKGGNvbmZpZyETPRMYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrZQogdHhfaW5kZXg4GGNvbmZpZyETnRMY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR4rRIYY29uZmlnIROhEwzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgBYdHJhY2VfY2FsbF93aXRoX2NvbmZpZwwIdHitEix0cmFjZXJfdHlwZSETGGNvbmZpZ6UToRMUOQEgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4AQQEgTGlrZSBbYFNlbGY6OnRyYWNlX2NhbGxgXSwgYnV0IGFjY2VwdHMgYSBbYFRyYWNpbmdDb25maWdgXSB0aGF0IGNhbiBjYXJyeSBzdGF0ZUUBIG92ZXJyaWRlcyBhbmQgZnV0dXJlIGV4dGVuc2liaWxpdHkuIFRoZSBjb25maWcgbXVzdCBiZSB0aGUgKipsYXN0IGFyZ3VtZW50KiogZm9yBQEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg4oCUIHNlZSBbYFRyYWNpbmdDb25maWdgXSBkb2N1bWVudGF0aW9uLgAwYmxvY2tfYXV0aG9yAF0HBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZARdBwTMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNzXQcEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwBdBwT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzc10HGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2WdB6kTBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAgOQi1EwA=";
|
|
2
|
-
|
|
3
|
-
export { binMeta as default };
|