@parity/product-sdk-descriptors 0.0.0-dev.409.0 → 0.0.0-dev.457.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.
Files changed (78) hide show
  1. package/README.md +12 -5
  2. package/chains/devnet-asset-hub/generated/dist/common-types.d.ts +267 -0
  3. package/chains/devnet-asset-hub/generated/dist/devnet_asset_hub.d.ts +26 -3
  4. package/chains/devnet-asset-hub/generated/dist/index.d.ts +1 -1
  5. package/chains/devnet-asset-hub/generated/dist/index.js +4 -3
  6. package/chains/devnet-bulletin/generated/dist/common-types.d.ts +263 -0
  7. package/chains/devnet-bulletin/generated/dist/devnet_bulletin.d.ts +28 -4
  8. package/chains/devnet-bulletin/generated/dist/index.d.ts +1 -1
  9. package/chains/devnet-bulletin/generated/dist/index.js +4 -3
  10. package/chains/devnet-individuality/generated/dist/common-types.d.ts +267 -0
  11. package/chains/devnet-individuality/generated/dist/devnet_individuality.d.ts +26 -3
  12. package/chains/devnet-individuality/generated/dist/index.d.ts +1 -1
  13. package/chains/devnet-individuality/generated/dist/index.js +4 -3
  14. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +267 -0
  15. package/chains/kusama-asset-hub/generated/dist/index.d.ts +1 -1
  16. package/chains/kusama-asset-hub/generated/dist/index.js +4 -3
  17. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +28 -4
  18. package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
  19. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +537 -200
  20. package/chains/paseo-asset-hub/generated/dist/descriptors-CcJ9tDRJ.js +25 -0
  21. package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
  22. package/chains/paseo-asset-hub/generated/dist/index.js +8 -7
  23. package/chains/paseo-asset-hub/generated/dist/metadataTypes-C5poj2qg.js +3 -0
  24. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  25. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +206 -100
  26. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CI2Z0pCq.js +3 -0
  27. package/chains/paseo-bulletin/generated/dist/common-types.d.ts +263 -0
  28. package/chains/paseo-bulletin/generated/dist/index.d.ts +1 -1
  29. package/chains/paseo-bulletin/generated/dist/index.js +4 -3
  30. package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +28 -4
  31. package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
  32. package/chains/paseo-individuality/generated/dist/common-types.d.ts +627 -323
  33. package/chains/paseo-individuality/generated/dist/descriptors-CzjDIprM.js +25 -0
  34. package/chains/paseo-individuality/generated/dist/index.d.ts +1 -1
  35. package/chains/paseo-individuality/generated/dist/index.js +9 -7
  36. package/chains/paseo-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
  37. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  38. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +196 -99
  39. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DfzFjfPf.js +3 -0
  40. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +267 -0
  41. package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
  42. package/chains/polkadot-asset-hub/generated/dist/index.js +4 -3
  43. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +28 -4
  44. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
  45. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +1398 -285
  46. package/chains/previewnet-asset-hub/generated/dist/descriptors-B1ublcrh.js +25 -0
  47. package/chains/previewnet-asset-hub/generated/dist/index.d.ts +1 -1
  48. package/chains/previewnet-asset-hub/generated/dist/index.js +10 -9
  49. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-C5poj2qg.js +3 -0
  50. package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  51. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +1055 -148
  52. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CI2Z0pCq.js +3 -0
  53. package/chains/previewnet-bulletin/generated/dist/common-types.d.ts +263 -0
  54. package/chains/previewnet-bulletin/generated/dist/index.d.ts +1 -1
  55. package/chains/previewnet-bulletin/generated/dist/index.js +4 -3
  56. package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin.d.ts +28 -4
  57. package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
  58. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +827 -382
  59. package/chains/previewnet-individuality/generated/dist/descriptors-B5RU7r2I.js +25 -0
  60. package/chains/previewnet-individuality/generated/dist/index.d.ts +1 -1
  61. package/chains/previewnet-individuality/generated/dist/index.js +10 -8
  62. package/chains/previewnet-individuality/generated/dist/metadataTypes-t8EyGAvs.js +3 -0
  63. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  64. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +492 -220
  65. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-93LocnTr.js +3 -0
  66. package/package.json +2 -2
  67. package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +0 -25
  68. package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +0 -3
  69. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +0 -3
  70. package/chains/paseo-individuality/generated/dist/descriptors-BjGIP9nH.js +0 -25
  71. package/chains/paseo-individuality/generated/dist/metadataTypes-B2aDvcHG.js +0 -3
  72. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CA3FRb1i.js +0 -3
  73. package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +0 -25
  74. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +0 -3
  75. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +0 -3
  76. package/chains/previewnet-individuality/generated/dist/descriptors-BFolU1bo.js +0 -25
  77. package/chains/previewnet-individuality/generated/dist/metadataTypes-DrB-HZYT.js +0 -3
  78. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bqj-d95E.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRD5EwAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHoGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAD0BAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIADROZXR3b3JrU3VmZml4BABlAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgCaACBCYWxhbmNlcwQAbQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAIEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAiQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQArQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EALEBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAvQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAwQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAMEDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBADFAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBADJAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQA0QMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADlAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQALQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAA5BAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQARQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBABJBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAFUEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAGkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMkEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEANkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQA3QQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBTY2FyY2l0eQQA5QQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NhcmNpdHksIFJ1bnRpbWU+ADoADFBzbQQA+QQBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHNtLCBSdW50aW1lPgA7ACBUcmVhc3VyeQQABQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEABEFAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAJQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEADkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAD0FAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBABBBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEAEUFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBABNBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQADERhcAQAUQUBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGFwLCBSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EAGkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBACBBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAtQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Vm90ZXJMaXN0LCBSdW50aW1lPgBSADxTdGFraW5nUmNDbGllbnQEALkFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmdSY0NsaWVudCwgUnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBADdBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb24sIFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBAARBgH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllciwgUnVudGltZT4AVgBoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQEABUGAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkLCBSdW50aW1lPgBXAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAO0GAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZCwgUnVudGltZT4AWAAcU3Rha2luZwQA9QYBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4AWQAkTmZ0Q2xhaW1zBABBBwG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRDbGFpbXMsIFJ1bnRpbWU+AGAARE1lbWJlcnNTdWJzY3JpYmVyBAB1BwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzU3Vic2NyaWJlciwgUnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQAmQcByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QWxpYXNBY2NvdW50cywgUnVudGltZT4AYgAQUGdhcwQApQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGdhcywgUnVudGltZT4AYwAYUmV2aXZlBACtBwGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAvQcBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RG90bnNHYXRld2F5LCBSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQA0QcB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8T3JpZ2luUmVzdHJpY3Rpb24sIFJ1bnRpbWU+AJkAEFN1ZG8EANkHAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+APsAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBBDYWxsBARUAAEUNG5vdGVfcHJlaW1hZ2UEARRieXRlcxgBHFZlYzx1OD4AABB0UmVnaXN0ZXIgYSBwcmVpbWFnZSBvbi1jaGFpbi4AVQFJZiB0aGUgcHJlaW1hZ2Ugd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkLCBubyBmZWVzIG9yIGRlcG9zaXRzIGFyZSB0YWtlbiBmb3IgcHJvdmlkaW5nVQF0aGUgcHJlaW1hZ2UuIE90aGVyd2lzZSwgYSBkZXBvc2l0IGlzIHRha2VuIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJlaW1hZ2UuPHVubm90ZV9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAEY3ENsZWFyIGFuIHVucmVxdWVzdGVkIHByZWltYWdlIGZyb20gdGhlIHJ1bnRpbWUgc3RvcmFnZS4A/ElmIGBsZW5gIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgYSBtdWNoIGNoZWFwZXIgb3BlcmF0aW9uLgABAS0gYGhhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJlaW1hZ2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yZS64LSBgbGVuYDogVGhlIGxlbmd0aCBvZiB0aGUgcHJlaW1hZ2Ugb2YgYGhhc2hgLkByZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAhBBAVJlcXVlc3QgYSBwcmVpbWFnZSBiZSB1cGxvYWRlZCB0byB0aGUgY2hhaW4gd2l0aG91dCBwYXlpbmcgYW55IGZlZXMgb3IgZGVwb3NpdHMuAFUBSWYgdGhlIHByZWltYWdlIHJlcXVlc3RzIGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQgb24tY2hhaW4sIHdlIHVucmVzZXJ2ZSBhbnkgZGVwb3NpdDkBYSB1c2VyIG1heSBoYXZlIHBhaWQsIGFuZCB0YWtlIHRoZSBjb250cm9sIG9mIHRoZSBwcmVpbWFnZSBvdXQgb2YgdGhlaXIgaGFuZHMuSHVucmVxdWVzdF9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAMMvENsZWFyIGEgcHJldmlvdXNseSBtYWRlIHJlcXVlc3QgZm9yIGEgcHJlaW1hZ2UuAC0BTk9URTogVEhJUyBNVVNUIE5PVCBCRSBDQUxMRUQgT04gYGhhc2hgIE1PUkUgVElNRVMgVEhBTiBgcmVxdWVzdF9wcmVpbWFnZWAuOGVuc3VyZV91cGRhdGVkBAEYaGFzaGVzwAEwVmVjPFQ6Okhhc2g+AAQMvEVuc3VyZSB0aGF0IHRoZSBidWxrIG9mIHByZS1pbWFnZXMgaXMgdXBncmFkZWQuAD0BVGhlIGNhbGxlciBwYXlzIG5vIGZlZSBpZiBhdCBsZWFzdCA5MCUgb2YgcHJlLWltYWdlcyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7AAAACPADEDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBBDYWxsBARUAAEoIHNjaGVkdWxlEAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABHBBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2suGGNhbmNlbAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEQYQFDYW5jZWwgYSBzY2hlZHVsZWQgdGFzayAobmFtZWQgb3IgYW5vbnltb3VzKSwgYnkgcHJvdmlkaW5nIHRoZSBibG9jayBpdCBpcyBzY2hlZHVsZWQgZm9yGQFleGVjdXRpb24gaW4sIGFzIHdlbGwgYXMgdGhlIGluZGV4IG9mIHRoZSB0YXNrIGluIHRoYXQgYmxvY2sncyBhZ2VuZGEuADUBSW4gdGhlIGNhc2Ugb2YgYSBuYW1lZCB0YXNrLCBpdCB3aWxsIHJlbW92ZSBpdCBmcm9tIHRoZSBsb29rdXAgdGFibGUgYXMgd2VsbC44c2NoZWR1bGVfbmFtZWQUAQhpZAgBIFRhc2tOYW1lAAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACBFhTY2hlZHVsZSBhIG5hbWVkIHRhc2suMGNhbmNlbF9uYW1lZAQBCGlkCAEgVGFza05hbWUAAwR4Q2FuY2VsIGEgbmFtZWQgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX2FmdGVyEAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABASoQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrIGFmdGVyIGEgZGVsYXkuUHNjaGVkdWxlX25hbWVkX2FmdGVyFAEIaWQIASBUYXNrTmFtZQABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAUEkFNjaGVkdWxlIGEgbmFtZWQgdGFzayBhZnRlciBhIGRlbGF5LiRzZXRfcmV0cnkMARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABjhZAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdCB3aWxsVQFiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsIGl0JHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ALQFUaGlzIGNhbGwgKipjYW5ub3QqKiBiZSB1c2VkIHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay48c2V0X3JldHJ5X25hbWVkDAEIaWQIASBUYXNrTmFtZQABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAc4XQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXRdAXdpbGwgYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbDBpdCBzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAA0BVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjBjYW5jZWxfcmV0cnkEARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsgEGE9wdGlvbgQEVAHMAQgQTm9uZQAAABBTb21lBADMAAABAADMAAAECDg4ANAMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBBDYWxsBARUAAEENHNldF9wYXJhbWV0ZXIEASRrZXlfdmFsdWXUAVBUOjpSdW50aW1lUGFyYW1ldGVycwAAEHRTZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgYEFkbWluT3JpZ2luYCBmb3IgdGhlIGdpdmVuIGBrZXlgLiBWYWx1ZXMgYmWIZGVsZXRlZCBieSBzZXR0aW5nIHRoZW0gdG8gYE5vbmVgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7UCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lRFJ1bnRpbWVQYXJhbWV0ZXJzAAEQPFN0YWtpbmdFbGVjdGlvbgQA2AGwZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMAAAAkU2NoZWR1bGVyBAABAQGUZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycwABADBNZXNzYWdlUXVldWUEABUBAaRkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycwACADRBbGlhc0FjY291bnRzBAAlAQGoZHluYW1pY19wYXJhbXM6OmFsaWFzX2FjY291bnRzOjpQYXJhbWV0ZXJzAAMAANgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCADcASxTaWduZWRQaGFzZQAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAOABLE9wdGlvbjx1MzI+AAEANFVuc2lnbmVkUGhhc2UIAOgBNFVuc2lnbmVkUGhhc2UAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgA7AEoTWluZXJQYWdlcwAA4AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAPABRE1heEVsZWN0aW5nVm90ZXJzAADgASxPcHRpb248dTMyPgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrCAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADgASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggA+AE4TWF4RXJhRHVyYXRpb24AAPwBLE9wdGlvbjx1NjQ+AAYAANwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADgBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA5BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAOgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRVbnNpZ25lZFBoYXNlAAAAAOwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPAQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAAD0EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25YVGFyZ2V0U25hcHNob3RQZXJCbG9jawAAAAD4EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAA/AQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAAEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcihQYXJhbWV0ZXJzAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrCAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAOABLE9wdGlvbjx1MzI+AAAANE1heGltdW1XZWlnaHQIAAkBATRNYXhpbXVtV2VpZ2h0AAANAQE4T3B0aW9uPFdlaWdodD4AAQAABQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAAkBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRNYXhpbXVtV2VpZ2h0AAAAAA0BBBhPcHRpb24EBFQBEQEBCBBOb25lAAAAEFNvbWUEABEBAAABAAARAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAABUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWUoUGFyYW1ldGVycwABCDxNYXhPbkluaXRXZWlnaHQIABkBATxNYXhPbkluaXRXZWlnaHQAAB0BAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAAAPE1heE9uSWRsZVdlaWdodAgAIQEBPE1heE9uSWRsZVdlaWdodAAAHQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAQAAGQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAHQEEGE9wdGlvbgQEVAENAQEIEE5vbmUAAAAQU29tZQQADQEAAAEAACEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25JZGxlV2VpZ2h0AAAAACUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zOGFsaWFzX2FjY291bnRzKFBhcmFtZXRlcnMAAQggQWxpYXNGZWUIACkBASBBbGlhc0ZlZQAALQEBXE9wdGlvbjxPcHRpb248QmFsYW5jZT4+AAAAXFN0YWxlQWxpYXNTd2VlcEludGVydmFsCAA5AQFcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAQAAKQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHMgQWxpYXNGZWUAAAAALQEEGE9wdGlvbgQEVAExAQEIEE5vbmUAAAAQU29tZQQAMQEAAAEAADEBBBhPcHRpb24EBFQBNQEBCBBOb25lAAAAEFNvbWUEADUBAAABAAA1AQAABQcAOQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM4YWxpYXNfYWNjb3VudHNcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwAAAAAPQEMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBBDYWxsBARUAAEQQGZvcmNlX3NldF9jdXJzb3IEARhjdXJzb3JBAQFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yUQEBWE9wdGlvbjxSYXdDdXJzb3JPZjxUPj4AAShzdGFydGVkX2F04AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABGFkBQWxsb3dzIHJvb3QgdG8gc2V0IGFuIGFjdGl2ZSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydC9mb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ARQFUaGlzIGlzIGFuIGVkZ2UtY2FzZSB2ZXJzaW9uIG9mIFtgU2VsZjo6Zm9yY2Vfc2V0X2N1cnNvcmBdIHRoYXQgYWxsb3dzIHRvIHNldCB0aGVhAWBzdGFydGVkX2F0YCB2YWx1ZSB0byB0aGUgbmV4dCBibG9jayBudW1iZXIuIE90aGVyd2lzZSB0aGlzIHdvdWxkIG5vdCBiZSBwb3NzaWJsZSwgc2luY2VFAWBmb3JjZV9zZXRfY3Vyc29yYCB0YWtlcyBhbiBhYnNvbHV0ZSBibG9jayBudW1iZXIuIFNldHRpbmcgYHN0YXJ0ZWRfYXRgIHRvIGBOb25lYAEBaW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIHBsdXMgb25lIHNob3VsZCBiZSB1c2VkLkhmb3JjZV9vbmJvYXJkX21ibXMAAhCgRm9yY2VzIHRoZSBvbmJvYXJkaW5nIG9mIHRoZSBtaWdyYXRpb25zLgBdAVRoaXMgcHJvY2VzcyBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgb24gYSBydW50aW1lIHVwZ3JhZGUuIEl0IGlzIGluIHBsYWNlIGFzIGFuIGVtZXJnZW5jefxtZWFzdXJlbWVudC4gVGhlIGN1cnNvciBuZWVkcyB0byBiZSBgTm9uZWAgZm9yIHRoaXMgdG8gc3VjY2VlZC44Y2xlYXJfaGlzdG9yaWMEASBzZWxlY3RvclUBAaBIaXN0b3JpY0NsZWFudXBTZWxlY3RvcjxJZGVudGlmaWVyT2Y8VD4+AAMUaENsZWFycyB0aGUgYEhpc3RvcmljYCBzZXQuAA0BYG1hcF9jdXJzb3JgIG11c3QgYmUgc2V0IHRvIHRoZSBsYXN0IHZhbHVlIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZV0BYEhpc3RvcmljQ2xlYXJlZGAgZXZlbnQuIFRoZSBmaXJzdCB0aW1lIGBOb25lYCBjYW4gYmUgdXNlZC4gYGxpbWl0YCBtdXN0IGJlIGNob3NlbiBpbiBhqHdheSB0aGF0IHdpbGwgcmVzdWx0IGluIGEgc2Vuc2libGUgd2VpZ2h0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BAQQYT3B0aW9uBARUAUUBAQgQTm9uZQAAABBTb21lBABFAQAAAQAARQEIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAUkBLEJsb2NrTnVtYmVyATgBCBhBY3RpdmUEAE0BAYRBY3RpdmVDdXJzb3I8Q3Vyc29yLCBCbG9ja051bWJlcj4AAAAUU3R1Y2sAAQAASQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABNAQhEcGFsbGV0X21pZ3JhdGlvbnMwQWN0aXZlQ3Vyc29yCBhDdXJzb3IBSQEsQmxvY2tOdW1iZXIBOAAMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvclEBAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAAUQEEGE9wdGlvbgQEVAFJAQEIEE5vbmUAAAAQU29tZQQASQEAAAEAAFUBCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQBWQEBCCBTcGVjaWZpYwQAXQEBHFZlYzxJZD4AAAAgV2lsZGNhcmQIARRsaW1pdOABLE9wdGlvbjx1MzI+AAE8cHJldmlvdXNfY3Vyc29yYQEBPE9wdGlvbjxWZWM8dTg+PgABAABZAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAF0BAAACWQEAYQEEGE9wdGlvbgQEVAEYAQgQTm9uZQAAABBTb21lBAAYAAABAABlAQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBBDYWxsBARUAAEESHNldF9uZXR3b3JrX3N1ZmZpeAQBOG5ldHdvcmtfc3VmZml4aQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAAABPxTZXQgdGhlIG5ldHdvcmsgc3VmZml4IHVzZWQgYnkgYWxsIHByb2R1Y3QtY29udGV4dCBkZXJpdmF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABtAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hveQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlcQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9ufQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YXEBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZXEBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZXUBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBAAAGNQEAdQEAAAUAAHkBAAACBAB9AQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAgQEMOHBhbGxldF92ZXN0aW5nGHBhbGxldBBDYWxsBARUAAEYEHZlc3QAACS4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgdGhlIHNlbmRlciBhY2NvdW50LgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLih2ZXN0X290aGVyBAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASy4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgYSBgdGFyZ2V0YCBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgd2hvc2UgdmVzdGVkIGZ1bmRzIHNob3VsZCBiZSB1bmxvY2tlZC4gTXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPHZlc3RlZF90cmFuc2ZlcggBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGWFAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGWFAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAzhgRm9yY2UgYSB2ZXN0ZWQgdHJhbnNmZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAOgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB3aG9zZSBmdW5kcyBzaG91bGQgYmUgdHJhbnNmZXJyZWQuEQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0aGF0IHNob3VsZCBiZSB0cmFuc2ZlcnJlZCB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPG1lcmdlX3NjaGVkdWxlcwgBPHNjaGVkdWxlMV9pbmRleDgBDHUzMgABPHNjaGVkdWxlMl9pbmRleDgBDHUzMgAEVF0BTWVyZ2UgdHdvIHZlc3Rpbmcgc2NoZWR1bGVzIHRvZ2V0aGVyLCBjcmVhdGluZyBhIG5ldyB2ZXN0aW5nIHNjaGVkdWxlIHRoYXQgdW5sb2NrcyBvdmVyVQF0aGUgaGlnaGVzdCBwb3NzaWJsZSBzdGFydCBhbmQgZW5kIGJsb2Nrcy4gSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBhbHJlYWR5IHN0YXJ0ZWQgdGhlWQFjdXJyZW50IGJsb2NrIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2NoZWR1bGUgc3RhcnQ7IHdpdGggdGhlIGNhdmVhdCB0aGF0IGlmIG9uZSBzY2hlZHVsZV0BaXMgZmluaXNoZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIHRoZSBvdGhlciB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIG5ldyBtZXJnZWQgc2NoZWR1bGUsLHVubW9kaWZpZWQuAPhOT1RFOiBJZiBgc2NoZWR1bGUxX2luZGV4ID09IHNjaGVkdWxlMl9pbmRleGAgdGhpcyBpcyBhIG5vLW9wLkEBTk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2sgcHJpb3IgdG8gbWVyZ2luZy5hAU5PVEU6IElmIGJvdGggc2NoZWR1bGVzIGhhdmUgZW5kZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIG5vIG5ldyBzY2hlZHVsZSB3aWxsIGJlIGNyZWF0ZWRkYW5kIGJvdGggd2lsbCBiZSByZW1vdmVkLgBsTWVyZ2VkIHNjaGVkdWxlIGF0dHJpYnV0ZXM6NQEtIGBzdGFydGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLnN0YXJ0aW5nX2Jsb2NrLCBzY2hlZHVsZWQyLnN0YXJ0aW5nX2Jsb2NrLEggIGN1cnJlbnRfYmxvY2spYC4hAS0gYGVuZGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLmVuZGluZ19ibG9jaywgc2NoZWR1bGUyLmVuZGluZ19ibG9jaylgLlkBLSBgbG9ja2VkYDogYHNjaGVkdWxlMS5sb2NrZWRfYXQoY3VycmVudF9ibG9jaykgKyBzY2hlZHVsZTIubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDoLSBgc2NoZWR1bGUxX2luZGV4YDogaW5kZXggb2YgdGhlIGZpcnN0IHNjaGVkdWxlIHRvIG1lcmdlLuwtIGBzY2hlZHVsZTJfaW5kZXhgOiBpbmRleCBvZiB0aGUgc2Vjb25kIHNjaGVkdWxlIHRvIG1lcmdlLnRmb3JjZV9yZW1vdmVfdmVzdGluZ19zY2hlZHVsZQgBGHRhcmdldAABjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FAQw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkNQEBHEJhbGFuY2UAASRwZXJfYmxvY2s1AQEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrOAEsQmxvY2tOdW1iZXIAAIkBEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0EENhbGwEBFQAARQUY2xhaW0IARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJljQEBOEVjZHNhU2lnbmF0dXJlAABgiE1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246BQFBIGNhbGwgdG8gY2xhaW0gaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOpQ+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpAKRhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7gV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbWAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1pbnRfY2xhaW0QAQx3aG+VAQE8RXRoZXJldW1BZGRyZXNzAAEUdmFsdWU1AQEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZZkBAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50oQEBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZY0BAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xklQEBPEV0aGVyZXVtQWRkcmVzcwABDG5ld5UBATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbakBAVBPcHRpb248VDo6QWNjb3VudElkPgAEAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6NAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zOEVjZHNhU2lnbmF0dXJlAAAEAJEBASBbdTg7IDY1XQAAkQEAAANBAAAADACVAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zPEV0aGVyZXVtQWRkcmVzcwAABAAcASBbdTg7IDIwXQAAmQEEGE9wdGlvbgQEVAGdAQEIEE5vbmUAAAAQU29tZQQAnQEAAAEAAJ0BAAAEDDUBNQE4AKEBBBhPcHRpb24EBFQBpQEBCBBOb25lAAAAEFNvbWUEAKUBAAABAAClAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAKkBBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAArQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXd5AQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kNQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdDUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXO1AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutQEIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmG5AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAuQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAvQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2VNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOJAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WNAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbhkCATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u4AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27FAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZHUBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyecUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c4kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5xQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRziQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGW5AwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZL0DAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGW5AwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3RNAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXP8ASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcsUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAMkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQA5QEBMHY0OjpMb2NhdGlvbgAEAAhWNQQAGQIBMHY1OjpMb2NhdGlvbgAFAADJARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcs0BASRKdW5jdGlvbnMAAM0BEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADRAQEgSnVuY3Rpb24AAQAIWDIIANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAIACFgzDADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAMACFg0EADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABAAIWDUUANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAUACFg2GADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAYACFg3HADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24ABwAIWDggANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAADRAQEgSnVuY3Rpb24AANEBASBKdW5jdGlvbgAA0QEBIEp1bmN0aW9uAAgAANEBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr1QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvVAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr1QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA2QEBJE5ldHdvcmtJZAAJAADVAQQYT3B0aW9uBARUAdkBAQgQTm9uZQAAABBTb21lBADZAQAAAQAA2QEQDHhjbQh2MyBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA3QEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAOEBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAADlARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y6QEBJEp1bmN0aW9ucwAA6QEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA7QEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA/QEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAAQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQABQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQACQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQADQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAEQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAFQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADtAQAAAwEAAADxAQDxARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmv1AQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA+QEBJE5ldHdvcmtJZAAJAAD1AQQYT3B0aW9uBARUAfkBAQgQTm9uZQAAABBTb21lBAD5AQAAAQAA+QEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD9AQAAAwIAAADxAQABAgAAAwMAAADxAQAFAgAAAwQAAADxAQAJAgAAAwUAAADxAQANAgAAAwYAAADxAQARAgAAAwcAAADxAQAVAgAAAwgAAADxAQAZAhAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yHQIBJEp1bmN0aW9ucwAAHQIQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAIQIBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAMQIBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQANQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAOQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAPQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAQQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQARQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQASQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAAAhAgAAAwEAAAAlAgAlAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrKQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmspAgFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrKQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAcQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZN0BARhCb2R5SWQAARBwYXJ04QEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQALQIBJE5ldHdvcmtJZAAJAAApAgQYT3B0aW9uBARUAS0CAQgQTm9uZQAAABBTb21lBAAtAgAAAQAALQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uJE5ldHdvcmtJZAABICRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAADECAAADAgAAACUCADUCAAADAwAAACUCADkCAAADBAAAACUCAD0CAAADBQAAACUCAEECAAADBgAAACUCAEUCAAADBwAAACUCAEkCAAADCAAAACUCAE0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAUQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BADFAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEABEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAABRAgwMeGNtCHYzDFhjbQQQQ2FsbAAABABVAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAVQIAAAJZAgBZAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAF0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAF0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABdAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlfQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVypQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzXQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbK0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEALECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5yQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdMkBATRNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmW1AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRdAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc2UCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABRAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABRAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABGHRpY2tldMkBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAXQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABdAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAClAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+xAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACxAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya9kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldGUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLJAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARh0YXJnZXTJAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0ZQIBKE11bHRpQXNzZXQAARRvd25lcskBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldGUCAShNdWx0aUFzc2V0AAEYbG9ja2VyyQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lupQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABdAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQAYQIBPFZlYzxNdWx0aUFzc2V0PgAAYQIAAAJlAgBlAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRpAgEcQXNzZXRJZAABDGZ1bm0CASxGdW5naWJpbGl0eQAAaQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAMkBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABtAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAHEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABxAgE0QXNzZXRJbnN0YW5jZQABAABxAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAHEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAHUCARxbdTg7IDhdAAMAHEFycmF5MTYEAHkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAB1AgAAAwgAAAAMAHkCAAADEAAAAAwAfQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAXQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACNAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAJ0CAThNYXliZUVycm9yQ29kZQAFAACBAgQYT3B0aW9uBARUAYUCAQgQTm9uZQAAABBTb21lBACFAgAAAQAAhQIAAAQIOIkCAIkCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAjQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRAgRTAAAEAJkCARhWZWM8VD4AAJECDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1llQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWWVAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAJUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAmQIAAAKRAgCdAgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAKECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQAoQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAKECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAApQIEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAAKkCDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAAK0CDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AALECDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uyQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAAtQIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAF0CASxNdWx0aUFzc2V0cwAAABBXaWxkBAC5AgE4V2lsZE11bHRpQXNzZXQAAQAAuQIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkaQIBHEFzc2V0SWQAAQxmdW69AgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZGkCARxBc3NldElkAAEMZnVuvQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAL0CEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAwQIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAEQEBGFdlaWdodAABAADFAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAMkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AADJAgAAAs0CAM0CDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADRAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA0QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADRAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZekCASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcv0CAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPRAgEYQXNzZXRzAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbK0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAOkBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAABAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnlAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZQUDASxBc3NldEZpbHRlcgABEHdhbnTRAgEYQXNzZXRzAAEcbWF4aW1hbHUBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc9kCARRBc3NldAABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAxQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAxQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPRAgEYQXNzZXRzAAEYdGlja2V05QEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA0QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA0QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAP0CAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACBAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAJ0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8BAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAABAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbukBAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTZAgEUQXNzZXQAASB1bmxvY2tlcuUBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V02QIBFEFzc2V0AAEYdGFyZ2V05QEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTZAgEUQXNzZXQAARRvd25lcuUBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTZAgEUQXNzZXQAARhsb2NrZXLlAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXd1AQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA5QEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbv0CAUBPcHRpb248TG9jYXRpb24+AC8AANECECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQA1QIBKFZlYzxBc3NldD4AANUCAAAC2QIA2QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZN0CARxBc3NldElkAAEMZnVu4QIBLEZ1bmdpYmlsaXR5AADdAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABADlAQEgTG9jYXRpb24AAOECECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAcQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAOUCATRBc3NldEluc3RhbmNlAAEAAOUCECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAcQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAdQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAeQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAOkCDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQA0QIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAIECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQA7QIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACdAgE4TWF5YmVFcnJvckNvZGUABQAA7QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHxAgRTAAAEAPkCARhWZWM8VD4AAPECDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWX1AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZfUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA9QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD5AgAAAvECAP0CBBhPcHRpb24EBFQB5QEBCBBOb25lAAAAEFNvbWUEAOUBAAABAAABAwwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u5QEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAAUDECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQA0QIBGEFzc2V0cwAAABBXaWxkBAAJAwEkV2lsZEFzc2V0AAEAAAkDECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWTdAgEcQXNzZXRJZAABDGZ1bg0DATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlk3QIBHEFzc2V0SWQAAQxmdW4NAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAADQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAARAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEABUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAAVAwAAAhkDABkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAAdAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZTUDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllclUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnkZAgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMdAwEYQXNzZXRzAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxsrQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAHQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlXQMBLEFzc2V0RmlsdGVyAAEQd2FudB0DARhBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlGQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABEGRlc3QZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c10DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAARAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAARAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0DARhBc3NldHMAARh0aWNrZXQZAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAVQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEADkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAJQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrLQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uHQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABIHVubG9ja2VyGQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAwEUQXNzZXQAARh0YXJnZXQZAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldCUDARRBc3NldAABFG93bmVyGQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUDARRBc3NldAABGGxvY2tlchkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAZAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luVQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0JQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzaQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbnUBARBib29sAAEYYXNzZXRzcQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbREDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW55AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtEQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzfQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAAdAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEACEDAShWZWM8QXNzZXQ+AAAhAwAAAiUDACUDECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWQpAwEcQXNzZXRJZAABDGZ1bi0DASxGdW5naWJpbGl0eQAAKQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQAGQIBIExvY2F0aW9uAAAtAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAHEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAxAwE0QXNzZXRJbnN0YW5jZQABAAAxAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAHEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAHUCARxbdTg7IDhdAAMAHEFycmF5MTYEAHkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAA1Awwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0DARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAA5AwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAEUDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAnQIBOE1heWJlRXJyb3JDb2RlAAUAADkDBBhPcHRpb24EBFQBPQMBCBBOb25lAAAAEFNvbWUEAD0DAAABAAA9AwAABAg4QQMAQQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEABEBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAEUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBSQMEUwAABABRAwEYVmVjPFQ+AABJAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lTQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVNAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAE0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAUQMAAAJJAwBVAwQYT3B0aW9uBARUARkCAQgQTm9uZQAAABBTb21lBAAZAgAAAQAAWQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AABdAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAB0DARhBc3NldHMAAAAQV2lsZAQAYQMBJFdpbGRBc3NldAABAABhAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkKQMBHEFzc2V0SWQAAQxmdW5lAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZCkDARxBc3NldElkAAEMZnVuZQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAGUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAaQMEGE9wdGlvbgQEVAFtAwEIEE5vbmUAAAAQU29tZQQAbQMAAAEAAG0DECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABdAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAF0DASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAF0DASxBc3NldEZpbHRlcgACAABxAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAW0DBFMAAAQAdQMBGFZlYzxUPgAAdQMAAAJtAwB5AwQYT3B0aW9uBARUAR0CAQgQTm9uZQAAABBTb21lBAAdAgAAAQAAfQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGBAwRTAAAEAIUDARhWZWM8VD4AAIEDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9uGQIBIExvY2F0aW9uAAAAAIUDAAACgQMAiQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAF0CATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEANECASh2NDo6QXNzZXRzAAQACFY1BAAdAwEodjU6OkFzc2V0cwAFAACNAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAJEDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAoQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BACtAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAkQMMDHhjbQh2MwxYY20EEENhbGwAAAQAlQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJUDAAACmQMAmQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABdAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABdAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAXQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZX0CASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcqUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c10CASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5yQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNdAgEsTXVsdGlBc3NldHMAARBkZXN0yQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kqQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGydAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADNAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACxAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeckBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHO1AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TJAQE0TXVsdGlMb2NhdGlvbgABDHhjbVECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZltQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50XQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbHUBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlyQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRztQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0yQEBNE11bHRpTG9jYXRpb24AAQx4Y21RAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb7ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c7UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNlAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAkQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAkQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNdAgEsTXVsdGlBc3NldHMAARh0aWNrZXTJAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAF0CASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAXQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQApQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAsQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADRAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvZAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27NAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtUQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRlAgEoTXVsdGlBc3NldAABIHVubG9ja2VyyQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldGUCAShNdWx0aUFzc2V0AAEYdGFyZ2V0yQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldGUCAShNdWx0aUFzc2V0AAEUb3duZXLJAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRlAgEoTXVsdGlBc3NldAABGGxvY2tlcskBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAMkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAnQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAoQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAClAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAApQMAAAKpAwCpAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQA0QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEANECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA0QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XpAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXL9AgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz0QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ55QEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz0QIBGEFzc2V0cwABEGRlc3TlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kqQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGydAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADpAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ55QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMFAwEsQXNzZXRGaWx0ZXIAARBkZXN05QEBIExvY2F0aW9uAAEMeGNtxQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUFAwEsQXNzZXRGaWx0ZXIAARB3YW500QIBGEFzc2V0cwABHG1heGltYWx1AQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwUDASxBc3NldEZpbHRlcgABHHJlc2VydmXlAQEgTG9jYXRpb24AAQx4Y23FAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyAAEQZGVzdOUBASBMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzBQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPZAgEUQXNzZXQAATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAKEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAKEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz0QIBGEFzc2V0cwABGHRpY2tldOUBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEANECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEANECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAD9AgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAgQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACdAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAAQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27pAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbcUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V02QIBFEFzc2V0AAEgdW5sb2NrZXLlAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldNkCARRBc3NldAABGHRhcmdldOUBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V02QIBFEFzc2V0AAEUb3duZXLlAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V02QIBFEFzc2V0AAEYbG9ja2Vy5QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3dQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOUBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTBAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW79AgFAT3B0aW9uPExvY2F0aW9uPgAvAACtAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEALEDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACxAwAAArUDALUDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAAdAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAHQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAAdAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZTUDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllclUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMdAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnkZAgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMdAwEYQXNzZXRzAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSpAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxsnQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAHQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeRkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzXQMBLEFzc2V0RmlsdGVyAAEQZGVzdBkCASBMb2NhdGlvbgABDHhjbREDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlXQMBLEFzc2V0RmlsdGVyAAEQd2FudB0DARhBc3NldHMAARxtYXhpbWFsdQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNdAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlGQIBIExvY2F0aW9uAAEMeGNtEQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c10DASxBc3NldEZpbHRlcgABEGRlc3QZAgEgTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c10DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzJQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACtAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACtAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cx0DARhBc3NldHMAARh0aWNrZXQZAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAAdAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAAdAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAVQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEADkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAnQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb1kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAFkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAJQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrLQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uHQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20RAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldCUDARRBc3NldAABIHVubG9ja2VyGQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQlAwEUQXNzZXQAARh0YXJnZXQZAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldCUDARRBc3NldAABFG93bmVyGQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldCUDARRBc3NldAABGGxvY2tlchkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd3UBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAZAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0wQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luVQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0JQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzaQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbnUBARBib29sAAEYYXNzZXRzcQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbREDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW55AwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtrQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzfQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAC5AxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAMUBAURWZXJzaW9uZWRMb2NhdGlvbgADAAC9AwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAGkCASx2Mzo6QXNzZXRJZAADAAhWNAQA3QIBLHY0OjpBc3NldElkAAQACFY1BAApAwEsdjU6OkFzc2V0SWQABQAAwQMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7FAwxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQQQ2FsbAgEVAAESQABBFByZXBvcnRfYnJpZGdlX3N0YXR1cwgBJGJyaWRnZV9pZDwBEEgyNTYAATBpc19jb25nZXN0ZWR1AQEQYm9vbAAABKhOb3RpZmljYXRpb24gYWJvdXQgY29uZ2VzdGVkIGJyaWRnZSBxdWV1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2luzQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuzQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAANEDDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0EENhbGwEBFQAAQxIc2V0X29wZXJhdGluZ19tb2RlBAEQbW9kZdUDATRPcGVyYXRpbmdNb2RlAAAE6FNldCB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIGV4cG9ydGluZyBtZXNzYWdlcyB0byBFdGhlcmV1bS44cmVnaXN0ZXJfdG9rZW4MASBhc3NldF9pZMUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEgbWV0YWRhdGHZAwE0QXNzZXRNZXRhZGF0YQABJGZlZV9hc3NldCUDARRBc3NldAABHEkBSW5pdGlhdGVzIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgUG9sa2Fkb3QtbmF0aXZlIHRva2VuIGFzIGEgd3JhcHBlZCBFUkMyMCB0b2tlbiBvbiRFdGhlcmV1bS6MLSBgYXNzZXRfaWRgOiBMb2NhdGlvbiBvZiB0aGUgYXNzZXRBAS0gYG1ldGFkYXRhYDogTWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgaW5zdGFudGlhdGVkIEVSQzIwIGNvbnRyYWN0IG9uIEV0aGVyZXVtAF0BQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQsIGhvd2V2ZXIgYGFzc2V0X2lkYCBtdXN0IGJlIGEgbG9jYXRpb24gbmVzdGVkIHdpdGhpbiB0aGUgb3JpZ2luRGNvbnNlbnN1cyBzeXN0ZW0uHGFkZF90aXAIAShtZXNzYWdlX2lk4QMBJE1lc3NhZ2VJZAABFGFzc2V0JQMBFEFzc2V0AAIIRQFBZGQgYW4gYWRkaXRpb25hbCByZWxheWVyIHRpcCBmb3IgYSBjb21taXR0ZWQgbWVzc2FnZSBpZGVudGlmaWVkIGJ5IGBtZXNzYWdlX2lkYC6gVGhlIHRpcCBhc3NldCB3aWxsIGJlIHN3YXBwZWQgZm9yIGV0aGVyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7VAww8c25vd2JyaWRnZV9jb3JlOG9wZXJhdGluZ19tb2RlSEJhc2ljT3BlcmF0aW5nTW9kZQABCBhOb3JtYWwAAAAYSGFsdGVkAAEAANkDCDxzbm93YnJpZGdlX2NvcmU0QXNzZXRNZXRhZGF0YQAADAEQbmFtZd0DAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AARhzeW1ib2zdAwHAQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8TUVUQURBVEFfRklFTERfTUFYX0xFTj4+AAEgZGVjaW1hbHMMAQh1OAAA3QMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADhAww8c25vd2JyaWRnZV9jb3JlGHJld2FyZCRNZXNzYWdlSWQAAQgcSW5ib3VuZAQAKAEMdTY0AAAAIE91dGJvdW5kBAAoAQx1NjQAAQAA5QMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXjtAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQRAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pAwAAAiAA7QMAAAUEAPEDCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lME9yaWdpbkNhbGxlcgABIBhzeXN0ZW0EAPUDAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQA+QMBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAD9AwFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAgU2NhcmNpdHkEAAEEAZhpbmRpdl9wYWxsZXRfc2NhcmNpdHk6Ok9yaWdpbjxSdW50aW1lPgA6ABxPcmlnaW5zBAANBAF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4APwAQUGdhcwQAEQQBZGluZGl2X3BhbGxldF9wZ2FzOjpPcmlnaW4AYwAYUmV2aXZlBAAlBAF4cGFsbGV0X3Jldml2ZTo6T3JpZ2luPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAKQQBiGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpPcmlnaW4AmAAA9QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAPkDDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAAZAgEgTG9jYXRpb24AAAAgUmVzcG9uc2UEABkCASBMb2NhdGlvbgABAAD9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAAEEDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0GE9yaWdpbgQEVAEFBAEEDE5mdAgBFG93bmVyBAEwVDo6QWNjb3VudElkAAEMbmZ0CQQBDE5mdAAAAAAFBAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxSdW50aW1lAAAAAAkEDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0DE5mdAAAHAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAASRtaW50ZWRfYXQoAQx1NjQAAShsYXN0X21vdmVkKAEMdTY0AAEsc3RhdGVfbm9uY2UoAQx1NjQAARRtb3Zlc+0DAQx1MTYAAA0EFHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lKGdvdmVybmFuY2Ucb3JpZ2luc1RwYWxsZXRfY3VzdG9tX29yaWdpbnMYT3JpZ2luAAE8MFN0YWtpbmdBZG1pbgAAACRUcmVhc3VyZXIAAQA8RmVsbG93c2hpcEFkbWluAAIAMEdlbmVyYWxBZG1pbgADADBBdWN0aW9uQWRtaW4ABAAoTGVhc2VBZG1pbgAFAExSZWZlcmVuZHVtQ2FuY2VsbGVyAAYAQFJlZmVyZW5kdW1LaWxsZXIABwAsU21hbGxUaXBwZXIACAAkQmlnVGlwcGVyAAkAMFNtYWxsU3BlbmRlcgAKADRNZWRpdW1TcGVuZGVyAAsAKEJpZ1NwZW5kZXIADABEV2hpdGVsaXN0ZWRDYWxsZXIADQA0V2lzaEZvckNoYW5nZQAOAAARBAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABCChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRheRUEAQxEYXkAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAAAREJhdGNoQ2xhaW1BbGlhc2VzDAEcYWxpYXNlcx0EATBCYXRjaEFsaWFzZXMAAQxkYXkVBAEMRGF5AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABAAAVBAw0aW5kaXZfc3VwcG9ydBR1dGlsczBCaWdFbmRpYW5VMzIAAwQAAAAMBBkBQSB1MzIgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLhkEDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb244UGdhc0NvbGxlY3Rpb24AAQgYUGVvcGxlAAAAKExpdGVQZW9wbGUAAQAAHQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAIQQBGFZlYzxUPgAAIQQAAAIIACUEDDRwYWxsZXRfcmV2aXZlGHBhbGxldBhPcmlnaW4EBFQBBQQBBDhFdGhUcmFuc2FjdGlvbgQABAEwVDo6QWNjb3VudElkAAAAACkEDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQYT3JpZ2luAAEESFBlcnNvblJlZ2lzdHJhdGlvbgQACAEUQWxpYXMAAAAALQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50MQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXN5AQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQxBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludDUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc3kBAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4xBAQYT3B0aW9uBARUATUEAQgQTm9uZQAAABBTb21lBAA1BAAAAQAANQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAOQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGU9BAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleO0DAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAEUaW5kZXjtAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZT0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuPQQEGE9wdGlvbgQEVAFBBAEIEE5vbmUAAAAQU29tZQQAQQQAAAEAAEEECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAAEUEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemV1AQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlAABQ6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeVEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gcmVxdWlyZXMgYSBzcGVjaWZpYyBpZCwgdGhpcyBtdXN0JGVxdWFsIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAF0+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ABQFVbmxpa2UgYGNyZWF0ZWAsIHRoZSBgaWRgIGRvZXMgbm90IGhhdmUgdG8gYmUgdGhlIG9uZSByZXF1aXJlZCBieUkBW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXTogYSBwcml2aWxlZ2VkIG9yaWdpbiBtYXkgcGljayBhbnkgYGlkYCwgd2hpY2ggaXMgdGhlblBtYXJrZWQgYXMgYWxsb2NhdGVkLgAkIyBXYXJuaW5nAD0BRm9yY2luZyBhbiBhcmJpdHJhcnkgYGlkYCBpcyBkYW5nZXJvdXM6IHRoZSBwYWxsZXQgb25seSBjaGVja3MgdGhhdCBgaWRgIGlzIG5vdF0BKmN1cnJlbnRseSogaW4gdXNlLCBub3QgdGhhdCBpdCB3YXMgbmV2ZXIgdXNlZCBiZWZvcmUuIFJldXNpbmcgYW4gaWQgY2FuIGNvcnJ1cHQgc3RhdGUsUQFtb3N0IHNldmVyZWx5IGZvciBicmlkZ2VkIGFzc2V0cywgd2hlcmUgYSBjb2xsaXNpb24gYnJlYWtzIHRoZSBsb2NhbC9yZW1vdGUgbWFwcGluZy4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeUkBYW4gZXhpc3RpbmcgYXNzZXQsIGFuZCBtdXN0IG5ldmVyIGhhdmUgYmVlbiBpbiB1c2UgcHJldmlvdXNseSAoc2VlIHdhcm5pbmcgYWJvdmUpLlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VxAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJudQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZTUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNNBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAFEEARhWZWM8VD4AAFEEAAACEABVBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5ndQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzWQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zYQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlXQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmd1AQEQYm9vbAABJGlzX2Zyb3plbnUBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFlBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVudQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlMQEBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2U1AQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5ZBAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABdBAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAGEEAAACOABlBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGkEDCxwYWxsZXRfbmZ0cxhwYWxsZXQQQ2FsbAgEVAAESQABnBhjcmVhdGUIARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnbQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AADwJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uACUBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgDEYENvbGxlY3Rpb25EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczpFAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQgBFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhjb25maWdtBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgABPBkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgCsVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgA5AS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY29sbGVjdGlvbiBvZiBpdGVtcy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlclkBICBwZXJtaXNzaW9ucyBvdmVyIHRoaXMgaXRlbSwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeYICBgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc4kEAThEZXN0cm95V2l0bmVzcwACRJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A3E5PVEU6IFRoZSBjb2xsZWN0aW9uIG11c3QgaGF2ZSAwIGl0ZW1zIHRvIGJlIGRlc3Ryb3llZC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgB0V2VpZ2h0OiBgTyhtICsgYyArIGEpYCB3aGVyZTp4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgcC0gYGMgPSB3aXRuZXNzLml0ZW1fY29uZmlnc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwd2l0bmVzc19kYXRhjQQB2E9wdGlvbjxNaW50V2l0bmVzczxUOjpJdGVtSWQsIERlcG9zaXRCYWxhbmNlT2Y8VCwgST4+PgADQKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGNvbXBseSB3aXRoIHRoZSBgbWludF9zZXR0aW5nc2AgcnVsZXMuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuRQEtIGB3aXRuZXNzX2RhdGFgOiBXaGVuIHRoZSBtaW50IHR5cGUgaXMgYEhvbGRlck9mKGNvbGxlY3Rpb25faWQpYCwgdGhlbiB0aGUgb3duZWRZASAgaXRlbV9pZCBmcm9tIHRoYXQgY29sbGVjdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHdpdG5lc3MgZGF0YSBvYmplY3QuIElmYQEgIHRoZSBtaW50IHByaWNlIGlzIHNldCwgdGhlbiBpdCBzaG91bGQgYmUgYWRkaXRpb25hbGx5IGNvbmZpcm1lZCBpbiB0aGUgYHdpdG5lc3NfZGF0YWAuAFEBTm90ZTogdGhlIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBgb3JpZ2luYCBhbmQgbm90IHRoZSBgb3duZXJgIG9mIHRoZSBgaXRlbWAuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYChmb3JjZV9taW50EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARxtaW50X3RvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxpdGVtX2NvbmZpZ5UEAShJdGVtQ29uZmlnAAQ0BQFNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24gZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWxJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuoC0gYGl0ZW1gOiBBbiBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS7gLSBgbWludF90b2A6IEFjY291bnQgaW50byB3aGljaCB0aGUgaXRlbSB3aWxsIGJlIG1pbnRlZC6oLSBgaXRlbV9jb25maWdgOiBBIGNvbmZpZyBvZiB0aGUgbmV3IGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABSxYRGVzdHJveSBhIHNpbmdsZSBpdGVtLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdGxiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQugC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSBidXJuZWQuADxFbWl0cyBgQnVybmVkYC4AOFdlaWdodDogYE8oMSlgIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABjjATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7NQEtIHRoZSBhcHByb3ZlZCBkZWxlZ2F0ZSBmb3IgdGhlIGBpdGVtYCAoaW4gdGhpcyBjYXNlLCB0aGUgYXBwcm92YWwgaXMgcmVzZXQpLgAoQXJndW1lbnRzOvQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQulC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7cLSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIHJlY2VpdmUgb3duZXJzaGlwIG9mIHRoZSBpdGVtLgBQRW1pdHMgYFRyYW5zZmVycmVkYC4AOFdlaWdodDogYE8oMSlgJHJlZGVwb3NpdAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRpdGVtc2EEAThWZWM8VDo6SXRlbUlkPgAHRJxSZS1ldmFsdWF0ZSB0aGUgZGVwb3NpdHMgb24gc29tZSBpdGVtcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD4LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtcyB0byBiZSByZWV2YWx1YXRlZC4pAS0gYGl0ZW1zYDogVGhlIGl0ZW1zIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGRlcG9zaXRzIHdpbGwgYmUgcmVldmFsdWF0ZWQuAC0BTk9URTogVGhpcyBleGlzdHMgYXMgYSBiZXN0LWVmZm9ydCBmdW5jdGlvbi4gQW55IGl0ZW1zIHdoaWNoIGFyZSB1bmtub3duIG9yOQFpbiB0aGUgY2FzZSB0aGF0IHRoZSBvd25lciBhY2NvdW50IGRvZXMgbm90IGhhdmUgcmVzZXJ2YWJsZSBmdW5kcyB0byBwYXkgZm9yIGFNAWRlcG9zaXQgaW5jcmVhc2UgYXJlIGlnbm9yZWQuIEdlbmVyYWxseSB0aGUgb3duZXIgaXNuJ3QgZ29pbmcgdG8gY2FsbCB0aGlzIG9uIGl0ZW1zVQF3aG9zZSBleGlzdGluZyBkZXBvc2l0IGlzIGxlc3MgdGhhbiB0aGUgcmVmcmVzaGVkIGRlcG9zaXQgYXMgaXQgd291bGQgb25seSBjb3N0IHRoZW0seHNvIGl0J3Mgb2YgbGl0dGxlIGNvbnNlcXVlbmNlLgBZAUl0IHdpbGwgc3RpbGwgcmV0dXJuIGFuIGVycm9yIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbGxlY3Rpb24gaXMgdW5rbm93biBvciB0aGUgc2lnbmVycGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2FsbCBpdC4AYFdlaWdodDogYE8oaXRlbXMubGVuKCkpYEhsb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAIKMhEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLrgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIG5vbi10cmFuc2ZlcmFibGUuAGxFbWl0cyBgSXRlbVRyYW5zZmVyTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgUHVubG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACSioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuqC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgdHJhbnNmZXJhYmxlLgB0RW1pdHMgYEl0ZW1UcmFuc2ZlclVubG9ja2VkYC4AOFdlaWdodDogYE8oMSlgPGxvY2tfY29sbGVjdGlvbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATRsb2NrX3NldHRpbmdzcQQBSENvbGxlY3Rpb25TZXR0aW5ncwAKMNhEaXNhbGxvd3Mgc3BlY2lmaWVkIHNldHRpbmdzIGZvciB0aGUgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIGxvY2tlZC60LSBgbG9ja19zZXR0aW5nc2A6IFRoZSBzZXR0aW5ncyB0byBiZSBsb2NrZWQuAB0BTm90ZTogaXQncyBwb3NzaWJsZSB0byBvbmx5IGxvY2soc2V0KSB0aGUgc2V0dGluZywgYnV0IG5vdCB0byB1bnNldCBpdC4AZEVtaXRzIGBDb2xsZWN0aW9uTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3Vlcl0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEUYWRtaW5dBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABHGZyZWV6ZXJdBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAMQNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBTm90ZTogYnkgc2V0dGluZyB0aGUgcm9sZSB0byBgTm9uZWAgb25seSB0aGUgYEZvcmNlT3JpZ2luYCB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGl0ZGFmdGVyIHRvIGBTb21lKGFjY291bnQpYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgWGZvcmNlX2NvbGxlY3Rpb25fb3duZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANKIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24usC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgXGZvcmNlX2NvbGxlY3Rpb25fY29uZmlnCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGNvbmZpZ20EAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AA4oiENoYW5nZSB0aGUgY29uZmlnIG9mIGEgY29sbGVjdGlvbi4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAMQtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24uuC0gYGNvbmZpZ2A6IFRoZSBuZXcgY29uZmlnIG9mIHRoaXMgY29sbGVjdGlvbi4AgEVtaXRzIGBDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE4bWF5YmVfZGVhZGxpbmXgAXBPcHRpb248QmxvY2tOdW1iZXJGb3I8VCwgST4+AA84FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLuQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS5JAS0gYG1heWJlX2RlYWRsaW5lYDogT3B0aW9uYWwgZGVhZGxpbmUgZm9yIHRoZSBhcHByb3ZhbC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGXYCW51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggdGhlIGFwcHJvdmFsIHdpbGwgZXhwaXJlAJBFbWl0cyBgVHJhbnNmZXJBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQOORDYW5jZWwgb25lIG9mIHRoZSB0cmFuc2ZlciBhcHByb3ZhbHMgZm9yIGEgc3BlY2lmaWMgaXRlbS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW475C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOj0BLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLiUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFsIHdpbGwgYmUgY2FuY2VsbGVkLgEBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IGlzIGdvaW5nIHRvIGxvb3NlIHRoZWlyIGFwcHJvdmFsLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBwY2xlYXJfYWxsX3RyYW5zZmVyX2FwcHJvdmFscwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABE0sENhbmNlbCBhbGwgdGhlIGFwcHJvdmFscyBvZiBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo5AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLiEBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHdob3NlIGFwcHJvdmFscyB3aWxsIGJlIGNsZWFyZWQuAKRFbWl0cyBgQWxsQXBwcm92YWxzQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBQbG9ja19pdGVtX3Byb3BlcnRpZXMQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGF1AQEQYm9vbAABPGxvY2tfYXR0cmlidXRlc3UBARBib29sABJE6ERpc2FsbG93cyBjaGFuZ2luZyB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBvZiB0aGUgaXRlbS4AQQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pblBvZiB0aGUgYGNvbGxlY3Rpb25gLgC0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIGlmIHRoZSBgaXRlbWAufC0gYGl0ZW1gOiBBbiBpdGVtIHRvIGJlIGxvY2tlZC4NAS0gYGxvY2tfbWV0YWRhdGFgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgbWV0YWRhdGEgc2hvdWxkIGJlIGxvY2tlZC5hAS0gYGxvY2tfYXR0cmlidXRlc2A6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2VMICBzaG91bGQgYmUgbG9ja2VkLgBdAU5vdGU6IGBsb2NrX2F0dHJpYnV0ZXNgIGFmZmVjdHMgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBvbmx5LkUBV2hlbiB0aGUgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyBhcmUgbG9ja2VkLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0aGUgdW5sb2NrIHRoZW0uAHRFbWl0cyBgSXRlbVByb3BlcnRpZXNMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZVkBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgATWKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AAQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgY29uZm9ybSB0byB0aGUgbmFtZXNwYWNlIHJ1bGVzZXQ6PQEtIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYGNvbGxlY3Rpb25gIEFkbWluIG9ubHk7WQEtIGBJdGVtT3duZXJgIG5hbWVzcGFjZSBjb3VsZCBiZSBtb2RpZmllZCBieSB0aGUgYG1heWJlX2l0ZW1gIG93bmVyIG9ubHkuIGBtYXliZV9pdGVtYHQgIHNob3VsZCBiZSBzZXQgaW4gdGhhdCBjYXNlO1UBLSBgQWNjb3VudChBY2NvdW50SWQpYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgb25seSB3aGVuIHRoZSBgb3JpZ2luYCB3YXMgZ2l2ZW4gYVggIHBlcm1pc3Npb24gdG8gZG8gc287APBUaGUgZnVuZHMgb2YgYG9yaWdpbmAgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTotAWBBdHRyaWJ1dGVEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogKGtleS5sZW4gKyB2YWx1ZS5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYExmb3JjZV9zZXRfYXR0cmlidXRlGAEYc2V0X2FzqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZkEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXgBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlWQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFTywQ2xlYXIgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUoYXR0cmlidXRlLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci4NAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxhcHByb3ZlX2l0ZW1fYXR0cmlidXRlcwwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcd2l0bmVzc50EAXxDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzABcoEQFDYW5jZWwgdGhlIHByZXZpb3VzbHkgcHJvdmlkZWQgYXBwcm92YWwgdG8gY2hhbmdlIGl0ZW0ncyBhdHRyaWJ1dGVzLhEBQWxsIHRoZSBwcmV2aW91c2x5IHNldCBhdHRyaWJ1dGVzIGJ5IHRoZSBgZGVsZWdhdGVgIHdpbGwgYmUgcmVtb3ZlZC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgD0LSBgY29sbGVjdGlvbmA6IENvbGxlY3Rpb24gdGhhdCB0aGUgaXRlbSBpcyBjb250YWluZWQgd2l0aGluLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLuAtIGBkZWxlZ2F0ZWA6IFRoZSBwcmV2aW91c2x5IGFwcHJvdmVkIGFjY291bnQgdG8gcmVtb3ZlLgDERW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkYCBvbiBzdWNjZXNzLjBzZXRfbWV0YWRhdGEMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABhAdFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LuwtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0Lk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AYEVtaXRzIGBJdGVtTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAZNHxDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIu9C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AcEVtaXRzIGBJdGVtTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFZAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABo8iFNldCB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAFkBSWYgdGhlIG9yaWdpbiBpcyBgU2lnbmVkYCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgARAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byB1cGRhdGUuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAdJOBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A7C0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBjaGFuZ2UuEQEtIGBtYXhfc3VwcGx5YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgDURW1pdHMgYENvbGxlY3Rpb25NYXhTdXBwbHlTZXRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC5QdXBkYXRlX21pbnRfc2V0dGluZ3MIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bWludF9zZXR0aW5nc3kEARUBTWludFNldHRpbmdzPEJhbGFuY2VPZjxULCBJPiwgQmxvY2tOdW1iZXJGb3I8VCwgST4sIFQ6OgpDb2xsZWN0aW9uSWQ+AB4kVFVwZGF0ZSBtaW50IHNldHRpbmdzLgBNAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgSXNzdWVyUG9mIHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLqQtIGBtaW50X3NldHRpbmdzYDogVGhlIG5ldyBtaW50IHNldHRpbmdzLgDwRW1pdHMgYENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuJHNldF9wcmljZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2UxAQFcT3B0aW9uPEl0ZW1QcmljZTxULCBJPj4AAUR3aGl0ZWxpc3RlZF9idXllcl0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AB8slFNldCAob3IgcmVzZXQpIHRoZSBwcmljZSBmb3IgYW4gaXRlbS4A6E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6gLSBgaXRlbWA6IFRoZSBpdGVtIHRvIHNldCB0aGUgcHJpY2UgZm9yLg0BLSBgcHJpY2VgOiBUaGUgcHJpY2UgZm9yIHRoZSBpdGVtLiBQYXNzIGBOb25lYCwgdG8gcmVzZXQgdGhlIHByaWNlLvQtIGBidXllcmA6IFJlc3RyaWN0cyB0aGUgYnV5IG9wZXJhdGlvbiB0byBhIHNwZWNpZmljIGFjY291bnQuAOxFbWl0cyBgSXRlbVByaWNlU2V0YCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBub3QgYE5vbmVgLuxFbWl0cyBgSXRlbVByaWNlUmVtb3ZlZGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgYE5vbmVgLiBidXlfaXRlbQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkYmlkX3ByaWNlNQEBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBzoQQBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEsbWF5YmVfcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGR1cmF0aW9uOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIkBRAVJlZ2lzdGVyIGEgbmV3IGF0b21pYyBzd2FwLCBkZWNsYXJpbmcgYW4gaW50ZW50aW9uIHRvIHNlbmQgYW4gYGl0ZW1gIGluIGV4Y2hhbmdlIGZvcvxgZGVzaXJlZF9pdGVtYCBmcm9tIG9yaWdpbiB0byB0YXJnZXQgb24gdGhlIGN1cnJlbnQgYmxvY2tjaGFpbi5NAVRoZSB0YXJnZXQgY2FuIGV4ZWN1dGUgdGhlIHN3YXAgZHVyaW5nIHRoZSBzcGVjaWZpZWQgYGR1cmF0aW9uYCBvZiBibG9ja3MgKGlmIHNldCku8EFkZGl0aW9uYWxseSwgdGhlIHByaWNlIGNvdWxkIGJlIHNldCBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLuwtIGBkZXNpcmVkX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBpdGVtLvQtIGBkZXNpcmVkX2l0ZW1gOiBUaGUgZGVzaXJlZCBpdGVtIGFuIG93bmVyIHdhbnRzIHRvIHJlY2VpdmUuYQEtIGBtYXliZV9wcmljZWA6IFRoZSBwcmljZSBhbiBvd25lciBpcyB3aWxsaW5nIHRvIHBheSBvciByZWNlaXZlIGZvciB0aGUgZGVzaXJlZCBgaXRlbWAuSQEtIGBkdXJhdGlvbmA6IEEgZGVhZGxpbmUgZm9yIHRoZSBzd2FwLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZSBudW1iZXIgb2YgYmxvY2tziAlhZnRlciB3aGljaCB0aGUgc3dhcCB3aWxsIGV4cGlyZS4AfEVtaXRzIGBTd2FwQ3JlYXRlZGAgb24gc3VjY2Vzcy4sY2FuY2VsX3N3YXAIAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAIyRYQ2FuY2VsIGFuIGF0b21pYyBzd2FwLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLhUBT3JpZ2luIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYCBpZiB0aGUgZGVhZGxpbmUgaGFzbid0IGV4cGlyZWQuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uqC0gYGl0ZW1gOiBUaGUgaXRlbSBhbiBvd25lciB3YW50cyB0byBnaXZlLgCERW1pdHMgYFN3YXBDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuKGNsYWltX3N3YXAUATxzZW5kX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW5kX2l0ZW04ASRUOjpJdGVtSWQAAUhyZWNlaXZlX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATByZWNlaXZlX2l0ZW04ASRUOjpJdGVtSWQAATR3aXRuZXNzX3ByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AJDBUQ2xhaW0gYW4gYXRvbWljIHN3YXAuOQFUaGlzIG1ldGhvZCBleGVjdXRlcyBhIHBlbmRpbmcgc3dhcCwgdGhhdCB3YXMgY3JlYXRlZCBieSBhIGNvdW50ZXJwYXJ0IGJlZm9yZS4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgDsLSBgc2VuZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgc2VudC6MLSBgc2VuZF9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgc2VudC4JAS0gYHJlY2VpdmVfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHJlY2VpdmVkLqgtIGByZWNlaXZlX2l0ZW1gOiBUaGUgaXRlbSB0byBiZSByZWNlaXZlZC7kLSBgd2l0bmVzc19wcmljZWA6IEEgcHJpY2UgdGhhdCB3YXMgcHJldmlvdXNseSBhZ3JlZWQgb24uAHxFbWl0cyBgU3dhcENsYWltZWRgIG9uIHN1Y2Nlc3MuPG1pbnRfcHJlX3NpZ25lZAwBJG1pbnRfZGF0YbkEAWhCb3g8UHJlU2lnbmVkTWludE9mPFQsIEk+PgABJHNpZ25hdHVyZb0EAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAlNMhNaW50IGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBdAS0gYG1pbnRfZGF0YWA6IFRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsIHRoYXQgY29uc2lzdHMgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpdGVtLFEBICBpdHMgbWV0YWRhdGEsIGF0dHJpYnV0ZXMsIHdobyBjYW4gbWludCBpdCAoYE5vbmVgIGZvciBhbnlvbmUpIGFuZCB1bnRpbCB3aGF0IGJsb2NrJCAgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LjkBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBJc3N1ZXIgb2YgdGhlIGNvbGxlY3Rpb24uAGhFbWl0cyBgSXNzdWVkYCBvbiBzdWNjZXNzLtRFbWl0cyBgQXR0cmlidXRlU2V0YCBpZiB0aGUgYXR0cmlidXRlcyB3ZXJlIHByb3ZpZGVkLthFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YCBpZiB0aGUgbWV0YWRhdGEgd2FzIG5vdCBlbXB0eS5kc2V0X2F0dHJpYnV0ZXNfcHJlX3NpZ25lZAwBEGRhdGHFBAFsUHJlU2lnbmVkQXR0cmlidXRlc09mPFQsIEk+AAEkc2lnbmF0dXJlvQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAEYc2lnbmVyBAEwVDo6QWNjb3VudElkACY0AQFTZXQgYXR0cmlidXRlcyBmb3IgYW4gaXRlbSBieSBwcm92aWRpbmcgdGhlIHByZS1zaWduZWQgYXBwcm92YWwuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBkYXRhLml0ZW1gLgBJAS0gYGRhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSzMICBhdHRyaWJ1dGVzIHRvIHVwZGF0ZSBhbmQgdW50aWwgd2hhdCBibG9jayBudW1iZXIuyC0gYHNpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgdGhlIGBkYXRhYCBvYmplY3QuUQEtIGBzaWduZXJgOiBUaGUgYGRhdGFgIG9iamVjdCdzIHNpZ25lci4gU2hvdWxkIGJlIGFuIEFkbWluIG9mIHRoZSBjb2xsZWN0aW9uIGZvciB0aGV4ICBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UuAMRFbWl0cyBgQXR0cmlidXRlU2V0YCBmb3IgZWFjaCBwcm92aWRlZCBhdHRyaWJ1dGUuGQFFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBpZiB0aGUgYXBwcm92YWwgd2Fzbid0IHNldCBiZWZvcmUuqEVtaXRzIGBQcmVTaWduZWRBdHRyaWJ1dGVzU2V0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tBAwscGFsbGV0X25mdHMUdHlwZXNAQ29sbGVjdGlvbkNvbmZpZwwUUHJpY2UBNQEsQmxvY2tOdW1iZXIBODBDb2xsZWN0aW9uSWQBOAAMASBzZXR0aW5nc3EEAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx54AEsT3B0aW9uPHUzMj4AATRtaW50X3NldHRpbmdzeQQBuE1pbnRTZXR0aW5nczxQcmljZSwgQmxvY2tOdW1iZXIsIENvbGxlY3Rpb25JZD4AAHEEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAF1BAAEACgBRENvbGxlY3Rpb25TZXR0aW5nAAB1BAwscGFsbGV0X25mdHMUdHlwZXNEQ29sbGVjdGlvblNldHRpbmcAARREVHJhbnNmZXJhYmxlSXRlbXMAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABABEVW5sb2NrZWRNYXhTdXBwbHkACAA8RGVwb3NpdFJlcXVpcmVkABAAAHkEDCxwYWxsZXRfbmZ0cxR0eXBlczBNaW50U2V0dGluZ3MMFFByaWNlATUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgAFAEkbWludF90eXBlfQQBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZTEBATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2vgAUxPcHRpb248QmxvY2tOdW1iZXI+AAEkZW5kX2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABVGRlZmF1bHRfaXRlbV9zZXR0aW5nc4EEATBJdGVtU2V0dGluZ3MAAH0EDCxwYWxsZXRfbmZ0cxR0eXBlcyBNaW50VHlwZQQwQ29sbGVjdGlvbklkATgBDBhJc3N1ZXIAAAAYUHVibGljAAEAIEhvbGRlck9mBAA4ATBDb2xsZWN0aW9uSWQAAgAAgQQMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAYUEAAQAKAEsSXRlbVNldHRpbmcAAIUEDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtU2V0dGluZwABDDBUcmFuc2ZlcmFibGUAAQBAVW5sb2NrZWRNZXRhZGF0YQACAEhVbmxvY2tlZEF0dHJpYnV0ZXMABAAAiQQMLHBhbGxldF9uZnRzFHR5cGVzOERlc3Ryb3lXaXRuZXNzAAAMAThpdGVtX21ldGFkYXRhc2ABDHUzMgABMGl0ZW1fY29uZmlnc2ABDHUzMgABKGF0dHJpYnV0ZXNgAQx1MzIAAI0EBBhPcHRpb24EBFQBkQQBCBBOb25lAAAAEFNvbWUEAJEEAAABAACRBAwscGFsbGV0X25mdHMUdHlwZXMsTWludFdpdG5lc3MIGEl0ZW1JZAE4HEJhbGFuY2UBNQEACAEob3duZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEobWludF9wcmljZTEBATxPcHRpb248QmFsYW5jZT4AAJUEDCxwYWxsZXRfbmZ0cxR0eXBlcyhJdGVtQ29uZmlnAAAEASBzZXR0aW5nc4EEATBJdGVtU2V0dGluZ3MAAJkEDCxwYWxsZXRfbmZ0cxR0eXBlc0hBdHRyaWJ1dGVOYW1lc3BhY2UEJEFjY291bnRJZAEEARAYUGFsbGV0AAAAPENvbGxlY3Rpb25Pd25lcgABACRJdGVtT3duZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAAJ0EDCxwYWxsZXRfbmZ0cxR0eXBlc3xDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzAAAEAUhhY2NvdW50X2F0dHJpYnV0ZXM4AQx1MzIAAKEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQQEUwAABACpBAEYVmVjPFQ+AAClBAwscGFsbGV0X25mdHMUdHlwZXMcSXRlbVRpcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQYQW1vdW50ATUBABABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEgcmVjZWl2ZXIEASRBY2NvdW50SWQAARhhbW91bnQ1AQEYQW1vdW50AACpBAAAAqUEAK0EBBhPcHRpb24EBFQBsQQBCBBOb25lAAAAEFNvbWUEALEEAAABAACxBAwscGFsbGV0X25mdHMUdHlwZXNIUHJpY2VXaXRoRGlyZWN0aW9uBBhBbW91bnQBNQEACAEYYW1vdW50NQEBGEFtb3VudAABJGRpcmVjdGlvbrUEAThQcmljZURpcmVjdGlvbgAAtQQMLHBhbGxldF9uZnRzFHR5cGVzOFByaWNlRGlyZWN0aW9uAAEIEFNlbmQAAAAcUmVjZWl2ZQABAAC5BAwscGFsbGV0X25mdHMUdHlwZXM0UHJlU2lnbmVkTWludBQwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOBxCYWxhbmNlATUBABwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEYSXRlbUlkAAEoYXR0cmlidXRlcywBXFZlYzwoVmVjPHU4PiwgVmVjPHU4Pik+AAEgbWV0YWRhdGEYARxWZWM8dTg+AAEwb25seV9hY2NvdW50qQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQABKG1pbnRfcHJpY2UxAQE8T3B0aW9uPEJhbGFuY2U+AAC9BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BADBBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAMEEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAJEBAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAkQEBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAwQQAAANAAAAADADFBAwscGFsbGV0X25mdHMUdHlwZXNMUHJlU2lnbmVkQXR0cmlidXRlcxAwQ29sbGVjdGlvbklkATgYSXRlbUlkATgkQWNjb3VudElkAQQgRGVhZGxpbmUBOAAUAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZZkEAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAMkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAAUOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlRAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIHJlcXVpcmVzIGEgc3BlY2lmaWMgaWQsIHRoaXMgbXVzdCRlcXVhbCBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAXT4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgAFAVVubGlrZSBgY3JlYXRlYCwgdGhlIGBpZGAgZG9lcyBub3QgaGF2ZSB0byBiZSB0aGUgb25lIHJlcXVpcmVkIGJ5SQFbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdOiBhIHByaXZpbGVnZWQgb3JpZ2luIG1heSBwaWNrIGFueSBgaWRgLCB3aGljaCBpcyB0aGVuUG1hcmtlZCBhcyBhbGxvY2F0ZWQuACQjIFdhcm5pbmcAPQFGb3JjaW5nIGFuIGFyYml0cmFyeSBgaWRgIGlzIGRhbmdlcm91czogdGhlIHBhbGxldCBvbmx5IGNoZWNrcyB0aGF0IGBpZGAgaXMgbm90XQEqY3VycmVudGx5KiBpbiB1c2UsIG5vdCB0aGF0IGl0IHdhcyBuZXZlciB1c2VkIGJlZm9yZS4gUmV1c2luZyBhbiBpZCBjYW4gY29ycnVwdCBzdGF0ZSxRAW1vc3Qgc2V2ZXJlbHkgZm9yIGJyaWRnZWQgYXNzZXRzLCB3aGVyZSBhIGNvbGxpc2lvbiBicmVha3MgdGhlIGxvY2FsL3JlbW90ZSBtYXBwaW5nLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5SQFhbiBleGlzdGluZyBhc3NldCwgYW5kIG11c3QgbmV2ZXIgaGF2ZSBiZWVuIGluIHVzZSBwcmV2aW91c2x5IChzZWUgd2FybmluZyBhYm92ZSkuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50dQEBEGJvb2wAASRpc19mcm96ZW51AQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybnUBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkGQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZBkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZXUBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQZAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzzQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdEEBFMAAAQA1QQBGFZlYzxUPgAA0QQMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlGQIBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxldQEBEGJvb2wAANUEAAAC0QQA2QQMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAFDoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5UQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSByZXF1aXJlcyBhIHNwZWNpZmljIGlkLCB0aGlzIG11c3QkZXF1YWwgaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnR1AQEQYm9vbAABLG1pbl9iYWxhbmNlcQEBKFQ6OkJhbGFuY2UAAXT4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgAFAVVubGlrZSBgY3JlYXRlYCwgdGhlIGBpZGAgZG9lcyBub3QgaGF2ZSB0byBiZSB0aGUgb25lIHJlcXVpcmVkIGJ5SQFbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdOiBhIHByaXZpbGVnZWQgb3JpZ2luIG1heSBwaWNrIGFueSBgaWRgLCB3aGljaCBpcyB0aGVuUG1hcmtlZCBhcyBhbGxvY2F0ZWQuACQjIFdhcm5pbmcAPQFGb3JjaW5nIGFuIGFyYml0cmFyeSBgaWRgIGlzIGRhbmdlcm91czogdGhlIHBhbGxldCBvbmx5IGNoZWNrcyB0aGF0IGBpZGAgaXMgbm90XQEqY3VycmVudGx5KiBpbiB1c2UsIG5vdCB0aGF0IGl0IHdhcyBuZXZlciB1c2VkIGJlZm9yZS4gUmV1c2luZyBhbiBpZCBjYW4gY29ycnVwdCBzdGF0ZSxRAW1vc3Qgc2V2ZXJlbHkgZm9yIGJyaWRnZWQgYXNzZXRzLCB3aGVyZSBhIGNvbGxpc2lvbiBicmVha3MgdGhlIGxvY2FsL3JlbW90ZSBtYXBwaW5nLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5SQFhbiBleGlzdGluZyBhc3NldCwgYW5kIG11c3QgbmV2ZXIgaGF2ZSBiZWVuIGluIHVzZSBwcmV2aW91c2x5IChzZWUgd2FybmluZyBhYm92ZSkuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudHEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZXEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudHUBARBib29sAAEkaXNfZnJvemVudQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRxAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50cQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm51AQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZldQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc00EAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QQMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBBDYWxsBARUAAEYLGNyZWF0ZV9wb29sCAEYYXNzZXQxGQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyGQIBREJveDxUOjpBc3NldEtpbmQ+AAAQGQFDcmVhdGVzIGFuIGVtcHR5IGxpcXVpZGl0eSBwb29sIGFuZCBhbiBhc3NvY2lhdGVkIG5ldyBgbHBfdG9rZW5gIGFzc2V0AQEodGhlIGlkIG9mIHdoaWNoIGlzIHJldHVybmVkIGluIHRoZSBgRXZlbnQ6OlBvb2xDcmVhdGVkYCBldmVudCkuABEBT25jZSBhIHBvb2wgaXMgY3JlYXRlZCwgc29tZW9uZSBtYXkgW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSB0byBpdC40YWRkX2xpcXVpZGl0eRwBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgABPGFtb3VudDFfZGVzaXJlZDUBAShUOjpCYWxhbmNlAAE8YW1vdW50Ml9kZXNpcmVkNQEBKFQ6OkJhbGFuY2UAASxhbW91bnQxX21pbjUBAShUOjpCYWxhbmNlAAEsYW1vdW50Ml9taW41AQEoVDo6QmFsYW5jZQABHG1pbnRfdG8EATBUOjpBY2NvdW50SWQAATjkUHJvdmlkZSBsaXF1aWRpdHkgaW50byB0aGUgcG9vbCBvZiBgYXNzZXQxYCBhbmQgYGFzc2V0MmAuDQFOT1RFOiBhbiBvcHRpbWFsIGFtb3VudCBvZiBhc3NldDEgYW5kIGFzc2V0MiB3aWxsIGJlIGNhbGN1bGF0ZWQgYW5kIQFtaWdodCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgcHJvdmlkZWQgYGFtb3VudDFfZGVzaXJlZGAvYGFtb3VudDJfZGVzaXJlZGD8dGh1cyB5b3Ugc2hvdWxkIHByb3ZpZGUgdGhlIG1pbiBhbW91bnQgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuyFBhcmFtcyBgYW1vdW50MV9taW5gL2BhbW91bnQyX21pbmAgcmVwcmVzZW50IHRoYXQuSQFgbWludF90b2Agd2lsbCBiZSBzZW50IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgcmVwcmVzZW50IHRoaXMgc2hhcmUgb2YgdGhlIHBvb2wuAF0BTk9URTogd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW5jb3JyZWN0IGV4Y2hhbmdlIHJhdGUgYW5kIG5vbi13aXRoZHJhd2FibGUgcG9vbCBsaXF1aWRpdHks3GJhdGNoIGFuIGF0b21pYyBjYWxsIHdpdGggW2BQYWxsZXQ6OmFkZF9saXF1aWRpdHlgXSBhbmRRAVtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSUBY2FsbHMgdG8gcmVuZGVyIHRoZSBsaXF1aWRpdHkgd2l0aGRyYXdhYmxlIGFuZCByZWN0aWZ5IHRoZSBleGNoYW5nZSByYXRlLgDYT25jZSBsaXF1aWRpdHkgaXMgYWRkZWQsIHNvbWVvbmUgbWF5IHN1Y2Nlc3NmdWxseSBjYWxspFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uQHJlbW92ZV9saXF1aWRpdHkYARhhc3NldDEZAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIZAgFEQm94PFQ6OkFzc2V0S2luZD4AATRscF90b2tlbl9idXJuNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQxX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAAUxhbW91bnQyX21pbl9yZWNlaXZlNQEBKFQ6OkJhbGFuY2UAASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZAACDE0BQWxsb3dzIHlvdSB0byByZW1vdmUgbGlxdWlkaXR5IGJ5IHByb3ZpZGluZyB0aGUgYGxwX3Rva2VuX2J1cm5gIHRva2VucyB0aGF0IHdpbGwgYmVRAWJ1cm5lZCBpbiB0aGUgcHJvY2Vzcy4gV2l0aCB0aGUgdXNhZ2Ugb2YgYGFtb3VudDFfbWluX3JlY2VpdmVgL2BhbW91bnQyX21pbl9yZWNlaXZlYDUBaXQncyBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBtaW4gYW1vdW50IG9mIHJldHVybmVkIHRva2VucyB5b3UncmUgaGFwcHkgd2l0aC5wc3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2VucxQBEHBhdGjhBAFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABJGFtb3VudF9pbjUBAShUOjpCYWxhbmNlAAE4YW1vdW50X291dF9taW41AQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZldQEBEGJvb2wAAxjAU3dhcCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGludG8gYGFzc2V0MmAuLQFgYW1vdW50X291dF9taW5gIHBhcmFtIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbWluIGFtb3VudCBvZiB0aGUgYGFzc2V0MmBgeW91J3JlIGhhcHB5IHRvIHJlY2VpdmUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUucHN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMUARBwYXRo4QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AAShhbW91bnRfb3V0NQEBKFQ6OkJhbGFuY2UAATRhbW91bnRfaW5fbWF4NQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZXUBARBib29sAAQYAQFTd2FwIGFueSBhbW91bnQgb2YgYGFzc2V0MWAgdG8gZ2V0IHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuGQFgYW1vdW50X2luX21heGAgcGFyYW0gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIG1heCBhbW91bnQgb2YgdGhlIGBhc3NldDFgYHlvdSdyZSBoYXBweSB0byBwcm92aWRlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLhR0b3VjaAgBGGFzc2V0MRkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MhkCAURCb3g8VDo6QXNzZXRLaW5kPgAFLE0BVG91Y2ggYW4gZXhpc3RpbmcgcG9vbCB0byBmdWxmaWxsIHByZXJlcXVpc2l0ZXMgYmVmb3JlIHByb3ZpZGluZyBsaXF1aWRpdHksIHN1Y2ggYXNJAWVuc3VyaW5nIHRoYXQgdGhlIHBvb2wncyBhY2NvdW50cyBhcmUgaW4gcGxhY2UuIEl0IGlzIHR5cGljYWxseSB1c2VmdWwgd2hlbiBhIHBvb2xVAWNyZWF0b3IgcmVtb3ZlcyB0aGUgcG9vbCdzIGFjY291bnRzIGFuZCBkb2VzIG5vdCBwcm92aWRlIGEgbGlxdWlkaXR5LiBUaGlzIGFjdGlvbiBtYXlVAWludm9sdmUgaG9sZGluZyBhc3NldHMgZnJvbSB0aGUgY2FsbGVyIGFzIGEgZGVwb3NpdCBmb3IgY3JlYXRpbmcgdGhlIHBvb2wncyBhY2NvdW50cy4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuACkBLSBgYXNzZXQxYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4pAS0gYGFzc2V0MmA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgRwUGFsbGV0J3MgY2FsbGFibGUgZnVuY3Rpb25zLuEEAAACGQIA5QQMVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQQQ2FsbAQEVAABPERjcmVhdGVfY29sbGVjdGlvbgAABKBDcmVhdGUgYSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuLGRlZmluZV9pdGVtDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABPHRyYW5zZmVyYWJpbGl0eekEATxUcmFuc2ZlcmFiaWxpdHkAASBtZXRhZGF0Ye0EAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAEU7ERlZmluZSBvbmUgaW1tdXRhYmxlIGl0ZW0gYW5kIGl0cyBzaGFyZWQgbWV0YWRhdGEgZGVmYXVsdHMuAEUBVGhlIHN1cHBsaWVkIG1ldGFkYXRhIGlzIGluaGVyaXRlZCBieSBldmVyeSBpbnN0YW5jZSBtaW50ZWQgZnJvbSB0aGlzIGRlZmluaXRpb24uVQFJbnN0YW5jZS1zcGVjaWZpYyB2YWx1ZXMgYmVsb25nIG9uIFtgU2VsZjo6bWludGBdIG9yIFtgU2VsZjo6c2V0X2luc3RhbmNlX21ldGFkYXRhYF0uLQFgdHJhbnNmZXJhYmlsaXR5YCBpcyBmaXhlZCBoZXJlIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBvbmNlIGluc3RhbmNlcyBleGlzdC4QbWludBABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQAASBtZXRhZGF0Ye0EAaxWZWM8KE1ldGFkYXRhS2V5T2Y8VD4sIE1ldGFkYXRhVmFsdWVPZjxUPik+AAIcJQFNaW50IGFuIGluc3RhbmNlIG9mIGFuIGltbXV0YWJsZSBpdGVtIGRlZmluaXRpb24gaW50byBhbiBlbXB0eSBwdXJzZSBrZXkuAEUBVGhlIGRlc3RpbmF0aW9uIGdpdmVzIG5vIGNvbnNlbnQ7IGFueSBlbXB0eSBrZXkgaXMgYSB2YWxpZCB0YXJnZXQuIFNlZSB0aGUgbW9kdWxllGRvY3VtZW50YXRpb24gb24gcHVyc2Uta2V5IG9jY3VwYW5jeS4ARQFgbWV0YWRhdGFgIGNvbnRhaW5zIGluc3RhbmNlLXNwZWNpZmljIG92ZXJyaWRlcy4gSXRlbSBtZXRhZGF0YSByZW1haW5zIHRoZSBzaGFyZWTYZGVmYXVsdCBmb3IgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGRlZmluaXRpb24uIHRyYW5zZmVyBAEIdG8EATBUOjpBY2NvdW50SWQAAwzsVHJhbnNmZXIgYW4gTkZUIGhlbGQgYnkgdGhlIGBPcmlnaW46Ok5mdGAgcHVyc2Uta2V5IG9yaWdpbi4AFQFGYWlscyBmb3IgYW4gaW5zdGFuY2Ugb2YgYSBbYFRyYW5zZmVyYWJpbGl0eTo6U291bGJvdW5kYF0gZGVmaW5pdGlvbi4QYnVybgAEFNxCdXJuIGFuIE5GVCBoZWxkIGJ5IHRoZSBgT3JpZ2luOjpOZnRgIHB1cnNlLWtleSBvcmlnaW4uAEkBSXRlbS1kZWZpbml0aW9uIHN1cHBseSBjb3VudHMgbWludGVkLWV2ZXIgaW5zdGFuY2VzIGFuZCBpcyBkZWxpYmVyYXRlbHkgbW9ub3RvbmljLk0BSXRlbSBtZXRhZGF0YSBiZWxvbmdzIHRvIHRoZSBkZWZpbml0aW9uIGFuZCByZW1haW5zIHVudG91Y2hlZC4gSW5zdGFuY2UgbWV0YWRhdGEgaXOwcmVtb3ZlZCBhbmQgaXRzIGV4YWN0IGRlcG9zaXRzIGFyZSByZWxlYXNlZC5kbm9taW5hdGVfY29sbGVjdGlvbl9vd25lcggBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATRwZW5kaW5nX293bmVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAUQ3E5vbWluYXRlIGFuIGFjY291bnQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIGEgY29sbGVjdGlvbi4AVQFPbmx5IHRoZSBjdXJyZW50IG93bmVyIG1heSBub21pbmF0ZSBvciBjbGVhciBhIHByb3NwZWN0aXZlIG93bmVyLiBOb21pbmF0aW9uIGRvZXMgbm90iGNoYW5nZSBhdXRob3JpdHkgb3IgbW92ZSBkZXBvc2l0cy5cc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4AARR2YWx1ZfUEAWhPcHRpb248TWV0YWRhdGFWYWx1ZU9mPFQ+PgAGEMhTZXQgb3IgcmVtb3ZlIGEgY29sbGVjdGlvbi1sZXZlbCBtZXRhZGF0YSBkZWZhdWx0LgBJAU9ubHkgdGhlIGNvbGxlY3Rpb24gb3duZXIgbWF5IG11dGF0ZSBtZXRhZGF0YS4gYE5vbmVgIHJlbGVhc2VzIGFuIGV4aXN0aW5nIGVudHJ5J3PkZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuRHNldF9pdGVtX21ldGFkYXRhEAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl9QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAcUFQFTZXQgb3IgcmVtb3ZlIGEgbWV0YWRhdGEgZGVmYXVsdCBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2Ugb2YgYW4gaXRlbS4ASQFUaGlzIHNjb3BlIG92ZXJyaWRlcyB0aGUgY29sbGVjdGlvbiBkZWZhdWx0IHdpdGhvdXQgY2hhbmdpbmcgYW55IGluc3RhbmNlLXNwZWNpZmljUQFvdmVycmlkZS4gT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcFAWVudHJ5J3MgZGVwb3NpdDsgd2hlbiB0aGUga2V5IGlzIGFic2VudCBpdCBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AuaGNsYWltX2NvbGxlY3Rpb25fb3duZXJzaGlwBAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAAIFORDbGFpbSBhIGNvbGxlY3Rpb24gYWZ0ZXIgbm9taW5hdGlvbiBieSBpdHMgY3VycmVudCBvd25lci4AUQFBbiBlcXVpdmFsZW50IGFnZ3JlZ2F0ZSBjb25zaWRlcmF0aW9uIGlzIGZpcnN0IGNyZWF0ZWQgZm9yIHRoZSBjbGFpbWFudCBhbmQgdGhlbiB0aGVVAXByZXZpb3VzIG93bmVyJ3MgdGlja2V0IGlzIGRyb3BwZWQuIFRoZSBvcGVyYXRpb24gaXMgYXRvbWljOiBmYWlsdXJlIHRvIGVzdGFibGlzaCB0aGUVAWNsYWltYW50J3MgY29uc2lkZXJhdGlvbiBsZWF2ZXMgb3duZXJzaGlwIGFuZCBib3RoIHRpY2tldHMgdW5jaGFuZ2VkLlRzZXRfaW5zdGFuY2VfbWV0YWRhdGEMASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgABFHZhbHVl9QQBaE9wdGlvbjxNZXRhZGF0YVZhbHVlT2Y8VD4+AAkQ1FNldCBvciByZW1vdmUgYW4gaW5zdGFuY2Utc3BlY2lmaWMgbWV0YWRhdGEgb3ZlcnJpZGUuAEkBT25seSB0aGUgY29sbGVjdGlvbiBvd25lciBtYXkgbXV0YXRlIG1ldGFkYXRhLiBgTm9uZWAgcmVsZWFzZXMgYW4gZXhpc3RpbmcgZW50cnknc+RkZXBvc2l0OyB3aGVuIHRoZSBrZXkgaXMgYWJzZW50IGl0IGlzIGEgc3VjY2Vzc2Z1bCBuby1vcC4oZm9yY2VfYnVybgQBIGluc3RhbmNlKAEoSW5zdGFuY2VJZAAKFNRGb3JjZS1idXJuIG9uZSBsaXZlIGluc3RhbmNlIGFzIGl0cyBjb2xsZWN0aW9uIG93bmVyLgBZAVRoZSBjb2xsZWN0aW9uIGxheWVyIGludGVudGlvbmFsbHkgYXBwbGllcyBubyBob2xkZXItbGV2ZWwgQUNMLiBXaGVuIGEgcnVudGltZSBleHBvc2VzWQF0aGlzIGNhbGwgdG8gaXRzIGNvbnRyYWN0IGVudmlyb25tZW50LCBhIGNvbnRyYWN0LW93bmVkIGNvbGxlY3Rpb24gY2FuIGVuZm9yY2UgaXRzIG93bqRjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LixkZWxldGVfaXRlbQgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAsc1ERlbGV0ZSBhbiB1bnVzZWQgaXRlbSBkZWZpbml0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAD0BRXZlcnkgbGl2ZSBpbnN0YW5jZSBtdXN0IGJlIGJ1cm5lZCBhbmQgZXZlcnkgaXRlbSBtZXRhZGF0YSBlbnRyeSByZW1vdmVkIGZpcnN0LmEBRGVsZXRlZCBpdGVtIGluZGljZXMgYXJlIG5ldmVyIHJldXNlZCwgYW5kIHRoZSBjb2xsZWN0aW9uJ3MgbmV4dCBpbmRleCBkb2VzIG5vdCBkcm9wLCBzb1kBYW55dGhpbmcgc2VsZWN0aW5nIGFuIGl0ZW0gYnkgdGhhdCBpbmRleCBjYW4gc2VsZWN0IGEgZGVsZXRlZCBvbmUgYW5kIGZhaWwuIERlZmluaW5nIGFNAXJlcGxhY2VtZW50IHJhaXNlcyB0aGUgaW5kZXggcmF0aGVyIHRoYW4gZmlsbGluZyB0aGUgaG9sZSwgd2hpY2ggY2hhbmdlcyB3aGF0IGV2ZXJ5iG91dHN0YW5kaW5nIHNlbGVjdGlvbiByZXNvbHZlcyB0by5EZGVsZXRlX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAwQvERlbGV0ZSBhbiBlbXB0eSBjb2xsZWN0aW9uIG93bmVkIGJ5IHRoZSBzaWduZXIuAEkBRXZlcnkgaXRlbSBkZWZpbml0aW9uIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCBmaXJzdC4gRGVsZXRlZKBjb2xsZWN0aW9uIGlkZW50aWZpZXJzIGFyZSBuZXZlciByZXVzZWQuOGZvcmNlX3RyYW5zZmVyCAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQADRjkRm9yY2UtdHJhbnNmZXIgb25lIGxpdmUgaW5zdGFuY2UgYXMgaXRzIGNvbGxlY3Rpb24gb3duZXIuAFkBVGhlIGNvbGxlY3Rpb24gbGF5ZXIgaW50ZW50aW9uYWxseSBhcHBsaWVzIG5vIGhvbGRlci1sZXZlbCBBQ0wuIFdoZW4gYSBydW50aW1lIGV4cG9zZXNZAXRoaXMgY2FsbCB0byBpdHMgY29udHJhY3QgZW52aXJvbm1lbnQsIGEgY29udHJhY3Qtb3duZWQgY29sbGVjdGlvbiBjYW4gZW5mb3JjZSBpdHMgb3duXQFjb25zZW50IGFuZCBnYW1lIHJ1bGVzIGJlZm9yZSBjYWxsaW5nIGl0LiBUaGUgbW92ZSBpbmNyZW1lbnRzIHRoZSBpbnN0YW5jZSBzdGF0ZSBub25jZSykaW52YWxpZGF0aW5nIHByaW9yIGhvbGRlciBhdXRob3JpemF0aW9ucy5IdHJhbnNmZXJfYnlfaG9sZGVyCAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQADhRBAU1vdmUgdGhlIGluc3RhbmNlIHRoZSBzaWduZXIgaG9sZHMsIHdpdGggdGhlIGZlZSBwYWlkIGZyb20gdGhlIHNpZ25lcidzIGFjY291bnQuABUBVGhlIG1vdmUgcmVmaWxscyB0aGUgZmVlbGVzcyBtb3ZlIGJ1ZGdldCBvZiBbYENvbmZpZzo6TWF4aW11bU1vdmVzYF0uABUBRmFpbHMgZm9yIGFuIGluc3RhbmNlIG9mIGEgW2BUcmFuc2ZlcmFiaWxpdHk6OlNvdWxib3VuZGBdIGRlZmluaXRpb24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukEDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0PFRyYW5zZmVyYWJpbGl0eQABCDBUcmFuc2ZlcmFibGUAAAAkU291bGJvdW5kAAEAAO0EAAAC8QQA8QQAAAQI3QNZAQD1BAQYT3B0aW9uBARUAVkBAQgQTm9uZQAAABBTb21lBABZAQAAAQAA+QQMKHBhbGxldF9wc20YcGFsbGV0EENhbGwEBFQAATQQbWludBABOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE8ZXh0ZXJuYWxfYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABHG1heF9mZWX9BAEcUGVybWlsbAAAnPBTd2FwIGV4dGVybmFsIGFzc2V0IGZvciBpbnRlcm5hbCBvbiBhIHNwZWNpZmljIFBTTSBpbnN0YW5jZS4ASCMjIERpc3BhdGNoIE9yaWdpbgDETXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdXNlciBwZXJmb3JtaW5nIHRoZSBzd2FwLgAoIyMgRGV0YWlscwAZAVRyYW5zZmVycyBgZXh0ZXJuYWxfYW1vdW50YCBvZiBgZXh0ZXJuYWxfYXNzZXRgIGZyb20gdGhlIGNhbGxlciB0byB0aGUpAWBpbnRlcm5hbF9hc3NldGAncyBQU00gcmVzZXJ2ZSBhY2NvdW50LCB0aGVuIG1pbnRzIGBpbnRlcm5hbF9hc3NldGAgdG8gdGhlKQFjYWxsZXIgbWludXMgdGhlIG1pbnRpbmcgZmVlLiBUaGUgZmVlIGlzIGNhbGN1bGF0ZWQgdXNpbmcgY2VpbGluZyByb3VuZGluZwkBKGBtdWxfY2VpbGApLCBlbnN1cmluZyB0aGUgcHJvdG9jb2wgbmV2ZXIgdW5kZXJjaGFyZ2VzLiBUaGUgZmVlIGlzFQF0cmFuc2ZlcnJlZCB0byBbYFBzbUluZm86OmZlZV9kZXN0aW5hdGlvbmBdIG9mIHRoZSB0YXJnZXRlZCBpbnN0YW5jZS4ANCMjIFBhcmFtZXRlcnMANQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBpbnRlcm5hbCBzdGFibGVjb2luIHRoYXQgaWRlbnRpZmllcyB0aGUgUFNNIGluc3RhbmNlLhkBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgdG8gZGVwb3NpdCAobXVzdCBiZSBhcHByb3ZlZCBvblAgIGBpbnRlcm5hbF9hc3NldGApLuQtIGBleHRlcm5hbF9hbW91bnRgOiBBbW91bnQgb2YgZXh0ZXJuYWwgYXNzZXQgdG8gZGVwb3NpdC70LSBgbWF4X2ZlZWA6IE1heGltdW0gbWludGluZyBmZWUgcmF0ZSBhY2NlcHRlZCBieSB0aGUgY2FsbGVyLgAkIyMgRXJyb3JzAB0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC49AS0gW2BFcnJvcjo6VW5zdXBwb3J0ZWRBc3NldGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiB0aGlzIFBTTS5hAS0gW2BFcnJvcjo6TWludGluZ1N0b3BwZWRgXTogSWYgdGhlIHBlci1leHRlcm5hbCBjaXJjdWl0IGJyZWFrZXIgaXMgYXQgYE1pbnRpbmdEaXNhYmxlZGAwICBvciBoaWdoZXIuXQEtIFtgRXJyb3I6OkJlbG93TWluaW11bVN3YXBgXTogSWYgdGhlIGludGVybmFsLWVxdWl2YWxlbnQgb2YgYGV4dGVybmFsX2Ftb3VudGAgaXMgYmVsb3eMICB0aGUgaW5zdGFuY2UncyBgbWluX3N3YXBfYW1vdW50YC4lAS0gW2BFcnJvcjo6RmVlVG9vSGlnaGBdOiBJZiB0aGUgY29uZmlndXJlZCBtaW50aW5nIGZlZSBleGNlZWRzIGBtYXhfZmVlYC49AS0gW2BFcnJvcjo6RXhjZWVkc01heFBzbURlYnRgXTogSWYgbWludGluZyB3b3VsZCBleGNlZWQgdGhpcyBQU00ncyBkZWJ0IGNlaWxpbmdsICAoYWdncmVnYXRlIG9yIHBlci1hc3NldCkuSQEtIFtgRXJyb3I6OkFtb3VudFRvb1NtYWxsQWZ0ZXJDb252ZXJzaW9uYF06IElmIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBjb3VudGVyLWFzc2V0uCAgcm91bmRzIHRvIHplcm87IHN3YXAgd291bGQgdHJhbnNmZXIgbm90aGluZy4AJCMjIEV2ZW50cwDALSBbYEV2ZW50OjpNaW50ZWRgXTogRW1pdHRlZCBvbiBzdWNjZXNzZnVsIG1pbnQuGHJlZGVlbRABOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE8aW50ZXJuYWxfYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABHG1heF9mZWX9BAEcUGVybWlsbAABoPBTd2FwIGludGVybmFsIGZvciBleHRlcm5hbCBhc3NldCBvbiBhIHNwZWNpZmljIFBTTSBpbnN0YW5jZS4ASCMjIERpc3BhdGNoIE9yaWdpbgDETXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdXNlciBwZXJmb3JtaW5nIHRoZSBzd2FwLgAoIyMgRGV0YWlscwBJAUJ1cm5zIGBpbnRlcm5hbF9hbW91bnRgIG9mIGBpbnRlcm5hbF9hc3NldGAgZnJvbSB0aGUgY2FsbGVyIG1pbnVzIGZlZSAodHJhbnNmZXJyZWQ1AXRvIHRoZSBpbnN0YW5jZSdzIFtgUHNtSW5mbzo6ZmVlX2Rlc3RpbmF0aW9uYF0pLCB0aGVuIHRyYW5zZmVycyB0aGUgcmVzdWx0aW5nJQFhbW91bnQgaW4gYGV4dGVybmFsX2Fzc2V0YCBmcm9tIHRoZSBQU00gcmVzZXJ2ZSB0byB0aGUgY2FsbGVyLiBUaGUgZmVlIGlzLQFjYWxjdWxhdGVkIHVzaW5nIGNlaWxpbmcgcm91bmRpbmcgKGBtdWxfY2VpbGApLCBlbnN1cmluZyB0aGUgcHJvdG9jb2wgbmV2ZXJFAXVuZGVyY2hhcmdlcy4gUmVkZW1wdGlvbnMgdXNlIHRoZSBkZWNpbWFscyBzbmFwc2hvdHRlZCB3aGVuIHRoZSBQU00vZXh0ZXJuYWwgcGFpckUBd2FzIHJlZ2lzdGVyZWQsIGFsbG93aW5nIGV4aXN0aW5nIHBvc2l0aW9ucyB0byB1bndpbmQgZXZlbiBpZiBsaXZlIG1ldGFkYXRhIGxhdGVyIGNoYW5nZXMuADQjIyBQYXJhbWV0ZXJzADUBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgaW50ZXJuYWwgc3RhYmxlY29pbiB0aGF0IGlkZW50aWZpZXMgdGhlIFBTTSBpbnN0YW5jZS4ZAS0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHRvIHJlY2VpdmUgKG11c3QgYmUgYXBwcm92ZWQgb25QICBgaW50ZXJuYWxfYXNzZXRgKS7oLSBgaW50ZXJuYWxfYW1vdW50YDogQW1vdW50IG9mIGBpbnRlcm5hbF9hc3NldGAgdG8gcmVkZWVtLgEBLSBgbWF4X2ZlZWA6IE1heGltdW0gcmVkZW1wdGlvbiBmZWUgcmF0ZSBhY2NlcHRlZCBieSB0aGUgY2FsbGVyLgAkIyMgRXJyb3JzAB0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC49AS0gW2BFcnJvcjo6VW5zdXBwb3J0ZWRBc3NldGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiB0aGlzIFBTTS5ZAS0gW2BFcnJvcjo6QWxsU3dhcHNTdG9wcGVkYF06IElmIHRoZSBwZXItZXh0ZXJuYWwgY2lyY3VpdCBicmVha2VyIGlzIGF0IGBBbGxEaXNhYmxlZGAuLQEtIFtgRXJyb3I6OkJlbG93TWluaW11bVN3YXBgXTogSWYgYGludGVybmFsX2Ftb3VudGAgaXMgYmVsb3cgdGhlIGluc3RhbmNlJ3NQICBgbWluX3N3YXBfYW1vdW50YC4xAS0gW2BFcnJvcjo6RmVlVG9vSGlnaGBdOiBJZiB0aGUgY29uZmlndXJlZCByZWRlbXB0aW9uIGZlZSBleGNlZWRzIGBtYXhfZmVlYC5RAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UmVzZXJ2ZWBdOiBJZiB0aGUgUFNNIGhvbGRzIGxlc3Mgb2YgYGV4dGVybmFsX2Fzc2V0YCB0aGFuIHRoZVggIHJlZGVtcHRpb24gcmVxdWlyZXMuSQEtIFtgRXJyb3I6OkFtb3VudFRvb1NtYWxsQWZ0ZXJDb252ZXJzaW9uYF06IElmIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBjb3VudGVyLWFzc2V0uCAgcm91bmRzIHRvIHplcm87IHN3YXAgd291bGQgdHJhbnNmZXIgbm90aGluZy4AJCMjIEV2ZW50cwDgLSBbYEV2ZW50OjpSZWRlZW1lZGBdOiBFbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgcmVkZW1wdGlvbi4oY3JlYXRlX3BzbRgBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAShmdWxsX2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABPGVtZXJnZW5jeV9hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AATxmZWVfZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAASBtYXhfZGVidDUBATBCYWxhbmNlT2Y8VD4AATxtaW5fc3dhcF9hbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAKQoENyZWF0ZSBhIFBTTSBmb3IgYSBnaXZlbiBpbnRlcm5hbCBhc3NldC4AAQFJZiBbYENvbmZpZzo6Q3JlYXRlT3JpZ2luYF0gcmVzb2x2ZXMgdG8gYFNvbWUoYWNjb3VudClgLCB0YWtlcyBhQQFbYENvbmZpZzo6Q29uc2lkZXJhdGlvbmBdIGRlcG9zaXQgZnJvbSB0aGF0IGFjY291bnQgZm9yIHRoZSBpbnN0YW5jZSdzIGZvb3RwcmludDkBKHJlZnVuZGVkIG9uIGByZW1vdmVfcHNtYCkuIElmIGl0IHJlc29sdmVzIHRvIGBOb25lYCwgbm8gZGVwb3NpdCBpcyB0YWtlbi4gVGhlWQFgZnVsbF9hZG1pbmAgYW5kIGBlbWVyZ2VuY3lfYWRtaW5gIG9yaWdpbnMgYXJlIHNldCBmcm9tIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG1heVUBbGF0ZXIgYmUgcmVhc3NpZ25lZCB2aWEgW2BQYWxsZXQ6OnNldF9mdWxsX2FkbWluYF0gLyBbYFBhbGxldDo6c2V0X2VtZXJnZW5jeV9hZG1pbmBdLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEUBW2BDb25maWc6OkNyZWF0ZU9yaWdpbmBdLCBwYXJhbWV0ZXJpc2VkIGJ5IGBpbnRlcm5hbF9hc3NldGAuIFdpdGggdGhlIHJlY29tbWVuZGVkIQFbYEVuc3VyZUFzc2V0T3duZXJgXSB0aGlzIGlzIGEgc2lnbmVkIG9yaWdpbiB0aGF0IG93bnMgYGludGVybmFsX2Fzc2V0YC4ANCMjIFBhcmFtZXRlcnMARQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBpbnRlcm5hbCBzdGFibGVjb2luIGtleWluZyB0aGUgbmV3IFBTTS4gTXVzdCBleGlzdCBpbiB0aGXwICBmdW5naWJsZXMgYmFja2VuZDsgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgUFNNIHJlZ2lzdGVyZWQu+C0gYGZ1bGxfYWRtaW5gOiBPcmlnaW4gZ3JhbnRlZCBmdWxsIG1hbmFnZW1lbnQgb2YgdGhlIG5ldyBQU00uIQEtIGBlbWVyZ2VuY3lfYWRtaW5gOiBPcmlnaW4gZ3JhbnRlZCBlbWVyZ2VuY3kgbWFuYWdlbWVudCBvZiB0aGUgbmV3IFBTTS4BAS0gYGZlZV9kZXN0aW5hdGlvbmA6IEFjY291bnQgdGhhdCB3aWxsIHJlY2VpdmUgbWludC9yZWRlZW0gZmVlcy7sLSBgbWF4X2RlYnRgOiBJbml0aWFsIGFic29sdXRlIGludGVybmFsLWFzc2V0IGRlYnQgY2VpbGluZy5RAS0gYG1pbl9zd2FwX2Ftb3VudGA6IE1pbmltdW0gc3dhcCBhbW91bnQgZm9yIHRoaXMgaW5zdGFuY2UsIGluIGludGVybmFsLWFzc2V0IHVuaXRzLkwgIE11c3QgYmUgbm9uLXplcm8uACQjIyBFcnJvcnMAYQEtIFtgRGlzcGF0Y2hFcnJvcjo6QmFkT3JpZ2luYF06IFRoZSBvcmlnaW4gaXMgbm90IHBlcm1pdHRlZCBieSBbYENvbmZpZzo6Q3JlYXRlT3JpZ2luYF0uQQEtIFtgRXJyb3I6OlBzbUFscmVhZHlFeGlzdHNgXTogQSBQU00gaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLugtIFtgRXJyb3I6Olplcm9NaW5Td2FwQW1vdW50YF06IGBtaW5fc3dhcF9hbW91bnRgIGlzIHplcm8uCQEtIFtgRXJyb3I6OkFzc2V0RG9lc05vdEV4aXN0YF06IFRoZSBpbnRlcm5hbCBhc3NldCBkb2VzIG5vdCBleGlzdC5ZAS0gQW55IGVycm9yIGZyb20gZXN0YWJsaXNoaW5nIHRoZSBbYENvbmZpZzo6Q29uc2lkZXJhdGlvbmBdIGRlcG9zaXQgd2hlbiBvbmUgaXMgbmVlZGVkmCAgKGUuZy4gdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZCBpdCkuACQjIyBFdmVudHMAYC0gW2BFdmVudDo6UHNtQ3JlYXRlZGBdLihyZW1vdmVfcHNtBAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAADXCkBUmVtb3ZlIGEgUFNNLiBDYWxsYWJsZSBieSB0aGUgY3VycmVudCBgZnVsbF9hZG1pbmAuIEFsbCBhcHByb3ZlZCBleHRlcm5hbHPobXVzdCBiZSByZW1vdmVkIGZpcnN0IGFuZCBhZ2dyZWdhdGUgUFNNIGRlYnQgbXVzdCBiZSB6ZXJvLgBVAUlmIGEgY3JlYXRpb24gZGVwb3NpdCB3YXMgdGFrZW4sIGl0IGlzIGFsd2F5cyByZXR1cm5lZCB0byB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHnQcGFpZCBpdCwgcmVnYXJkbGVzcyBvZiBhbnkgbGF0ZXIgYWRtaW4gcmVhc3NpZ25tZW50LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIhNdXN0IG1hdGNoIHRoZSBQU00ncyBgZnVsbF9hZG1pbmAuADQjIyBQYXJhbWV0ZXJzALwtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gcmVtb3ZlLgAkIyMgRXJyb3JzABEBLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBObyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC4VAS0gW2BFcnJvcjo6UHNtSGFzQXBwcm92ZWRFeHRlcm5hbHNgXTogQXBwcm92ZWQgZXh0ZXJuYWxzIHN0aWxsIGV4aXN0LgEBLSBbYEVycm9yOjpQc21IYXNEZWJ0YF06IE91dHN0YW5kaW5nIGFnZ3JlZ2F0ZSBkZWJ0IGlzIG5vbi16ZXJvLgAkIyMgRXZlbnRzAGAtIFtgRXZlbnQ6OlBzbVJlbW92ZWRgXS48c2V0X21pbnRpbmdfZmVlDAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAQxmZWX9BAEcUGVybWlsbAAEUA0BU2V0IHRoZSBtaW50aW5nIGZlZSBmb3IgYW4gYChpbnRlcm5hbF9hc3NldCwgZXh0ZXJuYWxfYXNzZXQpYCBwYWlyLgBIIyMgRGlzcGF0Y2ggT3JpZ2luACEBTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gICh0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCkuADQjIyBQYXJhbWV0ZXJzAMgtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gY29uZmlndXJlLikBLSBgZXh0ZXJuYWxfYXNzZXRgOiBUaGUgZXh0ZXJuYWwgYXNzZXQgd2hvc2UgbWludGluZyBmZWUgaXMgYmVpbmcgdXBkYXRlZC50LSBgZmVlYDogVGhlIG5ldyBtaW50aW5nIGZlZS4AJCMjIEVycm9ycwBJAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gb25seSBoYXMgYEVtZXJnZW5jeWAgcHJpdmlsZWdlcy5dAS0gW2BFcnJvcjo6QXNzZXROb3RBcHByb3ZlZGBdOiBJZiBgZXh0ZXJuYWxfYXNzZXRgIGlzIG5vdCBhcHByb3ZlZCBvbiBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAAEBLSBbYEV2ZW50OjpNaW50aW5nRmVlVXBkYXRlZGBdOiBFbWl0dGVkIHdpdGggb2xkIGFuZCBuZXcgdmFsdWVzLkhzZXRfcmVkZW1wdGlvbl9mZWUMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABDGZlZf0EARxQZXJtaWxsAAVQGQFTZXQgdGhlIHJlZGVtcHRpb24gZmVlIGZvciBhbiBgKGludGVybmFsX2Fzc2V0LCBleHRlcm5hbF9hc3NldClgIHBhaXIuAEgjIyBEaXNwYXRjaCBPcmlnaW4AIQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgKHRoZSBgRnVsbGAgcHJpdmlsZWdlIGxldmVsKS4ANCMjIFBhcmFtZXRlcnMAyC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBjb25maWd1cmUuNQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB3aG9zZSByZWRlbXB0aW9uIGZlZSBpcyBiZWluZyB1cGRhdGVkLoAtIGBmZWVgOiBUaGUgbmV3IHJlZGVtcHRpb24gZmVlLgAkIyMgRXJyb3JzAEkBLSBbYEVycm9yOjpJbnN1ZmZpY2llbnRQcml2aWxlZ2VgXTogSWYgdGhlIG9yaWdpbiBvbmx5IGhhcyBgRW1lcmdlbmN5YCBwcml2aWxlZ2VzLl0BLSBbYEVycm9yOjpBc3NldE5vdEFwcHJvdmVkYF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMADQEtIFtgRXZlbnQ6OlJlZGVtcHRpb25GZWVVcGRhdGVkYF06IEVtaXR0ZWQgd2l0aCBvbGQgYW5kIG5ldyB2YWx1ZXMuMHNldF9tYXhfZGVidAgBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAARR2YWx1ZTUBATBCYWxhbmNlT2Y8VD4ABlRBAVNldCB0aGUgUFNNIGRlYnQgY2VpbGluZyBwZXIgaW50ZXJuYWwgYXNzZXQsIHNoYXJlZCBhY3Jvc3MgYWxsIGFwcHJvdmVkIGV4dGVybmFsHGFzc2V0cy4ASCMjIERpc3BhdGNoIE9yaWdpbgBNAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYDsgb25seSB0aGUgYEZ1bGxgIHByaXZpbGVnZSBsZXZlbCBtYXkgdXNlKHRoaXMgY2FsbC4ANCMjIFBhcmFtZXRlcnMAyC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBjb25maWd1cmUuCQEtIGB2YWx1ZWA6IFRoZSBuZXcgYWJzb2x1dGUgZGVidCBjZWlsaW5nLCBpbiBpbnRlcm5hbC1hc3NldCB1bml0cy4AJCMjIEVycm9ycwBRAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gbGV2ZWwgY2Fubm90IHNldCB0aGUgZGVidCBjZWlsaW5nLh0BLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBJZiBubyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwD0LSBbYEV2ZW50OjpNYXhEZWJ0VXBkYXRlZGBdOiBFbWl0dGVkIHdpdGggb2xkIGFuZCBuZXcgdmFsdWVzLkBzZXRfYXNzZXRfc3RhdHVzDAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAARhzdGF0dXMBBQFMQ2lyY3VpdEJyZWFrZXJMZXZlbAAHUPRTZXQgdGhlIGNpcmN1aXQgYnJlYWtlciBwZXIgZXh0ZXJuYWwgYXNzZXQgb24gYSBQU00gaW5zdGFuY2UuAEgjIyBEaXNwYXRjaCBPcmlnaW4ALQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgb3IgYGVtZXJnZW5jeV9hZG1pbmA7IGVpdGhlciB0aGXgYEZ1bGxgIG9yIGBFbWVyZ2VuY3lgIHByaXZpbGVnZSBsZXZlbCBtYXkgdXNlIHRoaXMgY2FsbC4ANCMjIFBhcmFtZXRlcnMAyC0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byBjb25maWd1cmUuFQEtIGBleHRlcm5hbF9hc3NldGA6IFRoZSBleHRlcm5hbCBhc3NldCB3aG9zZSBzdGF0dXMgaXMgYmVpbmcgdXBkYXRlZC7wLSBgc3RhdHVzYDogVGhlIG5ldyBjaXJjdWl0IGJyZWFrZXIgbGV2ZWwgZm9yIHRoYXQgZXh0ZXJuYWwuACQjIyBFcnJvcnMAXQEtIFtgRXJyb3I6OkFzc2V0Tm90QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwABAS0gW2BFdmVudDo6QXNzZXRTdGF0dXNVcGRhdGVkYF06IEVtaXR0ZWQgb24gYSBzdWNjZXNzZnVsIHVwZGF0ZS5gc2V0X2Fzc2V0X2NlaWxpbmdfd2VpZ2h0DAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAARh3ZWlnaHT9BAEcUGVybWlsbAAIYPBTZXQgdGhlIGNlaWxpbmcgd2VpZ2h0IHBlciBleHRlcm5hbCBhc3NldCBvbiBhIFBTTSBpbnN0YW5jZS4ALQFXZWlnaHRzIGFyZSBub3JtYWxpc2VkIGFnYWluc3QgdGhlIHN1bSBvZiB3ZWlnaHRzIHdpdGhpbiB0aGUgc2FtZSBpbnN0YW5jZTr0YG1heF9hc3NldF9kZWJ0ID0gKHdlaWdodCAvIHN1bV9vZl93ZWlnaHRzKSAqIGluZm8ubWF4X2RlYnRgLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAE0BTXVzdCBtYXRjaCB0aGUgUFNNIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gOyBvbmx5IHRoZSBgRnVsbGAgcHJpdmlsZWdlIGxldmVsIG1heSB1c2UodGhpcyBjYWxsLgA0IyMgUGFyYW1ldGVycwDILSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIGluc3RhbmNlIHRvIGNvbmZpZ3VyZS41AS0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHdob3NlIGNlaWxpbmcgd2VpZ2h0IGlzIGJlaW5nIHVwZGF0ZWQuMQEtIGB3ZWlnaHRgOiBUaGUgbmV3IGNlaWxpbmcgd2VpZ2h0LiBaZXJvIGRpc2FibGVzIG1pbnRpbmcgZm9yIHRoaXMgZXh0ZXJuYWwuACQjIyBFcnJvcnMATQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFByaXZpbGVnZWBdOiBJZiB0aGUgb3JpZ2luIGxldmVsIGNhbm5vdCBzZXQgY2VpbGluZyB3ZWlnaHRzLl0BLSBbYEVycm9yOjpBc3NldE5vdEFwcHJvdmVkYF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgbm90IGFwcHJvdmVkIG9uIGBpbnRlcm5hbF9hc3NldGAuACQjIyBFdmVudHMAIQEtIFtgRXZlbnQ6OkFzc2V0Q2VpbGluZ1dlaWdodFVwZGF0ZWRgXTogRW1pdHRlZCB3aXRoIG9sZCBhbmQgbmV3IHZhbHVlcy5IYWRkX2V4dGVybmFsX2Fzc2V0CAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQACXDUQXBwcm92ZSBhbiBleHRlcm5hbCBhc3NldCBmb3IgYSBnaXZlbiBpbnRlcm5hbCBhc3NldC4AFQFTbmFwc2hvdHMgdGhlIGV4dGVybmFsIGFzc2V0J3MgbGl2ZSBkZWNpbWFscyBhdCByZWdpc3RyYXRpb24gdGltZSBhbmScaW5jcmVtZW50cyBbYFBzbUluZm86OmV4dGVybmFsX2NvdW50YF0uAEgjIyBEaXNwYXRjaCBPcmlnaW4AIQFNdXN0IG1hdGNoIHRoZSBQU00gaW5zdGFuY2UncyBgZnVsbF9hZG1pbmAgKHRoZSBgRnVsbGAgcHJpdmlsZWdlIGxldmVsKS4ANCMjIFBhcmFtZXRlcnMAAQEtIGBpbnRlcm5hbF9hc3NldGA6IFRoZSBQU00gaW5zdGFuY2UgdG8gYXBwcm92ZSB0aGUgZXh0ZXJuYWwgb24uyC0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHRvIGFwcHJvdmUuACQjIyBFcnJvcnMASQEtIFtgRXJyb3I6Okluc3VmZmljaWVudFByaXZpbGVnZWBdOiBJZiB0aGUgb3JpZ2luIG9ubHkgaGFzIGBFbWVyZ2VuY3lgIHByaXZpbGVnZXMuHQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IElmIG5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLjkBLSBbYEVycm9yOjpUb29NYW55QXNzZXRzYF06IElmIHRoZSBQU00gaXMgYWxyZWFkeSBhdCBbYENvbmZpZzo6TWF4RXh0ZXJuYWxzYF0uXQEtIFtgRXJyb3I6OkFzc2V0QWxyZWFkeUFwcHJvdmVkYF06IElmIGBleHRlcm5hbF9hc3NldGAgaXMgYWxyZWFkeSBhcHByb3ZlZCBvbiB0aGlzIFBTTS5RAS0gW2BFcnJvcjo6QXNzZXREb2VzTm90RXhpc3RgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdW5kZXJseWluZ1AgIGZ1bmdpYmxlcyBiYWNrZW5kLl0BLSBbYEVycm9yOjpEZWNpbWFsc1JhbmdlRXhjZWVkZWRgXTogSWYgYHxhc3NldF9kZWNpbWFscyDiiJIgaW50ZXJuYWxfZGVjaW1hbHN8YCBleGNlZWRzYCAgW2BNQVhfREVDSU1BTFNfRElGRmBdLgAkIyMgRXZlbnRzAAkBLSBbYEV2ZW50OjpFeHRlcm5hbEFzc2V0QWRkZWRgXTogRW1pdHRlZCBvbiBhIHN1Y2Nlc3NmdWwgYXBwcm92YWwuVHJlbW92ZV9leHRlcm5hbF9hc3NldAgBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAThleHRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAApktFJlbW92ZSBhbiBleHRlcm5hbCBhc3NldCBmcm9tIGEgUFNNIGluc3RhbmNlLgAhAVdpcGVzIHRoZSBleHRlcm5hbCdzIHBlci1pbnN0YW5jZSBzdGF0ZSAoc3RhdHVzLCBkZWNpbWFscywgZmVlcywgY2VpbGluZxUBd2VpZ2h0LCBkZWJ0IGNvdW50ZXIpIGFuZCBkZWNyZW1lbnRzIFtgUHNtSW5mbzo6ZXh0ZXJuYWxfY291bnRgXS4gVGhl6GV4dGVybmFsIG11c3QgaGF2ZSB6ZXJvIG91dHN0YW5kaW5nIGRlYnQgb24gdGhpcyBpbnN0YW5jZS4ASCMjIERpc3BhdGNoIE9yaWdpbgAhAU11c3QgbWF0Y2ggdGhlIFBTTSBpbnN0YW5jZSdzIGBmdWxsX2FkbWluYCAodGhlIGBGdWxsYCBwcml2aWxlZ2UgbGV2ZWwpLgA0IyMgUGFyYW1ldGVycwAFAS0gYGludGVybmFsX2Fzc2V0YDogVGhlIFBTTSBpbnN0YW5jZSB0byByZW1vdmUgdGhlIGV4dGVybmFsIGZyb20uxC0gYGV4dGVybmFsX2Fzc2V0YDogVGhlIGV4dGVybmFsIGFzc2V0IHRvIHJlbW92ZS4AJCMjIEVycm9ycwBJAS0gW2BFcnJvcjo6SW5zdWZmaWNpZW50UHJpdmlsZWdlYF06IElmIHRoZSBvcmlnaW4gb25seSBoYXMgYEVtZXJnZW5jeWAgcHJpdmlsZWdlcy4dAS0gW2BFcnJvcjo6UHNtTm90Rm91bmRgXTogSWYgbm8gUFNNIGlzIHJlZ2lzdGVyZWQgZm9yIGBpbnRlcm5hbF9hc3NldGAuPQEtIFtgRXJyb3I6OkFzc2V0Tm90QXBwcm92ZWRgXTogSWYgYGV4dGVybmFsX2Fzc2V0YCBpcyBub3QgYXBwcm92ZWQgb24gdGhpcyBQU00uPQEtIFtgRXJyb3I6OkFzc2V0SGFzRGVidGBdOiBJZiB0aGUgZXh0ZXJuYWwgc3RpbGwgaGFzIG5vbi16ZXJvIG91dHN0YW5kaW5nIGRlYnQuACQjIyBFdmVudHMADQEtIFtgRXZlbnQ6OkV4dGVybmFsQXNzZXRSZW1vdmVkYF06IEVtaXR0ZWQgb24gYSBzdWNjZXNzZnVsIHJlbW92YWwuOHNldF9mdWxsX2FkbWluCAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AC0gZAVJlYXNzaWduIHRoZSBQU00ncyBgZnVsbF9hZG1pbmAuIENhbGxhYmxlIGJ5IHRoZSBjdXJyZW50IGBmdWxsX2FkbWluYC4ASCMjIERpc3BhdGNoIE9yaWdpbgCoTXVzdCBtYXRjaCB0aGUgUFNNJ3MgY3VycmVudCBgZnVsbF9hZG1pbmAuADQjIyBQYXJhbWV0ZXJzAAEBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIHdob3NlIGBmdWxsX2FkbWluYCBpcyBiZWluZyBjaGFuZ2VkLqwtIGBuZXdfYWRtaW5gOiBUaGUgbmV3IGBmdWxsX2FkbWluYCBvcmlnaW4uACQjIyBFcnJvcnMAEQEtIFtgRXJyb3I6OlBzbU5vdEZvdW5kYF06IE5vIFBTTSBpcyByZWdpc3RlcmVkIGZvciBgaW50ZXJuYWxfYXNzZXRgLgAkIyMgRXZlbnRzAHgtIFtgRXZlbnQ6OkZ1bGxBZG1pbkNoYW5nZWRgXS5Mc2V0X2VtZXJnZW5jeV9hZG1pbggBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAASRuZXdfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAxILQFSZWFzc2lnbiB0aGUgUFNNJ3MgYGVtZXJnZW5jeV9hZG1pbmAuIENhbGxhYmxlIGJ5IHRoZSBjdXJyZW50IGBmdWxsX2FkbWluYC4ASCMjIERpc3BhdGNoIE9yaWdpbgCoTXVzdCBtYXRjaCB0aGUgUFNNJ3MgY3VycmVudCBgZnVsbF9hZG1pbmAuADQjIyBQYXJhbWV0ZXJzABUBLSBgaW50ZXJuYWxfYXNzZXRgOiBUaGUgUFNNIHdob3NlIGBlbWVyZ2VuY3lfYWRtaW5gIGlzIGJlaW5nIGNoYW5nZWQuwC0gYG5ld19hZG1pbmA6IFRoZSBuZXcgYGVtZXJnZW5jeV9hZG1pbmAgb3JpZ2luLgAkIyMgRXJyb3JzABEBLSBbYEVycm9yOjpQc21Ob3RGb3VuZGBdOiBObyBQU00gaXMgcmVnaXN0ZXJlZCBmb3IgYGludGVybmFsX2Fzc2V0YC4AJCMjIEV2ZW50cwCMLSBbYEV2ZW50OjpFbWVyZ2VuY3lBZG1pbkNoYW5nZWRgXS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu/QQMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEADgBDHUzMgAAAQUMKHBhbGxldF9wc20YcGFsbGV0TENpcmN1aXRCcmVha2VyTGV2ZWwAAQwoQWxsRW5hYmxlZAAAADxNaW50aW5nRGlzYWJsZWQAAQAsQWxsRGlzYWJsZWQAAgAABQUMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQQQ2FsbAgEVAAESQABGCxzcGVuZF9sb2NhbAgBGGFtb3VudHEBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AANEuFByb3Bvc2UgYW5kIGFwcHJvdmUgYSBzcGVuZCBvZiB0cmVhc3VyeSBmdW5kcy4ASCMjIERpc3BhdGNoIE9yaWdpbgBFAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0IGBhbW91bnRgLgAsIyMjIERldGFpbHNFAU5PVEU6IEZvciByZWNvcmQta2VlcGluZyBwdXJwb3NlcywgdGhlIHByb3Bvc2VyIGlzIGRlZW1lZCB0byBiZSBlcXVpdmFsZW50IHRvIHRoZTBiZW5lZmljaWFyeS4AOCMjIyBQYXJhbWV0ZXJzQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLugtIGBiZW5lZmljaWFyeWA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdHJhbnNmZXIuACQjIyBFdmVudHMAtEVtaXRzIFtgRXZlbnQ6OlNwZW5kQXBwcm92ZWRgXSBpZiBzdWNjZXNzZnVsLjxyZW1vdmVfYXBwcm92YWwEASxwcm9wb3NhbF9pZGABNFByb3Bvc2FsSW5kZXgABFQtAUZvcmNlIGEgcHJldmlvdXNseSBhcHByb3ZlZCBwcm9wb3NhbCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFwcHJvdmFsIHF1ZXVlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAwFRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgbm8gbG9uZ2VyIGJlIHJldHVybmVkLgA4IyMjIFBhcmFtZXRlcnOgLSBgcHJvcG9zYWxfaWRgOiBUaGUgaW5kZXggb2YgYSBwcm9wb3NhbAA4IyMjIENvbXBsZXhpdHmsLSBPKEEpIHdoZXJlIGBBYCBpcyB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscwAoIyMjIEVycm9yc0UBLSBbYEVycm9yOjpQcm9wb3NhbE5vdEFwcHJvdmVkYF06IFRoZSBgcHJvcG9zYWxfaWRgIHN1cHBsaWVkIHdhcyBub3QgZm91bmQgaW4gdGhlUQEgIGFwcHJvdmFsIHF1ZXVlLCBpLmUuLCB0aGUgcHJvcG9zYWwgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLiBUaGlzIGNvdWxkIGFsc28gbWVhbiB0aGVZASAgcHJvcG9zYWwgZG9lcyBub3QgZXhpc3QgYWx0b2dldGhlciwgdGh1cyB0aGVyZSBpcyBubyB3YXkgaXQgd291bGQgaGF2ZSBiZWVuIGFwcHJvdmVkVCAgaW4gdGhlIGZpcnN0IHBsYWNlLhRzcGVuZBABKGFzc2V0X2tpbmQJBQFEQm94PFQ6OkFzc2V0S2luZD4AARhhbW91bnRxAQFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQ0FAXhCb3g8QmVuZWZpY2lhcnlMb29rdXBPZjxULCBJPj4AASh2YWxpZF9mcm9t4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAFaLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4AHQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdFUBYGFtb3VudGAgb2YgYGFzc2V0X2tpbmRgIGluIHRoZSBuYXRpdmUgYXNzZXQuIFRoZSBhbW91bnQgb2YgYGFzc2V0X2tpbmRgIGlzIGNvbnZlcnRlZNRmb3IgYXNzZXJ0aW9uIHVzaW5nIHRoZSBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLgAoIyMgRGV0YWlscwBJAUNyZWF0ZSBhbiBhcHByb3ZlZCBzcGVuZCBmb3IgdHJhbnNmZXJyaW5nIGEgc3BlY2lmaWMgYGFtb3VudGAgb2YgYGFzc2V0X2tpbmRgIHRvIGFhAWRlc2lnbmF0ZWQgYmVuZWZpY2lhcnkuIFRoZSBzcGVuZCBtdXN0IGJlIGNsYWltZWQgdXNpbmcgdGhlIGBwYXlvdXRgIGRpc3BhdGNoYWJsZSB3aXRoaW50dGhlIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4AOCMjIyBQYXJhbWV0ZXJzFQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBzcGVudC5BAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAuuC0gYGJlbmVmaWNpYXJ5YDogVGhlIGJlbmVmaWNpYXJ5IG9mIHRoZSBzcGVuZC5VAS0gYHZhbGlkX2Zyb21gOiBUaGUgYmxvY2sgbnVtYmVyIGZyb20gd2hpY2ggdGhlIHNwZW5kIGNhbiBiZSBjbGFpbWVkLiBJdCBjYW4gcmVmZXIgdG8ZASAgdGhlIHBhc3QgaWYgdGhlIHJlc3VsdGluZyBzcGVuZCBoYXMgbm90IHlldCBleHBpcmVkIGFjY29yZGluZyB0byB0aGVFASAgW2BDb25maWc6OlBheW91dFBlcmlvZGBdLiBJZiBgTm9uZWAsIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZCBpbW1lZGlhdGVseSBhZnRlciwgIGFwcHJvdmFsLgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpBc3NldFNwZW5kQXBwcm92ZWRgXSBpZiBzdWNjZXNzZnVsLhhwYXlvdXQEARRpbmRleDgBKFNwZW5kSW5kZXgABkw4Q2xhaW0gYSBzcGVuZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA4TXVzdCBiZSBzaWduZWQAKCMjIERldGFpbHMAVQFTcGVuZHMgbXVzdCBiZSBjbGFpbWVkIHdpdGhpbiBzb21lIHRlbXBvcmFsIGJvdW5kcy4gQSBzcGVuZCBtYXkgYmUgY2xhaW1lZCB3aXRoaW4gb25l1FtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXSBmcm9tIHRoZSBgdmFsaWRfZnJvbWAgYmxvY2suVQFJbiBjYXNlIG9mIGEgcGF5b3V0IGZhaWx1cmUsIHRoZSBzcGVuZCBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlIGBjaGVja19zdGF0dXNg3GRpc3BhdGNoYWJsZSBiZWZvcmUgcmV0cnlpbmcgd2l0aCB0aGUgY3VycmVudCBmdW5jdGlvbi4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAJBFbWl0cyBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2hlY2tfc3RhdHVzBAEUaW5kZXg4AShTcGVuZEluZGV4AAdMKQFDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVuZCBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHN0b3JhZ2UgaWYgcHJvY2Vzc2VkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAAQFUaGUgc3RhdHVzIGNoZWNrIGlzIGEgcHJlcmVxdWlzaXRlIGZvciByZXRyeWluZyBhIGZhaWxlZCBwYXlvdXQuSQFJZiBhIHNwZW5kIGhhcyBlaXRoZXIgc3VjY2VlZGVkIG9yIGV4cGlyZWQsIGl0IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZSBieSB0aGlz7GZ1bmN0aW9uLiBJbiBzdWNoIGluc3RhbmNlcywgdHJhbnNhY3Rpb24gZmVlcyBhcmUgcmVmdW5kZWQuADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwD4RW1pdHMgW2BFdmVudDo6UGF5bWVudEZhaWxlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIGZhaWxlZC4BAUVtaXRzIFtgRXZlbnQ6OlNwZW5kUHJvY2Vzc2VkYF0gaWYgdGhlIHNwZW5kIHBheW91dCBoYXMgc3VjY2VlZC4odm9pZF9zcGVuZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIQHxWb2lkIHByZXZpb3VzbHkgYXBwcm92ZWQgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwAdAUEgc3BlbmQgdm9pZCBpcyBvbmx5IHBvc3NpYmxlIGlmIHRoZSBwYXlvdXQgaGFzIG5vdCBiZWVuIGF0dGVtcHRlZCB5ZXQuADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwDARW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZFZvaWRlZGBdIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgkFDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhRpbXBsc1xWZXJzaW9uZWRMb2NhdGFibGVBc3NldAABDAhWMwgBIGxvY2F0aW9uyQEBRHhjbTo6djM6OkxvY2F0aW9uAAEgYXNzZXRfaWRpAgFAeGNtOjp2Mzo6QXNzZXRJZAADAAhWNAgBIGxvY2F0aW9u5QEBRHhjbTo6djQ6OkxvY2F0aW9uAAEgYXNzZXRfaWTdAgFAeGNtOjp2NDo6QXNzZXRJZAAEAAhWNQgBIGxvY2F0aW9uGQIBRHhjbTo6djU6OkxvY2F0aW9uAAEgYXNzZXRfaWQpAwFAeGNtOjp2NTo6QXNzZXRJZAAFAAANBQxEcGFyYWNoYWluc19jb21tb24McGF5ZFZlcnNpb25lZExvY2F0YWJsZUFjY291bnQAAQgIVjQIASBsb2NhdGlvbuUBAUR4Y206OnY0OjpMb2NhdGlvbgABKGFjY291bnRfaWTlAQFEeGNtOjp2NDo6TG9jYXRpb24ABAAIVjUIASBsb2NhdGlvbhkCAUR4Y206OnY1OjpMb2NhdGlvbgABKGFjY291bnRfaWQZAgFEeGNtOjp2NTo6TG9jYXRpb24ABQAAEQUMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQQQ2FsbAgEVAAESQABGBB2b3RlCAEocG9sbF9pbmRleGABRFBvbGxJbmRleE9mPFQsIEk+AAEQdm90ZRUFAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAAkGQFWb3RlIGluIGEgcG9sbC4gSWYgYHZvdGUuaXNfYXllKClgLCB0aGUgdm90ZSBpcyB0byBlbmFjdCB0aGUgcHJvcG9zYWw7uG90aGVyd2lzZSBpdCBpcyBhIHZvdGUgdG8ga2VlcCB0aGUgc3RhdHVzIHF1by4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMgtIGBwb2xsX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSBwb2xsIHRvIHZvdGUgZm9yLoQtIGB2b3RlYDogVGhlIHZvdGUgY29uZmlndXJhdGlvbi4AFQFXZWlnaHQ6IGBPKFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhlIHZvdGVyIGhhcyB2b3RlZCBvbi4gZGVsZWdhdGUQARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEIdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGNvbnZpY3Rpb24dBQEoQ29udmljdGlvbgABHGJhbGFuY2U1AQE8QmFsYW5jZU9mPFQsIEk+AAFcTQFEZWxlZ2F0ZSB0aGUgdm90aW5nIHBvd2VyICh3aXRoIHNvbWUgZ2l2ZW4gY29udmljdGlvbikgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYWhwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBVAVRoZSBiYWxhbmNlIGRlbGVnYXRlZCBpcyBsb2NrZWQgZm9yIGFzIGxvbmcgYXMgaXQncyBkZWxlZ2F0ZWQsIGFuZCB0aGVyZWFmdGVyIGZvciB0aGXIdGltZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnZpY3Rpb24ncyBsb2NrIHBlcmlvZC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGVpdGhlcjp0ICAtIGJlIGRlbGVnYXRpbmcgYWxyZWFkeTsgb3JFASAgLSBoYXZlIG5vIHZvdGluZyBhY3Rpdml0eSAoaWYgdGhlcmUgaXMsIHRoZW4gaXQgd2lsbCBuZWVkIHRvIGJlIHJlbW92ZWQgdGhyb3VnaEwgICAgYHJlbW92ZV92b3RlYCkuAEUBLSBgdG9gOiBUaGUgYWNjb3VudCB3aG9zZSB2b3RpbmcgdGhlIGB0YXJnZXRgIGFjY291bnQncyB2b3RpbmcgcG93ZXIgd2lsbCBmb2xsb3cuXQEtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byBkZWxlZ2F0ZS4gVG8gZGVsZWdhdGUgbXVsdGlwbGUgY2xhc3NlcywgbXVsdGlwbGUgY2FsbHOAICB0byB0aGlzIGZ1bmN0aW9uIGFyZSByZXF1aXJlZC5VAS0gYGNvbnZpY3Rpb25gOiBUaGUgY29udmljdGlvbiB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGRlbGVnYXRlZCB2b3Rlcy4gV2hlbiB0aGVBASAgYWNjb3VudCBpcyB1bmRlbGVnYXRlZCwgdGhlIGZ1bmRzIHdpbGwgYmUgbG9ja2VkIGZvciB0aGUgY29ycmVzcG9uZGluZyBwZXJpb2QuYQEtIGBiYWxhbmNlYDogVGhlIGFtb3VudCBvZiB0aGUgYWNjb3VudCdzIGJhbGFuY2UgdG8gYmUgdXNlZCBpbiBkZWxlZ2F0aW5nLiBUaGlzIG11c3Qgbm90tCAgYmUgbW9yZSB0aGFuIHRoZSBhY2NvdW50J3MgY3VycmVudCBiYWxhbmNlLgBIRW1pdHMgYERlbGVnYXRlZGAuACUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBkZWxlZ2F0aW5nIHRvIGhhc00BICB2b3RlZCBvbi4gV2VpZ2h0IGlzIGluaXRpYWxseSBjaGFyZ2VkIGFzIGlmIG1heGltdW0gdm90ZXMsIGJ1dCBpcyByZWZ1bmRlZCBsYXRlci4odW5kZWxlZ2F0ZQQBFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AAjhNAVVuZGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciBvZiB0aGUgc2VuZGluZyBhY2NvdW50IGZvciBhIHBhcnRpY3VsYXIgY2xhc3Mgb2YgcG9sbHMuAF0BVG9rZW5zIG1heSBiZSB1bmxvY2tlZCBmb2xsb3dpbmcgb25jZSBhbiBhbW91bnQgb2YgdGltZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvY2sgcGVyaW9kCQFvZiB0aGUgY29udmljdGlvbiB3aXRoIHdoaWNoIHRoZSBkZWxlZ2F0aW9uIHdhcyBpc3N1ZWQgaGFzIHBhc3NlZC4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmVUY3VycmVudGx5IGRlbGVnYXRpbmcuAPAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byByZW1vdmUgdGhlIGRlbGVnYXRpb24gZnJvbS4AUEVtaXRzIGBVbmRlbGVnYXRlZGAuACUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBkZWxlZ2F0aW5nIHRvIGhhc00BICB2b3RlZCBvbi4gV2VpZ2h0IGlzIGluaXRpYWxseSBjaGFyZ2VkIGFzIGlmIG1heGltdW0gdm90ZXMsIGJ1dCBpcyByZWZ1bmRlZCBsYXRlci4YdW5sb2NrCAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAMkXQFSZW1vdmUgdGhlIGxvY2sgY2F1c2VkIGJ5IHByaW9yIHZvdGluZy9kZWxlZ2F0aW5nIHdoaWNoIGhhcyBleHBpcmVkIHdpdGhpbiBhIHBhcnRpY3VsYXIYY2xhc3MuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgCgLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gdW5sb2NrLrgtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgdGhlIGxvY2sgb24uALxXZWlnaHQ6IGBPKFIpYCB3aXRoIFIgbnVtYmVyIG9mIHZvdGUgb2YgdGFyZ2V0LixyZW1vdmVfdm90ZQgBFGNsYXNzIQUBVE9wdGlvbjxDbGFzc09mPFQsIEk+PgABFGluZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4ABHRkUmVtb3ZlIGEgdm90ZSBmb3IgYSBwb2xsLgAMSWY6cC0gdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgb3JkLSB0aGUgcG9sbCBpcyBvbmdvaW5nLCBvcngtIHRoZSBwb2xsIGhhcyBlbmRlZCBzdWNoIHRoYXT8ICAtIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50IHdhcyBpbiBvcHBvc2l0aW9uIHRvIHRoZSByZXN1bHQ7IG9y1CAgLSB0aGVyZSB3YXMgbm8gY29udmljdGlvbiB0byB0aGUgYWNjb3VudCdzIHZvdGU7IG9yhCAgLSB0aGUgYWNjb3VudCBtYWRlIGEgc3BsaXQgdm90ZV0BLi4udGhlbiB0aGUgdm90ZSBpcyByZW1vdmVkIGNsZWFubHkgYW5kIGEgZm9sbG93aW5nIGNhbGwgdG8gYHVubG9ja2AgbWF5IHJlc3VsdCBpbiBtb3JlWGZ1bmRzIGJlaW5nIGF2YWlsYWJsZS4AkElmLCBob3dldmVyLCB0aGUgcG9sbCBoYXMgZW5kZWQgYW5kOuwtIGl0IGZpbmlzaGVkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQsIGFuZNwtIHRoZSBhY2NvdW50IG1hZGUgYSBzdGFuZGFyZCB2b3RlIHdpdGggY29udmljdGlvbiwgYW5kvC0gdGhlIGxvY2sgcGVyaW9kIG9mIHRoZSBjb252aWN0aW9uIGlzIG5vdCBvdmVyWQEuLi50aGVuIHRoZSBsb2NrIHdpbGwgYmUgYWdncmVnYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGFjY291bnQncyBsb2NrLCB3aGljaCBtYXkgaW52b2x2ZVkBKm92ZXJsb2NraW5nKiAod2hlcmUgdGhlIHR3byBsb2NrcyBhcmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBsb2NrIHRoYXQgaXMgdGhlIG1heGltdW3kb2YgYm90aCB0aGUgYW1vdW50IGxvY2tlZCBhbmQgdGhlIHRpbWUgaXMgaXQgbG9ja2VkIGZvcikuAEkBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduZXIgbXVzdCBoYXZlIGEgdm90ZXByZWdpc3RlcmVkIGZvciBwb2xsIGBpbmRleGAuANwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBwb2xsIG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQuVQEtIGBjbGFzc2A6IE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgZ2l2ZW4gaXQgaW5kaWNhdGVzIHRoZSBjbGFzcyBvZiB0aGUgcG9sbC4gRm9yIHBvbGxz8CAgd2hpY2ggaGF2ZSBmaW5pc2hlZCBvciBhcmUgY2FuY2VsbGVkLCB0aGlzIG11c3QgYmUgYFNvbWVgLgBFAVdlaWdodDogYE8oUiArIGxvZyBSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoYXQgYHRhcmdldGAgaGFzIHZvdGVkIG9uLtggIFdlaWdodCBpcyBjYWxjdWxhdGVkIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZS5EcmVtb3ZlX290aGVyX3ZvdGUMARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAVAZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ATQFJZiB0aGUgYHRhcmdldGAgaXMgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0by0BYHJlbW92ZV92b3RlYC4gSWYgbm90IGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhlIHZvdGUgbXVzdCBoYXZlIGV4cGlyZWQsJQFlaXRoZXIgYmVjYXVzZSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBiZWNhdXNlIHRoZSB2b3RlciBsb3N0IHRoZSBwb2xsIG9ymGJlY2F1c2UgdGhlIGNvbnZpY3Rpb24gcGVyaW9kIGlzIG92ZXIuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBhAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQ7IHRoaXMgYWNjb3VudCBtdXN0IGhhdmUgdm90ZWQgZm9yIHBvbGwoICBgaW5kZXhgLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBwb2xsIG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQuhC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHRoZSBwb2xsLgBFAVdlaWdodDogYE8oUiArIGxvZyBSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoYXQgYHRhcmdldGAgaGFzIHZvdGVkIG9uLtggIFdlaWdodCBpcyBjYWxjdWxhdGVkIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuFQUMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlLEFjY291bnRWb3RlBBxCYWxhbmNlATUBAQwgU3RhbmRhcmQIARB2b3RlGQUBEFZvdGUAARxiYWxhbmNlNQEBHEJhbGFuY2UAAAAUU3BsaXQIAQxheWU1AQEcQmFsYW5jZQABDG5heTUBARxCYWxhbmNlAAEAMFNwbGl0QWJzdGFpbgwBDGF5ZTUBARxCYWxhbmNlAAEMbmF5NQEBHEJhbGFuY2UAARxhYnN0YWluNQEBHEJhbGFuY2UAAgAAGQUMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlEFZvdGUAAAQADAAAAB0FDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcoY29udmljdGlvbihDb252aWN0aW9uAAEcEE5vbmUAAAAgTG9ja2VkMXgAAQAgTG9ja2VkMngAAgAgTG9ja2VkM3gAAwAgTG9ja2VkNHgABAAgTG9ja2VkNXgABQAgTG9ja2VkNngABgAAIQUEGE9wdGlvbgQEVAHtAwEIEE5vbmUAAAAQU29tZQQA7QMAAAEAACUFDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBBDYWxsCARUAARJAAEkGHN1Ym1pdAwBPHByb3Bvc2FsX29yaWdpbvEDAVxCb3g8UGFsbGV0c09yaWdpbk9mPFQ+PgABIHByb3Bvc2FsKQUBTEJvdW5kZWRDYWxsT2Y8VCwgST4AAUBlbmFjdG1lbnRfbW9tZW50MQUBiERpc3BhdGNoVGltZTxCbG9ja051bWJlckZvcjxULCBJPj4AACSwUHJvcG9zZSBhIHJlZmVyZW5kdW0gb24gYSBwcml2aWxlZ2VkIGFjdGlvbi4AWQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTdWJtaXRPcmlnaW5gIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgYFN1Ym1pc3Npb25EZXBvc2l0YCBmdW5kczAgIGF2YWlsYWJsZS4tAS0gYHByb3Bvc2FsX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGV4ZWN1dGVkLmwtIGBwcm9wb3NhbGA6IFRoZSBwcm9wb3NhbC4VAS0gYGVuYWN0bWVudF9tb21lbnRgOiBUaGUgbW9tZW50IHRoYXQgdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBlbmFjdGVkLgBIRW1pdHMgYFN1Ym1pdHRlZGAuWHBsYWNlX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAABIKxQb3N0IHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIHJlZmVyZW5kdW0uADkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGZ1bmRzIGF2YWlsYWJsZSBmb3IgdGhloCAgcmVmZXJlbmR1bSdzIHRyYWNrJ3MgRGVjaXNpb24gRGVwb3NpdC5RAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSBzdWJtaXR0ZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGlzIHlldCB0byBiZSQgIHBvc3RlZC4AeEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRQbGFjZWRgLlxyZWZ1bmRfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAIcKQFSZWZ1bmQgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuTQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCARW1pdHMgYERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkYC4YY2FuY2VsBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAxh0Q2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bS4AnC0gYG9yaWdpbmA6IG11c3QgYmUgdGhlIGBDYW5jZWxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAEhFbWl0cyBgQ2FuY2VsbGVkYC4Qa2lsbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAQY0ENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0gYW5kIHNsYXNoIHRoZSBkZXBvc2l0cy4AlC0gYG9yaWdpbmA6IG11c3QgYmUgdGhlIGBLaWxsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgCQRW1pdHMgYEtpbGxlZGAgYW5kIGBEZXBvc2l0U2xhc2hlZGAuQG51ZGdlX3JlZmVyZW5kdW0EARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAFEB0BQWR2YW5jZSBhIHJlZmVyZW5kdW0gb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLqQtIGBpbmRleGA6IHRoZSByZWZlcmVuZHVtIHRvIGJlIGFkdmFuY2VkLkhvbmVfZmV3ZXJfZGVjaWRpbmcEARR0cmFja+0DATxUcmFja0lkT2Y8VCwgST4ABiQJAUFkdmFuY2UgYSB0cmFjayBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAukC0gYHRyYWNrYDogdGhlIHRyYWNrIHRvIGJlIGFkdmFuY2VkLgBRAUFjdGlvbiBpdGVtIGZvciB3aGVuIHRoZXJlIGlzIG5vdyBvbmUgZmV3ZXIgcmVmZXJlbmR1bSBpbiB0aGUgZGVjaWRpbmcgcGhhc2UgYW5kIHRoZRUBYERlY2lkaW5nQ291bnRgIGlzIG5vdCB5ZXQgdXBkYXRlZC4gVGhpcyBtZWFucyB0aGF0IHdlIHNob3VsZCBlaXRoZXI6JQEtIGJlZ2luIGRlY2lkaW5nIGFub3RoZXIgcmVmZXJlbmR1bSAoYW5kIGxlYXZlIGBEZWNpZGluZ0NvdW50YCBhbG9uZSk7IG9ycC0gZGVjcmVtZW50IGBEZWNpZGluZ0NvdW50YC5kcmVmdW5kX3N1Ym1pc3Npb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAccMQFSZWZ1bmQgdGhlIFN1Ym1pc3Npb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5VAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgU3VibWlzc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AiEVtaXRzIGBTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkYC4wc2V0X21ldGFkYXRhCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAShtYXliZV9oYXNoNQUBPE9wdGlvbjxUOjpIYXNoPgAIHJhTZXQgb3IgY2xlYXIgbWV0YWRhdGEgb2YgYSByZWZlcmVuZHVtLgAsUGFyYW1ldGVyczpFAS0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAgYnkgYSBjcmVhdG9yIG9mIGEgcmVmZXJlbmR1bSBvciBieSBhbnlvbmUgdG8gY2xlYXIgYZAgIG1ldGFkYXRhIG9mIGEgZmluaXNoZWQgcmVmZXJlbmR1bS4NAS0gYGluZGV4YDogIFRoZSBpbmRleCBvZiBhIHJlZmVyZW5kdW0gdG8gc2V0IG9yIGNsZWFyIG1ldGFkYXRhIGZvci5RAS0gYG1heWJlX2hhc2hgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2UuIGBOb25lYCB0byBjbGVhciBhIG1ldGFkYXRhLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMkcHJlaW1hZ2VzHEJvdW5kZWQIBFQBIARIAS0FAQwYTGVnYWN5BAEQaGFzaDwBJEg6Ok91dHB1dAAAABhJbmxpbmUEAGUEATRCb3VuZGVkSW5saW5lAAEAGExvb2t1cAgBEGhhc2g8ASRIOjpPdXRwdXQAAQxsZW44AQx1MzIAAgAALQUMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAADEFEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBzY2hlZHVsZTBEaXNwYXRjaFRpbWUELEJsb2NrTnVtYmVyATgBCAhBdAQAOAEsQmxvY2tOdW1iZXIAAAAUQWZ0ZXIEADgBLEJsb2NrTnVtYmVyAAEAADUFBBhPcHRpb24EBFQBPAEIEE5vbmUAAAAQU29tZQQAPAAAAQAAOQUMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0EENhbGwEBFQAARA4d2hpdGVsaXN0X2NhbGwEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAAAXHJlbW92ZV93aGl0ZWxpc3RlZF9jYWxsBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABAGRkaXNwYXRjaF93aGl0ZWxpc3RlZF9jYWxsDAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABQGNhbGxfZW5jb2RlZF9sZW44AQx1MzIAAUxjYWxsX3dlaWdodF93aXRuZXNzEQEBGFdlaWdodAACAJxkaXNwYXRjaF93aGl0ZWxpc3RlZF9jYWxsX3dpdGhfcHJlaW1hZ2UEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49BQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEsOHByb3Bvc2VfYm91bnR5CAEUdmFsdWVxAQE8QmFsYW5jZU9mPFQsIEk+AAEsZGVzY3JpcHRpb24YARxWZWM8dTg+AAAwVFByb3Bvc2UgYSBuZXcgYm91bnR5LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBUGF5bWVudDogYFRpcFJlcG9ydERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LCBhcyB3ZWxsIGFzUQFgRGF0YURlcG9zaXRQZXJCeXRlYCBmb3IgZWFjaCBieXRlIGluIGByZWFzb25gLiBJdCB3aWxsIGJlIHVucmVzZXJ2ZWQgdXBvbiBhcHByb3ZhbCxkb3Igc2xhc2hlZCB3aGVuIHJlamVjdGVkLgD4LSBgY3VyYXRvcmA6IFRoZSBjdXJhdG9yIGFjY291bnQgd2hvbSB3aWxsIG1hbmFnZSB0aGlzIGJvdW50eS5kLSBgZmVlYDogVGhlIGN1cmF0b3IgZmVlLiUBLSBgdmFsdWVgOiBUaGUgdG90YWwgcGF5bWVudCBhbW91bnQgb2YgdGhpcyBib3VudHksIGN1cmF0b3IgZmVlIGluY2x1ZGVkLsAtIGBkZXNjcmlwdGlvbmA6IFRoZSBkZXNjcmlwdGlvbiBvZiB0aGlzIGJvdW50eS44YXBwcm92ZV9ib3VudHkEASRib3VudHlfaWRgASxCb3VudHlJbmRleAABHF0BQXBwcm92ZSBhIGJvdW50eSBwcm9wb3NhbC4gQXQgYSBsYXRlciB0aW1lLCB0aGUgYm91bnR5IHdpbGwgYmUgZnVuZGVkIGFuZCBiZWNvbWUgYWN0aXZlqGFuZCB0aGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIGJlIHJldHVybmVkLgCkTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlNwZW5kT3JpZ2luYC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjxwcm9wb3NlX2N1cmF0b3IMASRib3VudHlfaWRgASxCb3VudHlJbmRleAABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABDGZlZXEBATxCYWxhbmNlT2Y8VCwgST4AAhiUUHJvcG9zZSBhIGN1cmF0b3IgdG8gYSBmdW5kZWQgYm91bnR5LgCkTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gYFQ6OlNwZW5kT3JpZ2luYC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLkB1bmFzc2lnbl9jdXJhdG9yBAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAA0R8VW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgYm91bnR5LgAdAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBhIHNpZ25lZCBvcmlnaW4uAD0BSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gLCB3ZSBhc3N1bWUgdGhhdCB0aGUgY3VyYXRvciBpczEBbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgd2Ugd2lsbCBzbGFzaCB0aGUgY3VyYXRvciB3aGVuIHBvc3NpYmxlLgBhAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGN1cmF0b3IsIHdlIHRha2UgdGhpcyBhcyBhIHNpZ24gdGhleSBhcmUgdW5hYmxlIHRvIGRvIHRoZWlyIGpvYiBhbmRdAXRoZXkgd2lsbGluZ2x5IGdpdmUgdXAuIFdlIGNvdWxkIHNsYXNoIHRoZW0sIGJ1dCBmb3Igbm93IHdlIGFsbG93IHRoZW0gdG8gcmVjb3ZlciB0aGVpcjUBZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWYgaXQgaXMgYWJ1c2VkLikAXQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWYgYW5kIG9ubHkgaWYgdGhlIGN1cmF0b3IgaXMgImluYWN0aXZlIi4gVGhpcyBhbGxvd3NhAWFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjdXJhdG9yIGlzIG5vdCBkb2luZyB0aGVpciBkdWUgZGlsaWdlbmNlLCBhbmQ5AXdlIHNob3VsZCBwaWNrIGEgbmV3IGN1cmF0b3IuIEluIHRoaXMgY2FzZSB0aGUgY3VyYXRvciBzaG91bGQgYWxzbyBiZSBzbGFzaGVkLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuOGFjY2VwdF9jdXJhdG9yBAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABByUQWNjZXB0IHRoZSBjdXJhdG9yIHJvbGUgZm9yIGEgYm91bnR5LikBQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSBjdXJhdG9yIGFuZCByZWZ1bmQgdXBvbiBzdWNjZXNzZnVsIHBheW91dC4AkE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBjdXJhdG9yLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMGF3YXJkX2JvdW50eQgBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAFKFkBQXdhcmQgYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkgYWNjb3VudC4gVGhlIGJlbmVmaWNpYXJ5IHdpbGwgYmUgYWJsZSB0byBjbGFpbSB0aGUgZnVuZHM4YWZ0ZXIgYSBkZWxheS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AiC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBhd2FyZC4ZAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGJlbmVmaWNpYXJ5IGFjY291bnQgd2hvbSB3aWxsIHJlY2VpdmUgdGhlIHBheW91dC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBjbGFpbV9ib3VudHkEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAGIOxDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBiZW5lZmljaWFyeSBvZiB0aGlzIGJvdW50eS4AiC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBjbGFpbS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBjbG9zZV9ib3VudHkEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAHJDkBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGJvdW50eS4gQWxsIHRoZSBmdW5kcyB3aWxsIGJlIHNlbnQgdG8gdHJlYXN1cnkgYW5kzHRoZSBjdXJhdG9yIGRlcG9zaXQgd2lsbCBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgDIT25seSBgVDo6UmVqZWN0T3JpZ2luYCBpcyBhYmxlIHRvIGNhbmNlbCBhIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBjYW5jZWwuADQjIyBDb21wbGV4aXR5HC0gTygxKS5QZXh0ZW5kX2JvdW50eV9leHBpcnkIASRib3VudHlfaWRgASxCb3VudHlJbmRleAABGHJlbWFyaxgBHFZlYzx1OD4ACCSsRXh0ZW5kIHRoZSBleHBpcnkgdGltZSBvZiBhbiBhY3RpdmUgYm91bnR5LgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXMgYm91bnR5LgCMLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGV4dGVuZC6MLSBgcmVtYXJrYDogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLmxhcHByb3ZlX2JvdW50eV93aXRoX2N1cmF0b3IMASRib3VudHlfaWRgASxCb3VudHlJbmRleAABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABDGZlZXEBATxCYWxhbmNlT2Y8VCwgST4ACSzUQXBwcm92ZSBib3VudHJ5IGFuZCBwcm9wb3NlIGEgY3VyYXRvciBzaW11bHRhbmVvdXNseS5VAVRoaXMgY2FsbCBpcyBhIHNob3J0Y3V0IHRvIGNhbGxpbmcgYGFwcHJvdmVfYm91bnR5YCBhbmQgYHByb3Bvc2VfY3VyYXRvcmAgc2VwYXJhdGVseS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuAJAtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXBwcm92ZS74LSBgY3VyYXRvcmA6IFRoZSBjdXJhdG9yIGFjY291bnQgd2hvbSB3aWxsIG1hbmFnZSB0aGlzIGJvdW50eS5kLSBgZmVlYDogVGhlIGN1cmF0b3IgZmVlLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMHBva2VfZGVwb3NpdAQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAo85FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGNyZWF0aW5nIGEgYm91bnR5IHByb3Bvc2FsLgD0VGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byB1cGRhdGUgdGhlaXIgcmVzZXJ2ZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBib3VudHlfaWRgOiBUaGUgYm91bnR5IGlkIGZvciB3aGljaCB0byBhZGp1c3QgdGhlIGRlcG9zaXQuADkBSWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZCwgdGhlIGRpZmZlcmVuY2Ugd2lsbCBiZSByZXNlcnZlZC91bnJlc2VydmVkIGZyb20gdGhlTHByb3Bvc2VyJ3MgYWNjb3VudC4AKQFUaGUgdHJhbnNhY3Rpb24gaXMgbWFkZSBmcmVlIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQgYW5kIHBhaWQgb3RoZXJ3aXNlLgC8RW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuQQUMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQQQ2FsbAQEVAABHEBhZGRfY2hpbGRfYm91bnR5DAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEUdmFsdWVxAQEwQmFsYW5jZU9mPFQ+AAEsZGVzY3JpcHRpb24YARxWZWM8dTg+AABMXEFkZCBhIG5ldyBjaGlsZC1ib3VudHkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiBwYXJlbnTcYm91bnR5IGFuZCB0aGUgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluICJhY3RpdmUiIHN0YXRlLgAFAUNoaWxkLWJvdW50eSBnZXRzIGFkZGVkIHN1Y2Nlc3NmdWxseSAmIGZ1bmQgZ2V0cyB0cmFuc2ZlcnJlZCBmcm9tCQFwYXJlbnQgYm91bnR5IHRvIGNoaWxkLWJvdW50eSBhY2NvdW50LCBpZiBwYXJlbnQgYm91bnR5IGhhcyBlbm91Z2hsZnVuZHMsIGVsc2UgdGhlIGNhbGwgZmFpbHMuAA0BVXBwZXIgYm91bmQgdG8gbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlICBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZahhZGRlZCBhcmUgbWFuYWdlZCB2aWEgcnVudGltZSB0cmFpdCBjb25maWeYW2BDb25maWc6Ok1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgXS4AAQFJZiB0aGUgY2FsbCBpcyBzdWNjZXNzLCB0aGUgc3RhdHVzIG9mIGNoaWxkLWJvdW50eSBpcyB1cGRhdGVkIHRvICJBZGRlZCIuAE0BLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkgZm9yIHdoaWNoIGNoaWxkLWJvdW50eSBpcyBiZWluZyBhZGRlZC6wLSBgdmFsdWVgOiBWYWx1ZSBmb3IgZXhlY3V0aW5nIHRoZSBwcm9wb3NhbC7cLSBgZGVzY3JpcHRpb25gOiBUZXh0IGRlc2NyaXB0aW9uIGZvciB0aGUgY2hpbGQtYm91bnR5Ljxwcm9wb3NlX2N1cmF0b3IQAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABDGZlZXEBATBCYWxhbmNlT2Y8VD4AATygUHJvcG9zZSBjdXJhdG9yIGZvciBmdW5kZWQgY2hpbGQtYm91bnR5LgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGN1cmF0b3Igb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJBZGRlZCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZSBjYWxsLiBBbmQFAXN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiQ3VyYXRvclByb3Bvc2VkIiBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLuwtIGBmZWVgOiBwYXltZW50IGZlZSB0byBjaGlsZC1ib3VudHkgY3VyYXRvciBmb3IgZXhlY3V0aW9uLjhhY2NlcHRfY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAJMtEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciB0aGUgY2hpbGQtYm91bnR5LgD0VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpczRjaGlsZC1ib3VudHkuAOxBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBjdXJhdG9yIGFuZCByZWZ1bmQgdXBvbohzdWNjZXNzZnVsIHBheW91dCBvciBjYW5jZWxsYXRpb24uAPhGZWUgZm9yIGN1cmF0b3IgaXMgZGVkdWN0ZWQgZnJvbSBjdXJhdG9yIGZlZSBvZiBwYXJlbnQgYm91bnR5LgARAVBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvFHdvcmsuAA0BQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gIkN1cmF0b3JQcm9wb3NlZCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZQkBY2FsbC4gQW5kIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiQWN0aXZlIiBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuQHVuYXNzaWduX2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAADiJRVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC1ib3VudHkuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGNhbiBiZSBlaXRoZXIgYFJlamVjdE9yaWdpbmAsIG9y3HRoZSBjdXJhdG9yIG9mIHRoZSBwYXJlbnQgYm91bnR5LCBvciBhbnkgc2lnbmVkIG9yaWdpbi4A+EZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luIGFuZCB0aGUgY2hpbGQtYm91bnR5AQFjdXJhdG9yLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjYWxsIHRvCQF3b3JrLiBXZSBhbGxvdyBjaGlsZC1ib3VudHkgY3VyYXRvciBhbmQgVDo6UmVqZWN0T3JpZ2luIHRvIGV4ZWN1dGXIdGhpcyBjYWxsIGlycmVzcGVjdGl2ZSBvZiB0aGUgcGFyZW50IGJvdW50eSBzdGF0ZS4A3ElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUFAXBhcmVudCBib3VudHkgY3VyYXRvciwgd2UgYXNzdW1lIHRoYXQgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGlzDQFtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LCBjaGlsZC1ib3VudHkgY3VyYXRvciBkZXBvc2l0IGlzIHNsYXNoZWQuAAUBSWYgdGhlIG9yaWdpbiBpcyB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IsIHdlIHRha2UgdGhpcyBhcyBhIHNpZ24JAXRoYXQgdGhleSBhcmUgdW5hYmxlIHRvIGRvIHRoZWlyIGpvYiwgYW5kIGFyZSB3aWxsaW5nbHkgZ2l2aW5nIHVwLgkBV2UgY291bGQgc2xhc2ggdGhlIGRlcG9zaXQsIGJ1dCBmb3Igbm93IHdlIGFsbG93IHRoZW0gdG8gdW5yZXNlcnZlEQF0aGVpciBkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZjhpdCBpcyBhYnVzZWQuKQAFAUZpbmFsbHksIHRoZSBvcmlnaW4gY2FuIGJlIGFueW9uZSBpZmYgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGlzCQEiaW5hY3RpdmUiLiBFeHBpcnkgdXBkYXRlIGR1ZSBvZiBwYXJlbnQgYm91bnR5IGlzIHVzZWQgdG8gZXN0aW1hdGWcaW5hY3RpdmUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGN1cmF0b3IuAA0BVGhpcyBhbGxvd3MgYW55b25lIGluIHRoZSBjb21tdW5pdHkgdG8gY2FsbCBvdXQgdGhhdCBhIGNoaWxkLWJvdW50eQkBY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kIHdlIHNob3VsZCBwaWNrIGEgbmV3+G9uZS4gSW4gdGhpcyBjYXNlIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBkZXBvc2l0IGlzIHNsYXNoZWQuAAEBU3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvIEFkZGVkIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY2FsbCxjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS5IYXdhcmRfY2hpbGRfYm91bnR5DAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAREkEF3YXJkIGNoaWxkLWJvdW50eSB0byBhIGJlbmVmaWNpYXJ5LgD4VGhlIGJlbmVmaWNpYXJ5IHdpbGwgYmUgYWJsZSB0byBjbGFpbSB0aGUgZnVuZHMgYWZ0ZXIgYSBkZWxheS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBwYXJlbnQgY3VyYXRvciBvcnRjdXJhdG9yIG9mIHRoaXMgY2hpbGQtYm91bnR5LgARAVBhcmVudCBib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvFHdvcmsuAAkBQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kEQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIlBlbmRpbmdQYXlvdXQiIG9uIHN1Y2Nlc3NmdWwgY2FsbCxjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS6ULSBgYmVuZWZpY2lhcnlgOiBCZW5lZmljaWFyeSBhY2NvdW50LkhjbGFpbV9jaGlsZF9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAAFQAUBQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgY2hpbGQtYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtYXkgYmUgYW55IHNpZ25lZCBvcmlnaW4uAAUBQ2FsbCB3b3JrcyBpbmRlcGVuZGVudCBvZiBwYXJlbnQgYm91bnR5IHN0YXRlLCBObyBuZWVkIGZvciBwYXJlbnR0Ym91bnR5IHRvIGJlIGluIGFjdGl2ZSBzdGF0ZS4AEQFUaGUgQmVuZWZpY2lhcnkgaXMgcGFpZCBvdXQgd2l0aCBhZ3JlZWQgYm91bnR5IHZhbHVlLiBDdXJhdG9yIGZlZSBpc5RwYWlkICYgY3VyYXRvciBkZXBvc2l0IGlzIHVucmVzZXJ2ZWQuAAUBQ2hpbGQtYm91bnR5IG11c3QgYmUgaW4gIlBlbmRpbmdQYXlvdXQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGX8Y2FsbC4gQW5kIGluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9ubHN1Y2Nlc3NmdWwgY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS5IY2xvc2VfY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABlgRAUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBjaGlsZC1ib3VudHkuIENoaWxkLWJvdW50eSBhY2NvdW50IGZ1bmRzCQFhcmUgdHJhbnNmZXJyZWQgdG8gcGFyZW50IGJvdW50eSBhY2NvdW50LiBUaGUgY2hpbGQtYm91bnR5IGN1cmF0b3KYZGVwb3NpdCBtYXkgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXIgcGFyZW50IGN1cmF0b3Igb3JIYFQ6OlJlamVjdE9yaWdpbmAuAPBJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBBY3RpdmVgLCBjdXJhdG9yIGRlcG9zaXQgaXMsdW5yZXNlcnZlZC4A9ElmIHRoZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgYFBlbmRpbmdQYXlvdXRgLCBjYWxsIGZhaWxzICZ4cmV0dXJucyBgUGVuZGluZ1BheW91dGAgZXJyb3IuAA0BRm9yIHRoZSBvcmlnaW4gb3RoZXIgdGhhbiBUOjpSZWplY3RPcmlnaW4sIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbvBhY3RpdmUgc3RhdGUsIGZvciB0aGlzIGNoaWxkLWJvdW50eSBjYWxsIHRvIHdvcmsuIEZvciBvcmlnaW6QVDo6UmVqZWN0T3JpZ2luIGV4ZWN1dGlvbiBpcyBmb3JjZWQuAAEBSW5zdGFuY2Ugb2YgY2hpbGQtYm91bnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhdGUgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0EENhbGwEBFQAAQwYY3JlYXRlCAEoYXNzZXRfa2luZAkFAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGVJBQEkRml4ZWRVMTI4AAAQDQFJbml0aWFsaXplIGEgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRh1cGRhdGUIAShhc3NldF9raW5kCQUBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZUkFASRGaXhlZFUxMjgAARAFAVVwZGF0ZSB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRhyZW1vdmUEAShhc3NldF9raW5kCQUBREJveDxUOjpBc3NldEtpbmQ+AAIQJQFSZW1vdmUgYW4gZXhpc3RpbmcgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKQQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5JBQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCRGaXhlZFUxMjgAAAQANQEBEHUxMjgAAE0FDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0EENhbGwIBFQABEkAASgsZnVuZF9ib3VudHkQAShhc3NldF9raW5kCQUBREJveDxUOjpBc3NldEtpbmQ+AAEUdmFsdWVxAQEoVDo6QmFsYW5jZQABHGN1cmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG1ldGFkYXRhPAEcVDo6SGFzaAAAaCkBRnVuZCBhIG5ldyBib3VudHkgd2l0aCBhIHByb3Bvc2VkIGN1cmF0b3IsIGluaXRpYXRpbmcgdGhlIHBheW1lbnQgZnJvbSB0aGW4ZnVuZGluZyBzb3VyY2UgdG8gdGhlIGJvdW50eSBhY2NvdW50L2xvY2F0aW9uLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RBAXRoZSBib3VudHkgdmFsdWUgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIHVzaW5nIFtgQ29uZmlnOjpCYWxhbmNlQ29udmVydGVyYF0uNQFUaGUgY29udmVydGVkIG5hdGl2ZSBhbW91bnQgaXMgdmFsaWRhdGVkIGFnYWluc3QgdGhlIG1heGltdW0gc3BlbmRhYmxlIGFtb3VudJByZXR1cm5lZCBieSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXS4AKCMjIERldGFpbHMAIQEtIFRoZSBgU3BlbmRPcmlnaW5gIG11c3QgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIGZ1bmQgdGhlIGJvdW50eS5ZAS0gVGhlIGJvdW50eSBgdmFsdWVgIChpbiBhc3NldCBiYWxhbmNlKSBpcyBjb252ZXJ0ZWQgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHZhbGlkYXRpb24uKQEtIEluIGNhc2Ugb2YgYSBmdW5kaW5nIGZhaWx1cmUsIHRoZSBib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnMZAS0gYGFzc2V0X2tpbmRgOiBBbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmljIGFzc2V0IGNsYXNzIHRvIGJlIGZ1bmRlZC7MLSBgdmFsdWVgOiBUaGUgdG90YWwgcGF5bWVudCBhbW91bnQgb2YgdGhpcyBib3VudHkunC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGJvdW50eSBjdXJhdG9yLi0BLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBib3VudHkgbWV0YWRhdGEuACQjIyBFdmVudHMABQFFbWl0cyBbYEV2ZW50OjpCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLkRmdW5kX2NoaWxkX2JvdW50eRABQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABFHZhbHVlcQEBKFQ6OkJhbGFuY2UAASBtZXRhZGF0YTwBHFQ6Okhhc2gAARxjdXJhdG9yXQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AAWBdAUZ1bmQgYSBuZXcgY2hpbGQtYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhlIHBhcmVudLBib3VudHkgdG8gdGhlIGNoaWxkLWJvdW50eSBhY2NvdW50L2xvY2F0aW9uLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAJRNdXN0IGJlIHNpZ25lZCBieSB0aGUgcGFyZW50IGN1cmF0b3IuACgjIyBEZXRhaWxzAEUBLSBJZiBgY3VyYXRvcmAgaXMgbm90IHByb3ZpZGVkLCB0aGUgY2hpbGQtYm91bnR5IHdpbGwgZGVmYXVsdCB0byB1c2luZyB0aGUgcGFyZW50NQEgIGN1cmF0b3IsIGFsbG93aW5nIHRoZSBwYXJlbnQgY3VyYXRvciB0byBpbW1lZGlhdGVseSBjYWxsIGBjaGVja19zdGF0dXNgIGFuZLAgIGBhd2FyZF9ib3VudHlgIHRvIHBheW91dCB0aGUgY2hpbGQtYm91bnR5LkUBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlAQEgIGBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVyc00BLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkgZm9yIHdoaWNoIGNoaWxkLWJvdW50eSBpcyBiZWluZyBhZGRlZC7MLSBgdmFsdWVgOiBUaGUgcGF5bWVudCBhbW91bnQgb2YgdGhpcyBjaGlsZC1ib3VudHkuRQEtIGBtZXRhZGF0YWA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZSB3aXRoIGNoaWxkLWJvdW50eSBtZXRhZGF0YS60LSBgY3VyYXRvcmA6IEFkZHJlc3Mgb2YgY2hpbGQtYm91bnR5IGN1cmF0b3IuACQjIyBFdmVudHMAGQFFbWl0cyBbYEV2ZW50OjpDaGlsZEJvdW50eUNyZWF0ZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuPHByb3Bvc2VfY3VyYXRvcgwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAlQxAVByb3Bvc2UgYSBuZXcgY3VyYXRvciBmb3IgYSBjaGlsZC0vYm91bnR5IGFmdGVyIHRoZSBwcmV2aW91cyB3YXMgdW5hc3NpZ25lZC4ASCMjIERpc3BhdGNoIE9yaWdpbgBBAU11c3QgYmUgc2lnbmVkIGJ5IGBUOjpTcGVuZE9yaWdpbmAgZm9yIGEgYm91bnR5LCBvciBieSB0aGUgcGFyZW50IGJvdW50eSBjdXJhdG9yTGZvciBhIGNoaWxkLWJvdW50eS4AKCMjIERldGFpbHMA9C0gVGhlIGNoaWxkLS9ib3VudHkgbXVzdCBiZSBpbiB0aGUgYEN1cmF0b3JVbmFzc2lnbmVkYCBzdGF0ZS5FAS0gRm9yIGEgYm91bnR5LCB0aGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBwcm9wb3NlIHRoZSggIGN1cmF0b3IuADgjIyMgUGFyYW1ldGVyc5gtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuzC0gYGN1cmF0b3JgOiBBY2NvdW50IHRvIGJlIHByb3Bvc2VkIGFzIHRoZSBjdXJhdG9yLgAkIyMgRXZlbnRzALxFbWl0cyBbYEV2ZW50OjpDdXJhdG9yUHJvcG9zZWRgXSBpZiBzdWNjZXNzZnVsLjhhY2NlcHRfY3VyYXRvcggBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AA0ywQWNjZXB0IHRoZSBjdXJhdG9yIHJvbGUgZm9yIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgCcTXVzdCBiZSBzaWduZWQgYnkgdGhlIHByb3Bvc2VkIGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBGdW5kZWRgIHN0YXRlLvAtIFRoZSBjdXJhdG9yIG11c3QgYWNjZXB0IHRoZSByb2xlIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5JAS0gQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kZWQgdXBvbiBzdWNjZXNzZnVsIHBheW91dC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAyEVtaXRzIFtgRXZlbnQ6OkJvdW50eUJlY2FtZUFjdGl2ZWBdIGlmIHN1Y2Nlc3NmdWwuQHVuYXNzaWduX2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AARkmFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAYQEtIElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgb3IgYnkgdGhlIHBhcmVudCBjdXJhdG9yIGluIHRoZSBjYXNlWQEgIG9mIGEgY2hpbGQgYm91bnR5LCB3ZSBhc3N1bWUgdGhhdCB0aGUgY3VyYXRvciBpcyBtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LKggIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS5dAS0gSWYgdGhlIG9yaWdpbiBpcyB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0b1EBICBkbyB0aGVpciBqb2IgYW5kIHRoZXkgd2lsbGluZ2x5IGdpdmUgdXAuIFdlIGNvdWxkIHNsYXNoIHRoZW0sIGJ1dCBmb3Igbm93IHdlIGFsbG93WQEgIHRoZW0gdG8gcmVjb3ZlciB0aGVpciBkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZkAgIGl0IGlzIGFidXNlZCkuPQEtIElmIHN1Y2Nlc3NmdWwsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHRvIGBDdXJhdG9yVW5hc3NpZ25lZGAuIFRvRQEgIHJlYWN0aXZhdGUgdGhlIGJvdW50eSwgYSBuZXcgY3VyYXRvciBtdXN0IGJlIHByb3Bvc2VkIGFuZCBtdXN0IGFjY2VwdCB0aGUgcm9sZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAxEVtaXRzIFtgRXZlbnQ6OkN1cmF0b3JVbmFzc2lnbmVkYF0gaWYgc3VjY2Vzc2Z1bC4wYXdhcmRfYm91bnR5DAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgABLGJlbmVmaWNpYXJ5DQUBZEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4ABWDsQXdhcmRzIHRoZSBjaGlsZC0vYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbiwdAWluaXRpYXRpbmcgdGhlIHBheW91dCBwYXltZW50cyB0byBib3RoIHRoZSBiZW5lZmljaWFyeSBhbmQgdGhlIGN1cmF0b3IuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAyC0gVGhlIGNoaWxkLS9ib3VudHkgbXVzdCBiZSBpbiB0aGUgYEFjdGl2ZWAgc3RhdGUuPQEtIGlmIGF3YXJkaW5nIGEgcGFyZW50IGJvdW50eSBpdCBtdXN0IG5vdCBoYXZlIGFjdGl2ZSBvciBmdW5kZWQgY2hpbGQgYm91bnRpZXMuWQEtIEluaXRpYXRlcyBwYXlvdXQgcGF5bWVudCBmcm9tIHRoZSBjaGlsZC0vYm91bnR5IHRvIHRoZSBiZW5lZmljaWFyeSBhY2NvdW50L2xvY2F0aW9uLiUBLSBJZiBzdWNjZXNzZnVsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHRvIGBQYXlvdXRBdHRlbXB0ZWRgLjEBLSBJbiBjYXNlIG9mIGEgcGF5b3V0IGZhaWx1cmUsIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aPhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4JAS0gYGJlbmVmaWNpYXJ5YDogQWNjb3VudC9sb2NhdGlvbiB0byBiZSBhd2FyZGVkIHRoZSBjaGlsZC0vYm91bnR5LgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5QXdhcmRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2xvc2VfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAGXGEBQ2FuY2VsIGFuIGFjdGl2ZSBjaGlsZC0vYm91bnR5LiBBIHBheW1lbnQgdG8gc2VuZCBhbGwgdGhlIGZ1bmRzIHRvIHRoZSBmdW5kaW5nIHNvdXJjZSBpczBpbml0aWFsaXplZC4ASCMjIERpc3BhdGNoIE9yaWdpbgBRAVRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCBvciB0aGUgcGFyZW50IGJvdW50eSBjdXJhdG9yLgAoIyMgRGV0YWlscwA9AS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGBGdW5kZWRgIHN0YXRlLCBhIHJlZnVuZCBwYXltZW50IGlzIGluaXRpYXRlZC5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLCBhIHJlZnVuZCBwYXltZW50IGlzIGluaXRpYXRlZCBhbmQgdGhlEQEgIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIHVwZGF0ZWQgd2l0aCB0aGUgY3VyYXRvciBhY2NvdW50L2xvY2F0aW9uLkEBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBpcyBpbiB0aGUgZnVuZGluZyBvciBwYXlvdXQgcGhhc2UsIGl0IGNhbm5vdCBiZSBjYW5jZWxlZC5BAS0gSW4gY2FzZSBvZiBhIHJlZnVuZCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhl+GBjaGVja19zdGF0dXNgIGNhbGwgYmVmb3JlIHJldHJ5aW5nIHdpdGggYHJldHJ5X3BheW1lbnRgIGNhbGwuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAAkBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q2FuY2VsZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AB2TcQ2hlY2sgYW5kIHVwZGF0ZSB0aGUgcGF5bWVudCBzdGF0dXMgb2YgYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAVQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgRnVuZGluZ0F0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgZnVuZGluZyBwYXltZW50DQEgIGhhcyBzdWNjZWVkZWQuIElmIHN1Y2Nlc3NmdWwsIHRoZSBib3VudHkgc3RhdHVzIGJlY29tZXMgYEZ1bmRlZGAuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUmVmdW5kQXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS5dAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIHBheW91dCBwYXltZW50IGhhcxkBICBzdWNjZWVkZWQuIElmIHN1Y2Nlc3NmdWwsIHRoZSBjaGlsZC0vYm91bnR5IGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwBdAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUJlY2FtZUFjdGl2ZWBdIGlmIHRoZSBjaGlsZC9ib3VudHkgc3RhdHVzIHRyYW5zaXRpb25zIHRvIGBBY3RpdmVgLiUBRW1pdHMgW2BFdmVudDo6Qm91bnR5UmVmdW5kUHJvY2Vzc2VkYF0gaWYgdGhlIHJlZnVuZCBwYXltZW50IGhhcyBzdWNjZWVkLiUBRW1pdHMgW2BFdmVudDo6Qm91bnR5UGF5b3V0UHJvY2Vzc2VkYF0gaWYgdGhlIHBheW91dCBwYXltZW50IGhhcyBzdWNjZWVkLlUBRW1pdHMgW2BFdmVudDo6UGF5bWVudEZhaWxlZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3VyIHBheW1lbnQgcGF5bWVudCBoYXMgZmFpbGVkLjRyZXRyeV9wYXltZW50CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAIWLRSZXRyeSB0aGUgZnVuZGluZywgcmVmdW5kIG9yIHBheW91dCBwYXltZW50cy4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBmdW5kaW5nIHBheW1lbnQgZnJvbdAgIGZ1bmRpbmcgc291cmNlIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24uWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUmVmdW5kQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgcmVmdW5kIHBheW1lbnQgZnJvbewgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGZ1bmRpbmcgc291cmNlLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFBheW91dEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHBheW91dCBwYXltZW50IGZyb20lASAgdGhlIGNoaWxkLS9ib3VudHkgYWNjb3VudC9sb2NhdGlvbiB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMANQFFbWl0cyBbYEV2ZW50OjpQYWlkYF0gaWYgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudCBoYXMgaW5pdGlhdGVkLjhpbmNyZWFzZV92YWx1ZQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABGGFtb3VudHEBAShUOjpCYWxhbmNlAAl4zEluY3JlYXNlIHRoZSB2YWx1ZSBvZiBhbiBhY3RpdmUgYm91bnR5IGJ5IGBhbW91bnRgLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAJRNdXN0IGJlIHNpZ25lZCBieSB0aGUgYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAKwtIFRoZSBib3VudHkgbXVzdCBiZSBpbiB0aGUgYEFjdGl2ZWAgc3RhdGUuTQEtIFJhaXNlcyB0aGUgcmVjb3JkZWQgYHZhbHVlYCBieSBgYW1vdW50YC4gVGhpcyBpcyB1c2VkIHRvIHJlZ2lzdGVyIGZ1bmRzIHRoYXQgd2VyZV0BICB0cmFuc2ZlcnJlZCBpbnRvIHRoZSBib3VudHkgYWNjb3VudCBvdXQtb2YtYmFuZCAoZS5nLiByZWN1cnJpbmcgZXh0ZXJuYWwgdG9wLXVwcyksIHNvVQEgIHRoZXkgYmVjb21lIGF2YWlsYWJsZSB0byBhd2FyZCBvciB0byBhbGxvY2F0ZSB0byBjaGlsZCBib3VudGllcy4gSXQgbXVzdCBiZSBncmVhdGVyJCAgdGhhbiAwLlUBLSBUaGUgY3VyYXRvciBkZXBvc2l0IGlzIHJlLWV2YWx1YXRlZCBmb3IgdGhlIG5ldyB2YWx1ZSBhbmQgYW55IGFkZGl0aW9uYWwgZGVwb3NpdCBpc3QgIGNvbGxlY3RlZCBmcm9tIHRoZSBjdXJhdG9yLlEBLSBUaGUgdmFsdWUgY2FuIG9ubHkgYmUgaW5jcmVhc2VkLCBuZXZlciBkZWNyZWFzZWQsIHNvIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgc3VtIG9mCQEgIGNoaWxkLWJvdW50eSB2YWx1ZXMgbmV2ZXIgZXhjZWVkcyB0aGUgcGFyZW50IHZhbHVlIGlzIHByZXNlcnZlZC5FAS0gVGhpcyBjYWxsIGRvZXMgKipub3QqKiBjaGVjayB0aGF0IHRoZSBib3VudHkgYWNjb3VudCBob2xkcyBgbmV3X3ZhbHVlYDsgaXQgb25seU0BICB1cGRhdGVzIHRoZSByZWNvcmRlZCB2YWx1ZS4gUGF5b3V0cyBzdGF5IGJvdW5kZWQgYnkgdGhlIGFjY291bnQncyByZWFsIGJhbGFuY2UgYXRVASAgc2V0dGxlbWVudCwgc28gaW5jcmVhc2luZyB0aGUgdmFsdWUgYmV5b25kIHRoZSBhdmFpbGFibGUgZnVuZHMgc2ltcGx5IG1ha2VzIGEgbGF0ZXLIICBwYXlvdXQgZmFpbCDigJQgbm8gZnVuZHMgYXJlIG1vdmVkIGJ5IHRoaXMgY2FsbC74LSBPbmx5IGEgcGFyZW50IGJvdW50eSdzIHZhbHVlIGNhbiBiZSBpbmNyZWFzZWQgdmlhIHRoaXMgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzDQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgdGhlIGJvdW50eSB3aG9zZSB2YWx1ZSBpcyBpbmNyZWFzZWQuyC0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYWRkIHRvIHRoZSBib3VudHkgdmFsdWUuACQjIyBFdmVudHMA0EVtaXRzIFtgRXZlbnQ6OkJvdW50eVZhbHVlSW5jcmVhc2VkYF0gaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQUMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zVQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwHdAwRWAVkFBFMAAAQAXQUBOEJUcmVlTWFwPEssIFY+AABZBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAABdBQQgQlRyZWVNYXAIBEsB3QMEVgFZBQAEAGEFAAAAYQUAAAJlBQBlBQAABAjdA1kFAGkFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZ20FAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0c3EFATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2t1BQFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzcQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcHkFATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGR5BQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tBQQYT3B0aW9uBARUAXEFAQgQTm9uZQAAABBTb21lBABxBQAAAQAAcQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAAdQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9weQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZHkFATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAAB5BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAfQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAfQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACBBQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudHEBATBCYWxhbmNlT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAABARQFTdGFrZSBmdW5kcyB3aXRoIGEgcG9vbC4gVGhlIGFtb3VudCB0byBib25kIGlzIGRlbGVnYXRlZCAob3IgdHJhbnNmZXJyZWQgYmFzZWQgb25NAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXSkgZnJvbSB0aGUgbWVtYmVyIHRvIHRoZSBwb29sIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5aGluY3JlYXNlcyB0aGUgcG9vbCdzIGJvbmQuACkBVGhlIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgdGhlIGFtb3VudCB0byB0aGUgcG9vbCBhY2NvdW50IGlzIGRldGVybWluZWQgYnkBAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXS4gSWYgdGhlIHBvb2wgaXMgY29uZmlndXJlZCB0byB1c2UxAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0sIHRoZSBmdW5kcyByZW1haW4gaW4gdGhlIGFjY291bnQgb2YxAXRoZSBgb3JpZ2luYCwgd2hpbGUgdGhlIHBvb2wgZ2FpbnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGVzZSBmdW5kcyBmb3Igc3Rha2luZy4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmGFBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUB1bmJvbmRpbmdfcG9pbnRzcQEBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAFWFUBV2l0aGRyYXcgdW5ib25kZWQgZnVuZHMgZnJvbSBgbWVtYmVyX2FjY291bnRgLiBJZiBubyBib25kZWQgZnVuZHMgY2FuIGJlIHVuYm9uZGVkLCBhbkhlcnJvciBpcyByZXR1cm5lZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4AqCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaAAJASogVGhlIHBvb2wgaXMgaW4gZGVzdHJveSBtb2RlIGFuZCB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgZGVwb3NpdG9yLjEBKiBUaGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IgYW5kIHRoZXkgYXJlIHRoZSBvbmx5IG1lbWJlciBpbiB0aGUgc3ViIHBvb2xzLg0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLgCYIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2gA6CogVGhlIGNhbGxlciBpcyB0aGUgdGFyZ2V0IGFuZCB0aGV5IGFyZSBub3QgdGhlIGRlcG9zaXRvci4AGCMgTm90ZQD0LSBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIHdpbGwgYmUgZGVzdHJveWVkLmEBLSBJZiB0aGUgcG9vbCBoYXMgYW55IHBlbmRpbmcgc2xhc2gsIHdlIGFsc28gdHJ5IHRvIHNsYXNoIHRoZSBtZW1iZXIgYmVmb3JlIGxldHRpbmcgdGhlbV0Bd2l0aGRyYXcuIFRoaXMgY2FsY3VsYXRpb24gYWRkcyBzb21lIHdlaWdodCBvdmVyaGVhZCBhbmQgaXMgb25seSBkZWZlbnNpdmUuIEluIHJlYWxpdHksVQFwb29sIHNsYXNoZXMgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHZpYSBwZXJtaXNzaW9ubGVzcyBbYENhbGw6OmFwcGx5X3NsYXNoYF0uGGNyZWF0ZRABGGFtb3VudHEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnRxAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAAcY7ENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wgd2l0aCBhIHByZXZpb3VzbHkgdXNlZCBwb29sIGlkACwjIEFyZ3VtZW50cwCYc2FtZSBhcyBgY3JlYXRlYCB3aXRoIHRoZSBpbmNsdXNpb24gb2Z4KiBgcG9vbF9pZGAgLSBgQSB2YWxpZCBQb29sSWQuIG5vbWluYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABKHZhbGlkYXRvcnN5AQFEVmVjPFQ6OkFjY291bnRJZD4ACDB8Tm9taW5hdGUgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbChyb290IHJvbGUuAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4AGCMgTm90ZQBZAUluIGFkZGl0aW9uIHRvIGEgYHJvb3RgIG9yIGBub21pbmF0b3JgIHJvbGUgb2YgYG9yaWdpbmAsIHRoZSBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvDQFoYXZlIGF0IGxlYXN0IGBkZXBvc2l0b3JfbWluX2JvbmRgIGluIHRoZSBwb29sIHRvIHN0YXJ0IG5vbWluYXRpbmcuJHNldF9zdGF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAARRzdGF0ZYkFASRQb29sU3RhdGUACSh0U2V0IGEgbmV3IHN0YXRlIGZvciB0aGUgcG9vbC4AVQFJZiBhIHBvb2wgaXMgYWxyZWFkeSBpbiB0aGUgYERlc3Ryb3lpbmdgIHN0YXRlLCB0aGVuIHVuZGVyIG5vIGNvbmRpdGlvbiBjYW4gaXRzIHN0YXRlNGNoYW5nZSBhZ2Fpbi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyOgDcMS4gc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZSBwb29sLF0BMi4gaWYgdGhlIHBvb2wgY29uZGl0aW9ucyB0byBiZSBvcGVuIGFyZSBOT1QgbWV0IChhcyBkZXNjcmliZWQgYnkgYG9rX3RvX2JlX29wZW5gKSwgYW5kOQEgICB0aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcG9vbCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjaGFuZ2VkIHRvIGBEZXN0cm95aW5nYC4wc2V0X21ldGFkYXRhCAEccG9vbF9pZDgBGFBvb2xJZAABIG1ldGFkYXRhGAEcVmVjPHU4PgAKEIBTZXQgYSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBwb29sLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZRRwb29sLixzZXRfY29uZmlncxgBNG1pbl9qb2luX2JvbmSNBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABPG1pbl9jcmVhdGVfYm9uZI0FAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAEkbWF4X3Bvb2xzkQUBNENvbmZpZ09wPHUzMj4AASxtYXhfbWVtYmVyc5EFATRDb25maWdPcDx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2yRBQE0Q29uZmlnT3A8dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbpUFAURDb25maWdPcDxQZXJiaWxsPgALLEEBVXBkYXRlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbm9taW5hdGlvbiBwb29scy4gVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uACwjIEFyZ3VtZW50cwCgKiBgbWluX2pvaW5fYm9uZGAgLSBTZXQgW2BNaW5Kb2luQm9uZGBdLrAqIGBtaW5fY3JlYXRlX2JvbmRgIC0gU2V0IFtgTWluQ3JlYXRlQm9uZGBdLoQqIGBtYXhfcG9vbHNgIC0gU2V0IFtgTWF4UG9vbHNgXS6kKiBgbWF4X21lbWJlcnNgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNgXS7kKiBgbWF4X21lbWJlcnNfcGVyX3Bvb2xgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNQZXJQb29sYF0u4CogYGdsb2JhbF9tYXhfY29tbWlzc2lvbmAgLSBTZXQgW2BHbG9iYWxNYXhDb21taXNzaW9uYF0uMHVwZGF0ZV9yb2xlcxABHHBvb2xfaWQ4ARhQb29sSWQAASBuZXdfcm9vdJkFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAE0bmV3X25vbWluYXRvcpkFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAEsbmV3X2JvdW5jZXKZBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgAMHHRVcGRhdGUgdGhlIHJvbGVzIG9mIHRoZSBwb29sLgA9AVRoZSByb290IGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGNhbiBjaGFuZ2UgYW55IG9mIHRoZSByb2xlcywgaW5jbHVkaW5nIGl0c2VsZiy4ZXhjbHVkaW5nIHRoZSBkZXBvc2l0b3IsIHdobyBjYW4gbmV2ZXIgY2hhbmdlLgBRAUl0IGVtaXRzIGFuIGV2ZW50LCBub3RpZnlpbmcgVUlzIG9mIHRoZSByb2xlIGNoYW5nZS4gVGhpcyBldmVudCBpcyBxdWl0ZSByZWxldmFudCB0bx0BbW9zdCBwb29sIG1lbWJlcnMgYW5kIHRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIG9mIGNoYW5nZXMgdG8gcG9vbCByb2xlcy4UY2hpbGwEARxwb29sX2lkOAEYUG9vbElkAA1EcENoaWxsIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbKByb290IHJvbGUsIHNhbWUgYXMgW2BQYWxsZXQ6Om5vbWluYXRlYF0uAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpVASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSBwb29sIG1lbWJlcnNcICBhcmUgdW5hYmxlIHRvIHVuYm9uZC4AnCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoOrQqIFRoZSBjYWxsZXIgaXMgdGhlIHBvb2wncyBub21pbmF0b3Igb3Igcm9vdC5AYm9uZF9leHRyYV9vdGhlcggBGG1lbWJlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUZXh0cmGFBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4ADiRVAWBvcmlnaW5gIGJvbmRzIGZ1bmRzIGZyb20gYGV4dHJhYCBmb3Igc29tZSBwb29sIG1lbWJlciBgbWVtYmVyYCBpbnRvIHRoZWlyIHJlc3BlY3RpdmUYcG9vbHMuAEkBYG9yaWdpbmAgY2FuIGJvbmQgZXh0cmEgZnVuZHMgZnJvbSBmcmVlIGJhbGFuY2Ugb3IgcGVuZGluZyByZXdhcmRzIHdoZW4gYG9yaWdpbiA9PRxvdGhlcmAuAEUBSW4gdGhlIGNhc2Ugb2YgYG9yaWdpbiAhPSBvdGhlcmAsIGBvcmlnaW5gIGNhbiBvbmx5IGJvbmQgZXh0cmEgcGVuZGluZyByZXdhcmRzIG9mFQFgb3RoZXJgIG1lbWJlcnMgYXNzdW1pbmcgc2V0X2NsYWltX3Blcm1pc3Npb24gZm9yIHRoZSBnaXZlbiBtZW1iZXIgaXPAYFBlcm1pc3Npb25sZXNzQ29tcG91bmRgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAuUHNldF9jbGFpbV9wZXJtaXNzaW9uBAEocGVybWlzc2lvbp0FATxDbGFpbVBlcm1pc3Npb24ADxxJAUFsbG93cyBhIHBvb2wgbWVtYmVyIHRvIHNldCBhIGNsYWltIHBlcm1pc3Npb24gdG8gYWxsb3cgb3IgZGlzYWxsb3cgcGVybWlzc2lvbmxlc3NgYm9uZGluZyBhbmQgd2l0aGRyYXdpbmcuACwjIEFyZ3VtZW50cwB4KiBgb3JpZ2luYCAtIE1lbWJlciBvZiBhIHBvb2wuuCogYHBlcm1pc3Npb25gIC0gVGhlIHBlcm1pc3Npb24gdG8gYmUgYXBwbGllZC5IY2xhaW1fcGF5b3V0X290aGVyBAEUb3RoZXIEATBUOjpBY2NvdW50SWQAEBABAWBvcmlnaW5gIGNhbiBjbGFpbSBwYXlvdXRzIG9uIHNvbWUgcG9vbCBtZW1iZXIgYG90aGVyYCdzIGJlaGFsZi4AVQFQb29sIG1lbWJlciBgb3RoZXJgIG11c3QgaGF2ZSBhIGBQZXJtaXNzaW9ubGVzc1dpdGhkcmF3YCBvciBgUGVybWlzc2lvbmxlc3NBbGxgIGNsYWltqHBlcm1pc3Npb24gZm9yIHRoaXMgY2FsbCB0byBiZSBzdWNjZXNzZnVsLjhzZXRfY29tbWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAThuZXdfY29tbWlzc2lvbqEFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+ABEUdFNldCB0aGUgY29tbWlzc2lvbiBvZiBhIHBvb2wuVQFCb3RoIGEgY29tbWlzc2lvbiBwZXJjZW50YWdlIGFuZCBhIGNvbW1pc3Npb24gcGF5ZWUgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgYGN1cnJlbnRgXQF0dXBsZS4gV2hlcmUgYSBgY3VycmVudGAgb2YgYE5vbmVgIGlzIHByb3ZpZGVkLCBhbnkgY3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC4ATQEtIElmIGEgYE5vbmVgIGlzIHN1cHBsaWVkIHRvIGBuZXdfY29tbWlzc2lvbmAsIGV4aXN0aW5nIGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLkhzZXRfY29tbWlzc2lvbl9tYXgIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb25ZBQEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlqQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb26tBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlATUBAQgsRnJlZUJhbGFuY2UEADUBARxCYWxhbmNlAAAAHFJld2FyZHMAAQAAiQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAACNBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBNQEBDBBOb29wAAAADFNldAQANQEBBFQAAQAYUmVtb3ZlAAIAAJEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAJUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAFZBQEMEE5vb3AAAAAMU2V0BABZBQEEVAABABhSZW1vdmUAAgAAmQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAAnQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAKEFBBhPcHRpb24EBFQBpQUBCBBOb25lAAAAEFNvbWUEAKUFAAABAAClBQAABAhZBQQAqQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzUENvbW1pc3Npb25DaGFuZ2VSYXRlBCxCbG9ja051bWJlcgE4AAgBMG1heF9pbmNyZWFzZVkFARxQZXJiaWxsAAEkbWluX2RlbGF5OAEsQmxvY2tOdW1iZXIAAK0FBBhPcHRpb24EBFQBsQUBCBBOb25lAAAAEFNvbWUEALEFAAABAACxBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQQBCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAEASRBY2NvdW50SWQAAQAAtQUMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy65BQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBBDYWxsBARUAAEQUHJlbGF5X3Nlc3Npb25fcmVwb3J0BAEYcmVwb3J0vQUBbFNlc3Npb25SZXBvcnQ8VDo6QWNjb3VudElkPgAABAUBQ2FsbGVkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBzZXNzaW9uIG9uIHRoZSByZWxheSBjaGFpbi5ccmVsYXlfbmV3X29mZmVuY2VfcGFnZWQEASBvZmZlbmNlc9EFAahWZWM8KFNlc3Npb25JbmRleCwgT2ZmZW5jZTxUOjpBY2NvdW50SWQ+KT4AAQAgc2V0X2tleXMMARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgABlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWUxAQFQT3B0aW9uPEJhbGFuY2VPZjxUPj4ACnxVAVNldCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlzIGFyZSB2YWxpZGF0ZWQgb24gQXNzZXRIdWIgYW5kIGZvcndhcmRlZCB0byBSQy4AVQFPbiB0aGUgZmlyc3QgY2FsbCwgYSBkZXBvc2l0IG9mIGBLZXlEZXBvc2l0YCBpcyBoZWxkIGZyb20gdGhlIHN0YXNoLiBTdWJzZXF1ZW50IGNhbGxz9GRvIG5vdCBjaGFyZ2UgYWdhaW4uIFRoZSBkZXBvc2l0IGlzIHJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AbCoqVmFsaWRhdGlvbiBvbiBBc3NldEh1YjoqKk0BLSBLZXlzIGFyZSBkZWNvZGVkIGFzIGBUOjpSZWxheUNoYWluU2Vzc2lvbktleXNgIHRvIGVuc3VyZSB0aGV5IG1hdGNoIFJDJ3MgZXhwZWN0ZWQkICBmb3JtYXQuMQEtIE93bmVyc2hpcCBwcm9vZiBpcyB2YWxpZGF0ZWQgdXNpbmcgYE9wYXF1ZUtleXM6Om93bmVyc2hpcF9wcm9vZl9pc192YWxpZGAuAEEBSWYgdmFsaWRhdGlvbiBwYXNzZXMsIG9ubHkgdGhlIHZhbGlkYXRlZCBrZXlzIGFyZSBzZW50IHRvIFJDICh3aXRoIGVtcHR5IHByb29mKSyAc2luY2UgUkMgdHJ1c3RzIEFIJ3MgdmFsaWRhdGlvbi4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLlEBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBzdGFzaCBhY2NvdW50IGlzIGNoYXJnZWQgYW4gWENNSQFmZWUgKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluPQF1c2VzIGBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUs2HdoaWxlIHRoZSBzdGFzaCAoZGVsZWdhdGluZyBhY2NvdW50KSBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4AWQFOT1RFOiB1bmxpa2UgdGhlIGN1cnJlbnQgZmxvdyBmb3IgbmV3IHZhbGlkYXRvcnMgb24gUkMgKGJvbmQgLT4gc2V0X2tleXMgLT4gdmFsaWRhdGUpLFUBdXNlcnMgb24gQXNzZXQgSHViIE1VU1QgY2FsbCBib25kIGFuZCB2YWxpZGF0ZSBCRUZPUkUgY2FsbGluZyBzZXRfa2V5cy4gQXR0ZW1wdGluZyB0byUBc2V0IGtleXMgYmVmb3JlIGRlY2xhcmluZyBpbnRlbnQgdG8gdmFsaWRhdGUgd2lsbCBmYWlsIHdpdGggTm90VmFsaWRhdG9yLihwdXJnZV9rZXlzBAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZTEBAVBPcHRpb248QmFsYW5jZU9mPFQ+PgALaAEBUmVtb3ZlIHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IgYW5kIHJlbGVhc2UgdGhlIGtleSBkZXBvc2l0LgCoVGhpcyBwdXJnZXMgdGhlIGtleXMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uAEUBVW5saWtlIGBzZXRfa2V5c2AsIHRoaXMgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2FsbGVyIHRvIGJlIGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuSQFUaGlzIGlzIGludGVudGlvbmFsOiBhIHZhbGlkYXRvciB3aG8gaGFzIGNoaWxsZWQgKHN0b3BwZWQgdmFsaWRhdGluZykgc2hvdWxkIHN0aWxsOQFiZSBhYmxlIHRvIHB1cmdlIHRoZWlyIHNlc3Npb24ga2V5cy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3JpZ2luYWzwYHBhbGxldC1zZXNzaW9uOjpwdXJnZV9rZXlzYCB3aGljaCBhbGxvd3MgYW55b25lIHRvIGNhbGwgaXQuADkBVGhlIFJlbGF5IENoYWluIHdpbGwgcmVqZWN0IHRoZSBjYWxsIHdpdGggYE5vS2V5c2AgZXJyb3IgaWYgdGhlIGFjY291bnQgaGFzIG5vJGtleXMgc2V0LgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuRQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIGNhbGxlciBpcyBjaGFyZ2VkIGFuIFhDTSBmZWVNAShkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbiB1c2VzKQFgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLLh3aGlsZSB0aGUgZGVsZWdhdGluZyBhY2NvdW50IHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy69BQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50NFNlc3Npb25SZXBvcnQEJEFjY291bnRJZAEEABABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABQHZhbGlkYXRvcl9wb2ludHPBBQFUVmVjPChBY2NvdW50SWQsIHUzMik+AAFQYWN0aXZhdGlvbl90aW1lc3RhbXDJBQFIT3B0aW9uPCh1NjQsIHUzMik+AAEgbGVmdG92ZXJ1AQEQYm9vbAAAwQUAAALFBQDFBQAABAgEOADJBQQYT3B0aW9uBARUAc0FAQgQTm9uZQAAABBTb21lBADNBQAAAQAAzQUAAAQIKDgA0QUAAALVBQDVBQAABAg42QUA2QUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBxPZmZlbmNlBCRBY2NvdW50SWQBBAAMASBvZmZlbmRlcgQBJEFjY291bnRJZAABJHJlcG9ydGVyc3kBAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uWQUBHFBlcmJpbGwAAN0FDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0EENhbGwEBFQAAQgYbWFuYWdlBAEIb3DhBQFMTWFuYWdlck9wZXJhdGlvbjxUPgAAFExNYW5hZ2UgdGhpcyBwYWxsZXQuAOhUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uAAkBU2VlIFtgTWFuYWdlck9wZXJhdGlvbmBdIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBhcmUgcG9zc2libGUuFGFkbWluBAEIb3DpBQFEQWRtaW5PcGVyYXRpb248VD4AAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4QUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9ja0BNYW5hZ2VyT3BlcmF0aW9uBARUAAEMQEZvcmNlUm90YXRlUm91bmQAAAA0Rm9yY2VTZXRQaGFzZQQA5QUBIFBoYXNlPFQ+AAEAREVtZXJnZW5jeUZhbGxiYWNrAAIAAOUFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXMUUGhhc2UEBFQAASAMT2ZmAAAAGFNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQBAU2lnbmVkVmFsaWRhdGlvbgQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAgAgVW5zaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAMAIFNuYXBzaG90BAA4ASRQYWdlSW5kZXgABAAQRG9uZQAFABhFeHBvcnQEADgBJFBhZ2VJbmRleAAGACRFbWVyZ2VuY3kABwAA6QUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazhBZG1pbk9wZXJhdGlvbgQEVAABCFBFbWVyZ2VuY3lTZXRTb2x1dGlvbggA7QUBhEJveDxCb3VuZGVkU3VwcG9ydHNPZjxQYWxsZXQ8VD4+PgAADQYBNEVsZWN0aW9uU2NvcmUAAABQU2V0TWluVW50cnVzdGVkU2NvcmUEAA0GATRFbGVjdGlvblNjb3JlAAEAAO0FCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0PEJvdW5kZWRTdXBwb3J0cwwkQWNjb3VudElkAQQYQk91dGVyABhCSW5uZXIAAAQA8QUBCQFCb3VuZGVkVmVjPChBY2NvdW50SWQsIEJvdW5kZWRTdXBwb3J0PEFjY291bnRJZCwgQklubmVyPiksIEJPdXRlcj4AAPEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QUEUwAABAAJBgEYVmVjPFQ+AAD1BQAABAgE+QUA+QUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ4Qm91bmRlZFN1cHBvcnQIJEFjY291bnRJZAEEFEJvdW5kAAAIARR0b3RhbDUBATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnP9BQG8Qm91bmRlZFZlYzwoQWNjb3VudElkLCBFeHRlbmRlZEJhbGFuY2UpLCBCb3VuZD4AAP0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBAQYEUwAABAAFBgEYVmVjPFQ+AAABBgAABAgENQEABQYAAAIBBgAJBgAAAvUFAA0GCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtlNQEBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZTUBATxFeHRlbmRlZEJhbGFuY2UAAURzdW1fc3Rha2Vfc3F1YXJlZDUBATxFeHRlbmRlZEJhbGFuY2UAABEGFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuFQYQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB1bnNpZ25lZBhwYWxsZXQQQ2FsbAQEVAABBDxzdWJtaXRfdW5zaWduZWQEAThwYWdlZF9zb2x1dGlvbhkGAZRCb3g8UGFnZWRSYXdTb2x1dGlvbjxUOjpNaW5lckNvbmZpZz4+AAA8cFN1Ym1pdCBhbiB1bnNpZ25lZCBzb2x1dGlvbi4AVQFUaGlzIHdvcmtzIHZlcnkgbXVjaCBsaWtlIGFuIGluaGVyZW50LCBhcyBvbmx5IHRoZSB2YWxpZGF0b3JzIGFyZSBwZXJtaXR0ZWQgdG8gc3VibWl0WQFhbnl0aGluZy4gQnkgZGVmYXVsdCB2YWxpZGF0b3JzIHdpbGwgY29tcHV0ZSB0aGlzIGNhbGwgaW4gdGhlaXIgYG9mZmNoYWluX3dvcmtlcmAgaG9va2xhbmQgdHJ5IGFuZCBzdWJtaXQgaXQgYmFjay4ARQFUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHNpZ25lZCBwYWdlIHN1Ym1pc3Npb24gbWFpbmx5IGluIHRoYXQgdGhlIHNvbHV0aW9uIHBhZ2UgaXNQdmVyaWZpZWQgb24gdGhlIGZseS4APQFUaGUgYHBhZ2VkX3NvbHV0aW9uYCBtYXkgY29udGFpbiBhdCBtb3N0IFtgQ29uZmlnOjpNaW5lclBhZ2VzYF0gcGFnZXMuIFRoZXkgYXJlDQFpbnRlcnByZXRlZCBhcyBtc3AgLT4gbHNwLCBhcyBwZXIgW2BjcmF0ZTo6UGFsbGV0Ojptc3BfcmFuZ2VfZm9yYF0uAF0BRm9yIGV4YW1wbGUsIGlmIGBQYWdlcyA9IDRgLCBhbmQgYE1pbmVyUGFnZXMgPSAyYCwgb3VyIGZ1bGwgc25hcHNob3QgcmFuZ2Ugd291bGQgYmUgWzAsVQExLCAyLCAzXSwgd2l0aCAzIGJlaW5nIG1zcC4gQnV0LCBpbiB0aGlzIGNhc2UsIHRoZW4gdGhlIGBwYWdlZF9yYXdfc29sdXRpb24ucGFnZXNgIGlz3GV4cGVjdGVkIHRvIGNvcnJlc3BvbmQgdG8gYFtzbmFwc2hvdCgyKSwgc25hcHNob3QoMyldYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuGQYMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlc0BQYWdlZFJhd1NvbHV0aW9uBARUAAAMAThzb2x1dGlvbl9wYWdlcx0GAUhWZWM8U29sdXRpb25PZjxUPj4AARRzY29yZQ0GATRFbGVjdGlvblNjb3JlAAEUcm91bmQ4AQx1MzIAAB0GAAACIQYAIQYMcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMSUGAAABGHZvdGVzMjEGAAABGHZvdGVzM0UGAAABGHZvdGVzNFEGAAABGHZvdGVzNV0GAAABGHZvdGVzNmkGAAABGHZvdGVzN3UGAAABGHZvdGVzOIEGAAABGHZvdGVzOY0GAAABHHZvdGVzMTCZBgAAARx2b3RlczExpQYAAAEcdm90ZXMxMrEGAAABHHZvdGVzMTO9BgAAARx2b3RlczE0yQYAAAEcdm90ZXMxNdUGAAABHHZvdGVzMTbhBgAAACUGAAACKQYAKQYAAAQIYC0GAC0GAAAG7QMAMQYAAAI1BgA1BgAABAxgOQYtBgA5BgAABAgtBj0GAD0GAAAGQQYAQQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA7QMBDHUxNgAARQYAAAJJBgBJBgAABAxgTQYtBgBNBgAAAwIAAAA5BgBRBgAAAlUGAFUGAAAEDGBZBi0GAFkGAAADAwAAADkGAF0GAAACYQYAYQYAAAQMYGUGLQYAZQYAAAMEAAAAOQYAaQYAAAJtBgBtBgAABAxgcQYtBgBxBgAAAwUAAAA5BgB1BgAAAnkGAHkGAAAEDGB9Bi0GAH0GAAADBgAAADkGAIEGAAAChQYAhQYAAAQMYIkGLQYAiQYAAAMHAAAAOQYAjQYAAAKRBgCRBgAABAxglQYtBgCVBgAAAwgAAAA5BgCZBgAAAp0GAJ0GAAAEDGChBi0GAKEGAAADCQAAADkGAKUGAAACqQYAqQYAAAQMYK0GLQYArQYAAAMKAAAAOQYAsQYAAAK1BgC1BgAABAxguQYtBgC5BgAAAwsAAAA5BgC9BgAAAsEGAMEGAAAEDGDFBi0GAMUGAAADDAAAADkGAMkGAAACzQYAzQYAAAQMYNEGLQYA0QYAAAMNAAAAOQYA1QYAAALZBgDZBgAABAxg3QYtBgDdBgAAAw4AAAA5BgDhBgAAAuUGAOUGAAAEDGDpBi0GAOkGAAADDwAAADkGAO0GEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZQ0GATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb27xBgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZ5AQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7xBgQYT3B0aW9uBARUASEGAQgQTm9uZQAAABBTb21lBAAhBgAAAQAA9QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVxAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWX5BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbHEBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc/0GAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHMFBwFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZfkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2ABDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsYAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9yCQcBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXMNBwFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRgXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6ABUBMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQuIQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4ARQFUaGUgZ2F0ZSBpcyBpbnRlbnRpb25hbGx5IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFuZCAqbm90KiBgbWluX2NoaWxsZWRfYm9uZGA6IGFVAWdvdmVybmFuY2UgY2hhbmdlIHRvIGBNaW5WYWxpZGF0b3JCb25kYCAvIGBNaW5Ob21pbmF0b3JCb25kYCBtdXN0IG5vdCB0dXJuIHByZXZpb3VzbHlJAXNhZmUgc3Rhc2hlcyBpbnRvIHBlcm1pc3Npb25sZXNzbHkgcmVhcGFibGUgb25lcy4gQWNjb3VudHMgdGhhdCBmYWxsIGJlbG93IHRoZSBuZXdVAW1pbmltdW1zIGFmdGVyIHN1Y2ggYSBjaGFuZ2Ugc2hvdWxkIGJlIGBjaGlsbF9vdGhlcmAtZWQgKHdoaWNoIGhhcyBhIGRlbnNpdHkgZ2F0ZSBhbmSkZG9lcyBub3QgZGVzdHJveSB0aGUgbGVkZ2VyKSwgbm90IHJlYXBlZC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvBQcBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmQVBwFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZBUHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudBkHATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudBkHATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xkHQcBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb24hBwFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHMdBwFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGUlBwE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ld1kFARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVycykHAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVyqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWwxAQFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmctBwEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXk9BwFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfiB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzVQEtIGBzbGFzaF9lcmFgOiBUaGUgYXBwbGljYXRpb24gZXJhIChgb2ZmZW5jZV9lcmEgKyBTbGFzaERlZmVyRHVyYXRpb25gKSwgaS5lLiB0aGUga2V5cCAgaW50byBbYFVuYXBwbGllZFNsYXNoZXNgXS4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ld1kFARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZRUHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZRUHAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3IhBwFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu+QYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAP0GCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbgEHARxQZXJiaWxsAAEcYmxvY2tlZHUBARBib29sAAABBwAABlkFAAUHAAACAAAJBww0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAA0HAAACEQcAEQcAAAQIBFkFABUHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATUBAQwQTm9vcAAAAAxTZXQEADUBAQRUAAEAGFJlbW92ZQACAAAZBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAB0HEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAQkHAQwQTm9vcAAAAAxTZXQEAAkHAQRUAAEAGFJlbW92ZQACAAAhBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAFZBQEMEE5vb3AAAAAMU2V0BABZBQEEVAABABhSZW1vdmUAAgAAJQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBdQEBDBBOb29wAAAADFNldAQAdQEBBFQAAQAYUmVtb3ZlAAIAACkHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AAC0HBBhPcHRpb24EBFQBMQcBCBBOb25lAAAAEFNvbWUEADEHAAABAAAxBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATUHBFMAAAQAOQcBGFZlYzxUPgAANQcMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQE1AQAIARR2YWx1ZXEBARxCYWxhbmNlAAEMZXJhYAEgRXJhSW5kZXgAADkHAAACNQcAPQcAAAQMBFkFOABBBwxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMYcGFsbGV0EENhbGwEBFQAARRQcmVjZWl2ZV9jcmVkaXRfdHJlZXMEARRiYXRjaEUHAUhDcmVkaXRUcmVlQmF0Y2g8VD4AACjsU3RvcmVzIHRoZSBjcmVkaXQgdHJlZXMgb2YgYSBiYXRjaCBzZW50IGJ5IHRoZSBnYW1lIHBhbGxldC4AJCMjIE9yaWdpbvxSZXF1aXJlcyB0aGUgZ2FtZSBjaGFpbidzIFhDTSBvcmlnaW4gKGBFbnN1cmVHYW1lQ2hhaW5PcmlnaW5gKS4AVQFUaGlzIGRvZXMgbm90IHN0b3JlIGEgdHJlZSBwYXN0IGl0cyBkZWFkbGluZSwgbm9yIG9uZSBmb3IgYSBibG9jayB3aG9zZSB0cmVlIGl0IGhvbGRzIGFscmVhZHkuADQjIyBQYXJhbWV0ZXJz/C0gYGJhdGNoYDogVGhlIGNyZWRpdCB0cmVlcyB0byBzdG9yZSwgaW4gYXNjZW5kaW5nIGJsb2NrIG9yZGVyLhRjbGFpbRwBIGNsYWltYW50XQcBMENsYWltYW50S2luZAABFGJsb2NrOAE8Q3JlZGl0VHJlZUJsb2NrAAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShsZWFmX2luZGV4OAEMdTMyAAEUcHJvb2ZhBwG0Qm91bmRlZFZlYzxDcmVkaXRQcm9vZk5vZGUsIFQ6Ok1heFByb29mTm9kZXM+AAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABHG1pbnRfdG8EATBUOjpBY2NvdW50SWQAAYBFAU1pbnRzIHRoZSBORlQgb2Ygb25lIE5GVCBjbGFpbSBjcmVkaXQgdGhlIGdhbWUgY2hhaW4gY29tbWl0dGVkIGluIGBibG9ja2AncyB0cmVlLgBZAVRoZSBjcmVkaXQgaXMgc3BlbnQgYnkgdGhlIGNsYWltOiBpdHMgbGVhZiBpcyByZWNvcmRlZCwgYW5kIGEgc2Vjb25kIGNsYWltIG9mIHRoZSBzYW1lhGNyZWRpdCBmYWlscywgd2hvZXZlciBzdWJtaXRzIGl0LgAkIyMgT3JpZ2luSQFUaGUgc2lnbmVyIG9mIHRoZSBjbGFpbWFudCB0aGUgY3JlZGl0IHdhcyBhd2FyZGVkIHRvIChbYENvbmZpZzo6RW5zdXJlQ2xhaW1hbnRgXSkuADQjIyBQYXJhbWV0ZXJzSQEtIGBjbGFpbWFudGA6IFdoaWNoIG9mIHRoZSBzaWduZXIncyBpZGVudGl0aWVzIHRoZSBjcmVkaXQgd2FzIGF3YXJkZWQgdG8uIEEgcGVyc29uYQEgIGNsYWltcyBhcyBbYENsYWltYW50S2luZDo6UGVyc29uYF0sIHdoaWNoIHJlc29sdmVzIHRvIHRoZSBhbGlhcyB0aGVpciBhY2NvdW50IGlzIGJvdW5kFCAgdG8uYQEtIGBibG9ja2A6IFRoZSBQZW9wbGUtY2hhaW4gYmxvY2sgd2hvc2UgdHJlZSBjb21taXR0ZWQgdGhlIGNyZWRpdCwgd2hpY2ggaXMgdGhlIHRyZWUgdGhlSQEgIHByb29mIGlzIHZlcmlmaWVkIGFnYWluc3QuIEl0IGlzIGF0IG9yIGFmdGVyIHRoZSBibG9jayB0aGUgY3JlZGl0IHdhcyBlYXJuZWQgaW4uVQEtIGBjcmVkaXRgOiBUaGUgY3JlZGl0IGJlaW5nIGNsYWltZWQuIEhhc2hlZCB0b2dldGhlciB3aXRoIHRoZSBvcmlnaW4ncyBpZGVudGl0eSBpbnRvRQEgIHRoZSBsZWFmLCBzbyBhIGNyZWRpdCBvZiBzb21lYm9keSBlbHNlJ3MgcmVoYXNoZXMgdG8gYSBsZWFmIHRoYXQgaXMgaW4gbm8gdHJlZS5BAS0gYGxlYWZfaW5kZXhgOiBUaGUgcG9zaXRpb24gb2YgdGhhdCBsZWFmIGluIHRoZSBibG9jaydzIGxlYXZlcywgaW4gYXdhcmQgb3JkZXIuWQEtIGBwcm9vZmA6IFRoZSBzaWJsaW5nIGhhc2hlcyB0aGF0IHJlaGFzaCB0aGUgbGVhZiB1cCB0byB0aGUgdHJlZSdzIHJvb3QsIGJvdHRvbSBsYXllchEBICBmaXJzdCwgYXMgdGhlIGdhbWUgY2hhaW4ncyBgbmZ0X2NsYWltX2NyZWRpdF9wcm9vZnNgIHJldHVybnMgdGhlbS49AS0gYGNvbGxlY3Rpb25gOiBUaGUgU2NhcmNpdHkgY29sbGVjdGlvbiB0aGUgTkZUIGlzIG1pbnRlZCBpbnRvLCB3aGljaCBoYXMgdG8gYmVVASAgcmVnaXN0ZXJlZCB0aHJvdWdoIFtgUGFsbGV0OjpzZXRfY29sbGVjdGlvbl9taW50ZXJgXS4gSXRzIFtgSXRlbVNlbGVjdGlvbmBdIGRlY2lkZXMsICB0aGUgaXRlbS5dAS0gYG1pbnRfdG9gOiBUaGUgU2NhcmNpdHkgcHVyc2Uga2V5IHRoZSBORlQgaXMgbWludGVkIHRvLiBBIHB1cnNlIGtleSBob2xkcyBvbmUgTkZULCBzb1EBICB0aGlzIGhhcyB0byBiZSBhbiBlbXB0eSBvbmUsIGFuZCBob2xkZXJzIGFyZSBtZWFudCB0byB1c2UgYSBmcmVzaCBrZXkgdGhleSBjb250cm9s2CAgcmF0aGVyIHRoYW4gYW4gYWNjb3VudCB0aGF0IGFscmVhZHkgaG9sZHMgc29tZXRoaW5nLgBFAVRoZSBjbGFpbSB0aGF0IHNwZW5kcyB0aGUgdHJlZSdzIGxhc3QgY3JlZGl0IGFsc28gcmVtb3ZlcyB0aGUgdHJlZSBhbmQgcXVldWVzIGl0c00BZGVsZXRpb24gZm9yIHRoZSBnYW1lIGNoYWluLCBhbmQgdGhlIGNhbGwgaXMgY2hhcmdlZCBmb3IgdGhhdC4gVGhlIGNsYWltcyB0aGF0IGNhbWVNAWJlZm9yZSBkZWNpZGUgd2hpY2ggY2xhaW0gdGhhdCBpcywgbm90IHRoZSBjYWxsJ3MgYXJndW1lbnRzLCBzbyBhIGNsYWltIHRoYXQgbGVhdmVzOQFjcmVkaXRzIGJlaGluZCBpcyByZWZ1bmRlZCBkb3duIHRvIGEgcGxhaW4gY2xhaW0gb2YgdGhlIGtpbmQgdGhlIGNhbGwgbmFtZXMuIEFBAWNvbnRyYWN0LXJlZ2lzdGVyZWQgY29sbGVjdGlvbiBhbHNvIHJlc2VydmVzIFtgQ29sbGVjdGlvblNlbGVjdG9yOjptYXhfd2VpZ2h0YF0sKQFyZWZ1bmRlZCBkb3duIHRvIHdoYXQgdGhlIHNlbGVjdGlvbiBjb25zdW1lZCwgaW5jbHVkaW5nIG9uIHRoZSBlcnJvciBwYXRoLlRzZXRfY29sbGVjdGlvbl9taW50ZXIIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEkc2VsZWN0aW9uaQcBVE9wdGlvbjxJdGVtU2VsZWN0aW9uPgACVD0BUmVnaXN0ZXJzIGBjb2xsZWN0aW9uYCBmb3IgY2xhaW1zIHdpdGggYHNlbGVjdGlvbmAgZGVjaWRpbmcgdGhlIG1pbnRlZCBpdGVtLCBvcmR3aXRoZHJhd3MgaXQgd2l0aCBgTm9uZWAuAFUBUmVnaXN0cmF0aW9uIGlzIHRoZSBvd25lcidzIG9wdC1pbiB0byBkZXBvc2l0LWZyZWUgc3VwcGx5IGdyb3d0aDogd2l0aG91dCBpdCBubyBjbGFpbUUBY2FuIG1pbnQgaW50byB0aGUgY29sbGVjdGlvbi4gV2l0aGRyYXdpbmcgc3RvcHMgZnVydGhlciBjbGFpbXMgYW5kIHNwZW5kcyBub3RoaW5nQQFhbHJlYWR5IGNsYWltZWQuIERlbGV0aW5nIHRoZSBjb2xsZWN0aW9uIG9yIGhhbmRpbmcgaXQgdG8gYSBuZXcgb3duZXIgY2xlYXJzIGl0cx0BcmVnaXN0cmF0aW9uIHRocm91Z2ggW2BpbmRpdl9wYWxsZXRfc2NhcmNpdHk6Ok9uQ29sbGVjdGlvbkRlbGV0ZWRgXSBhbmRNAVtgaW5kaXZfcGFsbGV0X3NjYXJjaXR5OjpPbkNvbGxlY3Rpb25Pd25lckNoYW5nZWRgXSwgc28gYSBuZXcgb3duZXIgaGFzIHRvIHJlZ2lzdGVyVQFhZ2Fpbi4gQSBjb250cmFjdCBzZWxlY3Rpb24gaXMgdmFsaWRhdGVkIHRocm91Z2ggW2BDb2xsZWN0aW9uU2VsZWN0b3I6OnZhbGlkYXRlYF0sIHNvCQFhbiBhZGRyZXNzIHdpdGggbm8gY29kZSBmYWlscyBoZXJlIHJhdGhlciB0aGFuIG9uIHRoZSBmaXJzdCBjbGFpbS4AOQFSZWdpc3RlcmluZyBhIGNvbnRyYWN0IHNlbGVjdGlvbiBjb21taXRzIHRoZSBvd25lcidzIGZ1bmRzOiB0aGUgb3duZXIgcGF5cyB0aGU1AXN0b3JhZ2UgZGVwb3NpdCBvZiBldmVyeSBtaW50ZXIgY2FsbCwgdXAgdG8gdGhlIHJ1bnRpbWUncyBwZXItY2FsbCBsaW1pdC4gVGhl7GNsYWltYW50IHBheXMgZm9yIHRoZSBjb250cmFjdCdzIGV4ZWN1dGlvbiwgb24gZmFpbHVyZSB0b28uACQjIyBPcmlnaW6AVGhlIGNvbGxlY3Rpb24ncyBTY2FyY2l0eSBvd25lci4ANCMjIFBhcmFtZXRlcnMBAS0gYGNvbGxlY3Rpb25gOiBUaGUgU2NhcmNpdHkgY29sbGVjdGlvbiB0byByZWdpc3RlciBvciB3aXRoZHJhdy4dAS0gYHNlbGVjdGlvbmA6IEhvdyBjbGFpbXMgcGljayB0aGUgaXRlbSB0byBtaW50LCBvciBgTm9uZWAgdG8gd2l0aGRyYXcuTHN3ZWVwX2V4cGlyZWRfdHJlZXMIARhvbGRlc3Q4AQx1MzIAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4AAyhRAVJlbW92ZXMgdGhlIHRyZWVzIHdob3NlIGRlYWRsaW5lIGhhcyBwYXNzZWQsIG9sZGVzdCBmaXJzdCwgYW5kIHF1ZXVlcyB0aGVpciBkZWxldGlvbkxmb3IgdGhlIGdhbWUgY2hhaW4uAF0BVGhpcyBwYWxsZXQncyBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyB0aGlzIGF1dGhvcml6ZWQgY2FsbC4gSXQgaXMgYWNjZXB0ZWQgZnJvbSBhIGxvY2Fs+G9yIGluLWJsb2NrIHNvdXJjZSBvbmx5LCBzbyBubyBleHRlcm5hbCBzdWJtaXNzaW9uIHJlYWNoZXMgaXQuAE0BYG9sZGVzdGAgbXVzdCBiZSB0aGUgdGltZXN0YW1wIFtgVHJlZUV4cGlyaWVzYF0gaG9sZHMgaXRzIG9sZGVzdCBlbnRyeSB1bmRlciwgd2hpY2hRAW1ha2VzIGEgcmV0cnkgdGhhdCByYWNlZCBhIHN1Y2Nlc3NmdWwgc3dlZXAgc3RhbGUgaW5zdGVhZCBvZiBhIHNlY29uZCBwYXNzLiBPbmUgY2FsbFEBcmVtb3ZlcyBhdCBtb3N0IFtgQ29uZmlnOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZWBdIHRyZWVzLCBzbyBjbGVhcmluZyBtb3JlIHRyZWVzfHRoYW4gdGhhdCB0YWtlcyBzZXZlcmFsIGJsb2Nrcy5Mc2VuZF90cmVlX2RlbGV0aW9ucwgBFGZyb250OAE8Q3JlZGl0VHJlZUJsb2NrAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAQgOQFUZWxscyB0aGUgZ2FtZSBjaGFpbiBhYm91dCB0aGUgcXVldWVkIHRyZWUgZGVsZXRpb25zIHRoYXQgZml0IG9uZSBYQ00gbWVzc2FnZS4AXQFUaGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlciBzdWJtaXRzIHRoaXMgYXV0aG9yaXplZCBjYWxsLiBJdCBpcyBhY2NlcHRlZCBmcm9tIGEgbG9jYWz4b3IgaW4tYmxvY2sgc291cmNlIG9ubHksIHNvIG5vIGV4dGVybmFsIHN1Ym1pc3Npb24gcmVhY2hlcyBpdC4AWQFgZnJvbnRgIG11c3QgYmUgdGhlIGJsb2NrIGF0IHRoZSBmcm9udCBvZiBbYFBlbmRpbmdUcmVlRGVsZXRpb25zYF0sIHdoaWNoIGEgc3VjY2Vzc2Z1bF0Bc2VuZCByZXBsYWNlcy4gQSByZXRyeSB0aGF0IHJhY2VkIHRoYXQgc2VuZCBpcyBzdGFsZSBpbnN0ZWFkIG9mIGEgc2Vjb25kIHNlbmQuIFRoZSBuZXh0MQFiYXRjaCdzIHNlbmQgbmFtZXMgYSBuZXcgZnJvbnQsIHNvIGl0IGNhcnJpZXMgYSB0cmFuc2FjdGlvbiBoYXNoIG9mIGl0cyBvd24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUHDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlczxDcmVkaXRUcmVlQmF0Y2gEIE1heFRyZWVzAAAIASxzb3VyY2VfdGltZSgBDHU2NAABFHRyZWVzSQcBoEJvdW5kZWRWZWM8Q3JlZGl0VHJlZURlbGl2ZXJ5LCBNYXhUcmVlcz4AAEkHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBTQcEUwAABABZBwEYVmVjPFQ+AABNBww0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXNIQ3JlZGl0VHJlZURlbGl2ZXJ5AAAMASBzZXF1ZW5jZfwBUE9wdGlvbjxUcmVlU2VxdWVuY2U+AAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sAARB0cmVlUQcBSE5mdENsYWltQ3JlZGl0VHJlZQAAUQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzSE5mdENsYWltQ3JlZGl0VHJlZQAAEAEoZ2FtZV9pbmRleDgBDHUzMgABEHJvb3RVBwE8Q3JlZGl0UHJvb2ZOb2RlAAEobGVhZl9jb3VudDgBDHUzMgABJHRpbWVzdGFtcDgBDHUzMgAAVQcMNGluZGl2X3N1cHBvcnQwY3JlZGl0X3RyZWVzPENyZWRpdFByb29mTm9kZQAABAAIASBbdTg7IDMyXQAAWQcAAAJNBwBdBwxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMUdHlwZXMwQ2xhaW1hbnRLaW5kAAEIHEFjY291bnQAAAAYUGVyc29uAAEAAGEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQcEUwAABABlBwEYVmVjPFQ+AABlBwAAAlUHAGkHBBhPcHRpb24EBFQBbQcBCBBOb25lAAAAEFNvbWUEAG0HAAABAABtBwxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMUdHlwZXM0SXRlbVNlbGVjdGlvbgABCBhSYW5kb20AAAAgQ29udHJhY3QEAHEHARBIMTYwAAEAAHEHCDxwcmltaXRpdmVfdHlwZXMQSDE2MAAABAAcASBbdTg7IDIwXQAAdQcMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIYcGFsbGV0EENhbGwEBFQAARhUaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzCAE0cmluZ19leHBvbmVudHkHATBSaW5nRXhwb25lbnQAARRyb290c30HAVxSaW5nUm9vdFVwZGF0ZXNCYXRjaDxUPgAAIEUBU3RvcmVzIHRoZSBpbml0aWFsIHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIgdXBvbiBzdWJzY3JpcHRpb24gc3RhcnQuQQFBY2NlcHRzIG11bHRpLXBhcnQgY29udGludWF0aW9ucyAoc2FtZSBzZXF1ZW5jZSkuIFJlamVjdHMgY2FsbHMgd2l0aCBhIGRpZmZlcmVudFEBc2VxdWVuY2Ugd2hpbGUgc3Vic2NyaXB0aW9uIGlzIGBBY3RpdmVgIOKAlCBhIHN1YnNjcmlwdGlvbiBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuHQFDYW4gb25seSBiZSBjYWxsZWQgYnkgbm90aWZpZXIgWENNIG9yaWdpbiAodmlhIGBFbnN1cmVOb3RpZmllck9yaWdpbmApLgA0IyMgUGFyYW1ldGVyc4AtIGBvcmlnaW5gOiBOb3RpZmllciBYQ00gb3JpZ2luLpwtIGByb290c2A6IEluaXRpYWwgYmF0Y2ggb2YgcmluZyByb290cy5QcHJvY2Vzc19yaW5nX3VwZGF0ZXMEARRiYXRjaH0HAVxSaW5nUm9vdFVwZGF0ZXNCYXRjaDxUPgABFNhQcm9jZXNzIHJpbmcgcm9vdHMgdXBkYXRlcyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllci4ANCMjIFBhcmFtZXRlcnPULSBgb3JpZ2luYDogTXVzdCBiZSB0aGUgWENNIG9yaWdpbiBmcm9tIHRoZSBub3RpZmllci7ELSBgYmF0Y2hgOiBCYXRjaCBvZiByaW5nIHJvb3QgdXBkYXRlcyB0byBwcm9jZXNzLlh0ZXJtaW5hdGVfc3Vic2NyaXB0aW9uAAIocFRlcm1pbmF0ZXMgdGhlIHN1YnNjcmlwdGlvbi4ALQFBY2NlcHRzIGVpdGhlciBub3RpZmllciBvcmlnaW4gKGBFbnN1cmVOb3RpZmllck9yaWdpbmApIG9yIGxvY2FsIGdvdmVybmFuY2UVAW9yaWdpbiAoYEVuc3VyZVRlcm1pbmF0aW9uT3JpZ2luYCkuIFdoZW4gY2FsbGVkIGxvY2FsbHksIHNlbmRzIGFuIFhDTS0BdW5zdWJzY3JpYmUgbWVzc2FnZSB0byB0aGUgbm90aWZpZXIuIFdoZW4gY2FsbGVkIGZyb20gdGhlIG5vdGlmaWVyIChlLmcuIG9uDQFnb3Zlcm5hbmNlIHVuc3Vic2NyaWJlKSwgbm8gWENNIGlzIHNlbnQgYmFjay4gSWRlbXBvdGVudCBpZiBhbHJlYWR5LHRlcm1pbmF0ZWQuADQjIyBQYXJhbWV0ZXJz6C0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4gb3Igcm9vdC9nb3Zlcm5hbmNlIG9yaWdpbi5QcmVwbGF5X21pc3Npbmdfcm9vdHMMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABHGluZGljZXOVBwHYQm91bmRlZFZlYzxSaW5nSW5kZXgsIFQ6Ok1heE1pc3NpbmdSb290c1BlckNvbGxlY3Rpb24+AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAMU9FNlbmRzIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIgZm9yIG1pc3NpbmcgcmluZyByb290cy4AIQFTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciBhcyBhbiBhdXRob3JpemVkIHRyYW5zYWN0aW9uLiBWYWxpZGF0ZXMpAXRoYXQgdGhlIHN1YnNjcmlwdGlvbiBpcyBhY3RpdmUgYW5kIHRoYXQgdGhlIHByb3ZpZGVkIGluZGljZXMgYXJlIGFjdHVhbGx5rG1pc3NpbmcgYmVmb3JlIHNlbmRpbmcgWENNIHJlcGxheSByZXF1ZXN0cy5YcHVyZ2Vfc3RhbGVfcmluZ19yb290cwwBKGdlbmVyYXRpb244AShHZW5lcmF0aW9uAAEQcGFnZTgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAEDNxSZW1vdmVzIGEgcGFnZSBvZiBzdGFsZS1nZW5lcmF0aW9uIGBSaW5nUm9vdHNgIGVudHJpZXMuAPhTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlciBhcyBhbiBhdXRob3JpemVkIHRyYW5zYWN0aW9uLlBkZXRlY3RfbWlzc2luZ19yaW5ncwwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEkc2Nhbl9mcm9tOAEkUmluZ0luZGV4AAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAUQMQFTY2FucyBvbmUgcGFnZSBvZiB0aGUgY29sbGVjdGlvbidzIHJpbmcgaW5kZXggc3BhY2UgYW5kIHJlY29yZHMgbWlzc2luZyByaW5nTGluZGljZXMgZm9yIHJlcGxheS4A+FN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnkHEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdFeHBvbmVudAABDBBSMmU5AAkAFFIyZTEwAAoAFFIyZTE0AA4AAH0HDDRpbmRpdl9zdXBwb3J0bG1lbWJlcnNfbm90aWZpZXJfc3Vic2NyaWJlclBSaW5nUm9vdFVwZGF0ZXNCYXRjaAQEVAAAFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAARx1cGRhdGVzgQcB0EJvdW5kZWRWZWM8UmluZ1Jvb3RVcGRhdGU8VD4sIFQ6Ok1heFVwZGF0ZXNQZXJCYXRjaD4AATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAAIEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQcEUwAABACRBwEYVmVjPFQ+AACFBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXI4UmluZ1Jvb3RVcGRhdGUEBFQAAAgBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAQhvcIkHAWBSaW5nUm9vdE9wPE1lbWJlcnNPZjxUPj4AAIkHDDRpbmRpdl9zdXBwb3J0bG1lbWJlcnNfbm90aWZpZXJfc3Vic2NyaWJlcihSaW5nUm9vdE9wBARSAY0HAQgUQnVpbHQIASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARByb290jQcBBFIAAAAcRGVsZXRlZAABAACNBwwodmVyaWZpYWJsZRByaW5nRE1lbWJlcnNDb21taXRtZW50AAMgAQAADACRBwAAAoUHAJUHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAJkHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0EENhbGwEBFQAARhMdW5zZXRfYWxpYXNfYWNjb3VudAABEKBSZW1vdmUgdGhlIGFsaWFzIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCBjdXJyZW50bHkgYm91bmQgdG8gYSByaW5nIGFsaWFzLiBUaGWYbWFwcGluZyBpcyByZW1vdmVkIGluIGJvdGggZGlyZWN0aW9ucy5Ec2V0X2FsaWFzX2FjY291bnQYARRwcm9vZp0HAShQcm9vZk9mPFQ+AAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmluZ19yZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARxjb250ZXh0CAEcQ29udGV4dAABOHByb29mX3ZhbGlkX2F0KAEMdTY0AAMw6ExpbmsgYW4gYWNjb3VudCB0byBhIHJpbmcgYWxpYXMsIG9uIHBheW1lbnQgb2YgYSBQR0FTIGZlZS4ANQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkOyB0aGUgc2lnbmVyIGJlY29tZXMgdGhlIGJvdW5kIGFjY291bnQuIFRoZSBQR0FTIGZlZVkBKFtgQ29uZmlnOjpBbGlhc0ZlZWBdKSBpcyBidXJuZWQgZnJvbSB0aGUgc2lnbmVyJ3MgUEdBUyBiYWxhbmNlLiBUaGUgYWxpYXMgbXVzdCB2ZXJpZnlBAWFnYWluc3QgdGhlIHN1cHBsaWVkIGBjb2xsZWN0aW9uYC9gcmluZ19pbmRleGAvYHJpbmdfcmV2aXNpb25gIGluIGBjb250ZXh0YC4gVGhlvGNvbGxlY3Rpb24gbXVzdCBzdGlsbCBiZSBQZW9wbGUgb3IgUGVvcGxlIExpdGUuAEkBSWYgYSBkaWZmZXJlbnQgYWNjb3VudCBpcyBhbHJlYWR5IGJvdW5kIHRvIHRoZSBzYW1lIGFsaWFzIHVuZGVyIHRoaXMgY29udGV4dCwgdGhhdPhtYXBwaW5nIGlzIGRyb3BwZWQgYW5kIHRoZSBzd2FwIGlzIHBhaWQgZm9yIGJ5IHRoZSBuZXcgc2lnbmVyLgApAVJlLXByb3ZpbmcgdGhlIHNhbWUgYWxpYXMgdW5kZXIgYSBmcmVzaGVyIHJpbmcgcmV2aXNpb24gc2hvdWxkIGluc3RlYWQgdXNlxFtgUGFsbGV0OjpyZXByb3ZlX2FsaWFzX2FjY291bnRgXSwgd2hpY2ggaXMgZnJlZS5UcmVwcm92ZV9hbGlhc19hY2NvdW50EAEUcHJvb2adBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX3JldmlzaW9uOAE0UmV2aXNpb25JbmRleAABOHByb29mX3ZhbGlkX2F0KAEMdTY0AAQcYQFSZS1wcm92ZSB0aGUgaG9sZGVyJ3MgYWxpYXMgYWdhaW5zdCBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiwgZnJlZSBvZiBjaGFyZ2UgaW4gY2FzZSBvZiBhWHN1Y2Nlc3NmdWwgb3BlcmF0aW9ucy4AEQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGFuZCBtdXN0IGFscmVhZHkgaG9sZCBhIGFsaWFzIG1hcHBpbmcuIFRoZRkBcHJvb2YgaXMgdmVyaWZpZWQgYWdhaW5zdCB0aGUgc3RvcmVkIGNvbnRleHQ7IHRoZSByZXN1bHRpbmcgYWxpYXMgbXVzdBEBbWF0Y2ggdGhlIHN0b3JlZCBhbGlhcy4gT25seSB0aGUgYHJldmlzaW9uYCBhbmQgYHJpbmdgIGZpZWxkcyBvZiB0aGURAXN0b3JlZCBtYXBwaW5nIGNoYW5nZTsgY29sbGVjdGlvbiwgY29udGV4dCwgYW5kIGFsaWFzIGFyZSBwcmVzZXJ2ZWQuUHJlcG9ydF9zdGFsZV9hbGlhc2VzBAEgYWNjb3VudHOhBwG8Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFN0YWxlQWxpYXNCYXRjaD4ABizwU3RhbXAgW2BTdGFsZVNpbmNlYF0gb24gZWFjaCBtYXBwaW5nIGluIGBhY2NvdW50c2AsIHN0YXJ0aW5ndFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0uAGEBQSBtYXBwaW5nIGlzIHN0YWxlIG9uY2UgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXSBzdG9wcyBhY2NlcHRpbmcgaXRzIHJldmlzaW9uLCB3aGljaCBpc1kBd2hlbiB0aGUgcmluZyB3YXMgcmVidWlsdCBhbmQgdGhlIG9sZCByZXZpc2lvbiByYW4gb3V0IG9mIHJldGVudGlvbiB0aGVyZSwgb3Igd2hlbiB0aGUlAXJpbmcgd2FzIGRlbGV0ZWQuIFN0YW1waW5nIHJlbW92ZXMgbm90aGluZywgYmVjYXVzZSBhIGNvbnN1bWVyIHRoYXQgcmVhZHMxAVtgQWNjb3VudFRvQWxpYXNgXSB3aXRob3V0IGNoZWNraW5nIHRoZSByZXZpc2lvbiBzdGlsbCByZXNvbHZlcyB0aGUgbWFwcGluZzstAVtgUGFsbGV0OjpyZXRpcmVfc3RhbGVfYWxpYXNlc2BdIHJlbW92ZXMgaXQgb25jZSB0aGUgcmV0ZW50aW9uIGhhcyBydW4gb3V0LgBZAWBhY2NvdW50c2AgbXVzdCBiZSBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIsIHNvIG9uZSBhY2NvdW50IGNhbm5vdCBiZSBzdGFtcGVkIHR3aWNlOQFpbiBhIGJhdGNoLCBhbmQgZXZlcnkgb25lIG9mIHRoZW0gbXVzdCBob2xkIGEgc3RhbGUgbWFwcGluZyB3aXRoIG5vIHN0YW1wIHlldC5QcmV0aXJlX3N0YWxlX2FsaWFzZXMEASBhY2NvdW50c6EHAbxCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3RhbGVBbGlhc0JhdGNoPgAHFEkBUmVtb3ZlIGVhY2ggbWFwcGluZyBpbiBgYWNjb3VudHNgLCB3aG9zZSBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGhhcyBydW4gb3V0LgBRAUJvdGggZGlyZWN0aW9ucyBvZiB0aGUgbWFwcGluZyBnbywgYWxvbmcgd2l0aCB0aGUgc3RhbXAgYW5kIHRoZSBhY2NvdW50J3Mgc3VmZmljaWVudFUBcmVmZXJlbmNlLiBgYWNjb3VudHNgIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLCBhbmQgZXZlcnkgb25lIG9mIHRoZW0gbXVzdCEBaG9sZCBhIHN0YWxlIG1hcHBpbmcgc3RhbXBlZCBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGFnbyBvciBsb25nZXIuZGNsZWFyX3N0YWxlX2FsaWFzX3JlcG9ydHMEASBhY2NvdW50c6EHAbxCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3RhbGVBbGlhc0JhdGNoPgAIIEkBRHJvcCB0aGUgW2BTdGFsZVNpbmNlYF0gc3RhbXAgb2YgZWFjaCBtYXBwaW5nIGluIGBhY2NvdW50c2AsIHdoaWNoIHZlcmlmaWVzIGFnYWluLgBRAUEgcmV2aXNpb24gdmVyaWZpZXMgYWdhaW4gd2hlbiB0aGUgc3Vic2NyaWJlciByZWJ1aWxkcyBpdHMgcmluZyB3aW5kb3cuIFdpdGhvdXQgdGhpcxUBY2FsbCwgdGhlIG5leHQgc3RhbGVuZXNzIHJlbW92ZXMgdGhlIG1hcHBpbmcgYXQgb25jZSBpbnN0ZWFkIG9mIGFmdGVydFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0uAEUBYGFjY291bnRzYCBtdXN0IGJlIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlciwgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVtIG11c3QgaG9sZCBhoHN0YW1wZWQgbWFwcGluZyB3aG9zZSByZXZpc2lvbiB2ZXJpZmllcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMunQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAChBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABAB5AQEYVmVjPFQ+AAClBwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAARAoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAAkBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXSB0cmFuc2FjdGlvbiBleHRlbnNpb24sIHdoaWNoUQF2ZXJpZmllcyB0aGUgcmluZy1WUkYgcHJvb2YgYW5kIHByb2R1Y2VzIGFuIFtgT3JpZ2luOjpDbGFpbUFsaWFzYF0uIFRoZSBvdXRlciBvcmlnaW5VAW11c3QgYmUgYE5vbmVgICh0aGUgZXh0ZW5zaW9uIHJlcGxhY2VzIGl0IHdpdGggdGhlIGxvY2FsIG9yaWdpbik7IGFueSBvdGhlciBvcmlnaW4gaXMkcmVqZWN0ZWQuAFkBYHNsb3RfaW5kZXhgIGlzIHBhcnQgb2YgdGhlIGNhbGwgcGF5bG9hZCBzbyB0aGUgZXh0ZW5zaW9uIGNhbiBkZXJpdmUgdGhlIGNsYWltIGNvbnRleHRRAW9uLWNoYWluIGFuZCBzbyB0aGUgcHJvb2YgYmluZHMgdG8gdGhlIHJlcXVlc3RlZCBzbG90IHZpYSB0aGUgaW5oZXJpdGVkIGltcGxpY2F0aW9uLkBiYXRjaF9jbGFpbV9wZ2FzCAEwc2xvdF9pbmRpY2VzqQcBpEJvdW5kZWRWZWM8dTMyLCBUOjpNYXhQZ2FzQ2xhaW1zUGVyQmF0Y2g+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAMouE1pbnQgUEdBUyBmb3IgYSBiYXRjaCBvZiB2ZXJpZmllZCBjbGFpbSBzbG90cy4AEQFNdXN0IGJlIHN1Ym1pdHRlZCB3aXRoIHRoZSBbYEFzUGdhc2BdIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBjYXJyeWluZ7BbYEFzUGdhc0luZm86OkJhdGNoQ2xhaW1gXSwgd2hpY2ggdmVyaWZpZXMgYT0Bc2luZ2xlIG11bHRpLWNvbnRleHQgcHJvb2YgY292ZXJpbmcgb25lIGNvbnRleHQgcGVyIGVudHJ5IGluIGBzbG90X2luZGljZXNgIGFuZD0BcHJvZHVjZXMgYW4gW2BPcmlnaW46OkJhdGNoQ2xhaW1BbGlhc2VzYF0uIFRoZSBvdXRlciBvcmlnaW4gbXVzdCBiZSBgTm9uZWA7IGFueWRvdGhlciBvcmlnaW4gaXMgcmVqZWN0ZWQuAD0BVGhlIHdlaWdodCBpcyBhIGNvbnN0YW50IHdvcnN0IGNhc2Ugc2l6ZWQgZm9yIFtgQ29uZmlnOjpNYXhQZ2FzQ2xhaW1zUGVyQmF0Y2hgXaxjb250ZXh0czsgc21hbGxlciBiYXRjaGVzIGFyZSBub3QgcmVmdW5kZWQuRGNyZWF0ZV9wZ2FzX2Fzc2V0AAEIVQFDcmVhdGUgdGhlIFBHQVMgYXNzZXQuIFRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBhdXRob3JpemVkIGNhbGwgdGhhdCBjYW4gb25seSBzdWNjZWVkpGlmIHRoZSBQR0FTIGFzc2V0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3JkcwgBJGRheV9pbmRleDgBDHUzMgABLGZpcnN0X2FsaWFzCAEUQWxpYXMAAiTkUmVtb3ZlIG9sZCBQR0FTIGNsYWltIHJlY29yZHMgZm9yIGEgc3BlY2lmaWMgYGRheV9pbmRleGAuAAUBVGhpcyBpcyBhbiBhdXRob3JpemVkIGV4dHJpbnNpYyBzdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci41AU9ubHkgcmVjb3JkcyBmcm9tIGRheXMgdGhhdCBoYXZlIGZ1bGx5IGVsYXBzZWQgKG91dHNpZGUgdGhlIGdyYWNlIHdpbmRvdykgY2FuKQFiZSBjbGVhbmVkLiBVcCB0byBbYENvbmZpZzo6TWF4UGdhc0NsYWltUmVjb3JkQ2xlYW51cFBlckNhbGxgXSBlbnRyaWVzIGFyZURyZW1vdmVkIHBlciBjYWxsLgBhAWBmaXJzdF9hbGlhc2AgaXMgdGhlIGZpcnN0IGFsaWFzIGN1cnJlbnRseSBzdG9yZWQgZm9yIGBkYXlfaW5kZXhgIGFuZCBpcyBpbmNsdWRlZCBpbiB0aGWAdGFncyBmb3IgdHJhbnNhY3Rpb24gdW5pcXVlbmVzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAYQQBGFZlYzxUPgAArQcMNHBhbGxldF9yZXZpdmUYcGFsbGV0EENhbGwEBFQAATgwZXRoX3RyYW5zYWN0BAEccGF5bG9hZBgBHFZlYzx1OD4AADAtAUEgcmF3IEVWTSB0cmFuc2FjdGlvbiwgdHlwaWNhbGx5IGRpc3BhdGNoZWQgYnkgYW4gRXRoZXJldW0gSlNPTi1SUEMgc2VydmVyLgAwIyBQYXJhbWV0ZXJzAOwqIGBwYXlsb2FkYDogVGhlIGVuY29kZWQgW2BjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZGBdLgAYIyBOb3RlAFEBVGhpcyBjYWxsIGNhbm5vdCBiZSBkaXNwYXRjaGVkIGRpcmVjdGx5OyBhdHRlbXB0aW5nIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgZmFpbGVkUQF0cmFuc2FjdGlvbi4gSXQgc2VydmVzIGFzIGEgd3JhcHBlciBmb3IgYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uIFdoZW4gc3VibWl0dGVkLCB0aGVZAXJ1bnRpbWUgY29udmVydHMgaXQgaW50byBhIFtgc3BfcnVudGltZTo6Z2VuZXJpYzo6Q2hlY2tlZEV4dHJpbnNpY2BdIGJ5IHJlY292ZXJpbmcgdGhlmHNpZ25lciBhbmQgdmFsaWRhdGluZyB0aGUgdHJhbnNhY3Rpb24uEGNhbGwUARBkZXN0cQcBEEgxNjAAARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0cQEBMEJhbGFuY2VPZjxUPgABEGRhdGEYARxWZWM8dTg+AAFABQFNYWtlcyBhIGNhbGwgdG8gYW4gYWNjb3VudCwgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmcgc29tZSBiYWxhbmNlLgAwIyBQYXJhbWV0ZXJzAKgqIGBkZXN0YDogQWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gY2FsbC78KiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byBgZGVzdGAuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQgZnJvbSB0aGWkICBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7EKiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0LgAlASogSWYgdGhlIGFjY291bnQgaXMgYSBzbWFydC1jb250cmFjdCBhY2NvdW50LCB0aGUgYXNzb2NpYXRlZCBjb2RlIHdpbGwgYmWsZXhlY3V0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLhUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHJlZ3VsYXIgYWNjb3VudCwgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuRQEqIElmIG5vIGFjY291bnQgZXhpc3RzIGFuZCB0aGUgY2FsbCB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIGBleGlzdGVudGlhbF9kZXBvc2l0YCwRAWEgcmVndWxhciBhY2NvdW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuLGluc3RhbnRpYXRlGAEUdmFsdWVxAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdHEBATBCYWxhbmNlT2Y8VD4AASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx0sQcBQE9wdGlvbjxbdTg7IDMyXT4AAhT0SW5zdGFudGlhdGVzIGEgY29udHJhY3QgZnJvbSBhIHByZXZpb3VzbHkgZGVwbG95ZWQgdm0gYmluYXJ5LgA1AVRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0gYnV0IHdpdGhvdXQgdGhlQQFjb2RlIGRlcGxveW1lbnQgc3RlcC4gSW5zdGVhZCwgdGhlIGBjb2RlX2hhc2hgIG9mIGFuIG9uLWNoYWluIGRlcGxveWVkIHZtIGJpbmFyeURtdXN0IGJlIHN1cHBsaWVkLlRpbnN0YW50aWF0ZV93aXRoX2NvZGUYARR2YWx1ZXEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0cQEBMEJhbGFuY2VPZjxUPgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx0sQcBQE9wdGlvbjxbdTg7IDMyXT4AA2wxAUluc3RhbnRpYXRlcyBhIG5ldyBjb250cmFjdCBmcm9tIHRoZSBzdXBwbGllZCBgY29kZWAgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmc0c29tZSBiYWxhbmNlLgAhAVRoaXMgZGlzcGF0Y2hhYmxlIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgY2FsbGluZyBbYFNlbGY6OnVwbG9hZF9jb2RlYF0gKz0BW2BTZWxmOjppbnN0YW50aWF0ZWBdLiBCdW5kbGluZyB0aGVtIHRvZ2V0aGVyIHByb3ZpZGVzIGVmZmljaWVuY3kgZ2FpbnMuIFBsZWFzZdhhbHNvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgU2VsZjo6dXBsb2FkX2NvZGVgXS4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQvcmVzZXJ2ZWTIICBmcm9tIHRoZSBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci49ASogYHNhbHRgOiBVc2VkIGZvciB0aGUgYWRkcmVzcyBkZXJpdmF0aW9uLiBJZiBgU29tZWAgaXMgc3VwcGxpZWQgdGhlbiBgQ1JFQVRFMmDUCXNlbWFudGljcyBhcmUgdXNlZC4gSWYgYE5vbmVgIHRoZW4gYENSQVRFMWAgaXMgdXNlZC4AAJRJbnN0YW50aWF0aW9uIGlzIGV4ZWN1dGVkIGFzIGZvbGxvd3M6ADkBLSBUaGUgc3VwcGxpZWQgYGNvZGVgIGlzIGRlcGxveWVkLCBhbmQgYSBgY29kZV9oYXNoYCBpcyBjcmVhdGVkIGZvciB0aGF0IGNvZGUuWQEtIElmIHRoZSBgY29kZV9oYXNoYCBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgY2hhaW4gdGhlIHVuZGVybHlpbmcgYGNvZGVgIHdpbGwgYmUgc2hhcmVkLkkBLSBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgc2VuZGVyLCBjb2RlX2hhc2ggYW5kIHRoZSBzYWx0LgEBLSBUaGUgc21hcnQtY29udHJhY3QgYWNjb3VudCBpcyBjcmVhdGVkIGF0IHRoZSBjb21wdXRlZCBhZGRyZXNzLsAtIFRoZSBgdmFsdWVgIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgYWNjb3VudC5BAS0gVGhlIGBkZXBsb3lgIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXdseS1jcmVhdGVkIGFjY291bnQuZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUgARR2YWx1ZbUHARBVMjU2AAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXS1BwEQVTI1NgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2W1BwEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAApUPQFTYW1lIGFzIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9uzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljADkBQ2FsbGluZyB0aGlzIGRpc3BhdGNoYWJsZSBlbnN1cmVzIHRoYXQgdGhlIG9yaWdpbidzIG5vbmNlIGlzIGJ1bXBlZCBvbmx5IG9uY2UsYQF2aWEgdGhlIGBDaGVja05vbmNlYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIEluIGNvbnRyYXN0LCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdTQFhbHNvIGJ1bXBzIHRoZSBub25jZSBhZnRlciBjb250cmFjdCBpbnN0YW50aWF0aW9uLCBzaW5jZSBpdCBtYXkgYmUgaW52b2tlZCBtdWx0aXBsZZh0aW1lcyB3aXRoaW4gYSBiYXRjaCBjYWxsIHRyYW5zYWN0aW9uLiBldGhfY2FsbCABEGRlc3RxBwEQSDE2MAABFHZhbHVltQcBEFUyNTYAATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdLUHARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2W1BwEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAAtA+FNhbWUgYXMgW2BTZWxmOjpjYWxsYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwDoKiBgZGVzdGA6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRvIGJlIGNhbGxlZE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb270KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY0hldGhfc3Vic3RyYXRlX2NhbGwIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAwo/EV4ZWN1dGVzIGEgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCBmcm9tIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLgBFAVRoaXMgZGlzcGF0Y2hhYmxlIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCAqKm9ubHkqKiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eRkBbGF5ZXIuIFRoZSBwcm92aWRlZCBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB1c2luZyBgUmF3T3JpZ2luOjpTaWduZWRgLgAwIyBQYXJhbWV0ZXJzAOQqIGBvcmlnaW5gOiBNdXN0IGJlIGFuIFtgT3JpZ2luOjpFdGhUcmFuc2FjdGlvbmBdIG9yaWdpbi7AKiBgY2FsbGA6IFRoZSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIHRvIGV4ZWN1dGUuGQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24sLHVwbG9hZF9jb2RlCAEQY29kZRgBHFZlYzx1OD4AAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRxAQEwQmFsYW5jZU9mPFQ+AAQ47FVwbG9hZCBuZXcgYGNvZGVgIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIGNvbnRyYWN0IGZyb20gaXQuACEBSWYgdGhlIGNvZGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBhIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgY2FsbGVyDQFUaGUgc2l6ZSBvZiB0aGUgcmVzZXJ2ZSBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIHRoZSBzdXBwbGllZCBgY29kZWAuABgjIE5vdGUAWQFBbnlvbmUgY2FuIGluc3RhbnRpYXRlIGEgY29udHJhY3QgZnJvbSBhbnkgdXBsb2FkZWQgY29kZSBhbmQgdGh1cyBwcmV2ZW50IGl0cyByZW1vdmFsLkEBVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24gYSBjb25zdHJ1Y3RvciBjb3VsZCBlbXBsb3kgYWNjZXNzIGNvbnRyb2wgc28gdGhhdCBpdCBjYW45AW9ubHkgYmUgaW5zdGFudGlhdGVkIGJ5IHBlcm1pc3Npb25lZCBlbnRpdGllcy4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHVwbG9hZGluZ6B0aHJvdWdoIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0uAEUBSWYgdGhlIHJlZmNvdW50IG9mIHRoZSBjb2RlIHJlYWNoZXMgemVybyBhZnRlciB0ZXJtaW5hdGluZyB0aGUgbGFzdCBjb250cmFjdCB0aGF09HJlZmVyZW5jZXMgdGhpcyBjb2RlLCB0aGUgY29kZSB3aWxsIGJlIHJlbW92ZWQgYXV0b21hdGljYWxseS4scmVtb3ZlX2NvZGUEASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAUQNQFSZW1vdmUgdGhlIGNvZGUgc3RvcmVkIHVuZGVyIGBjb2RlX2hhc2hgIGFuZCByZWZ1bmQgdGhlIGRlcG9zaXQgdG8gaXRzIG93bmVyLgBFAUEgY29kZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvcmlnaW5hbCB1cGxvYWRlciAoaXRzIG93bmVyKSBhbmQgb25seSBpZiBpdCBpc2Rub3QgdXNlZCBieSBhbnkgY29udHJhY3QuIHNldF9jb2RlCAEQZGVzdHEHARBIMTYwAAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgAGKAkBUHJpdmlsZWdlZCBmdW5jdGlvbiB0aGF0IGNoYW5nZXMgdGhlIGNvZGUgb2YgYW4gZXhpc3RpbmcgY29udHJhY3QuAEUBVGhpcyB0YWtlcyBjYXJlIG9mIHVwZGF0aW5nIHJlZmNvdW50cyBhbmQgYWxsIG90aGVyIG5lY2Vzc2FyeSBvcGVyYXRpb25zLiBSZXR1cm5z6GFuIGVycm9yIGlmIGVpdGhlciB0aGUgYGNvZGVfaGFzaGAgb3IgYGRlc3RgIGRvIG5vdCBleGlzdC4AGCMgTm90ZQAxAVRoaXMgZG9lcyAqKm5vdCoqIGNoYW5nZSB0aGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgaW4gcXVlc3Rpb24uIFRoaXMgbWVhbnM9AXRoYXQgdGhlIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm8gbG9uZ2VyIGRlcml2ZWQgZnJvbSBpdHMgY29kZSBoYXNoIGFmdGVyIGNhbGxpbmdIdGhpcyBkaXNwYXRjaGFibGUuLG1hcF9hY2NvdW50AAccQQFSZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gY29udHJhY3QgaW50ZXJhY3Rpb25zLgBdAVRoaXMgd2lsbCBlcnJvciBpZiB0aGUgb3JpZ2luIGlzIGFscmVhZHkgbWFwcGVkIG9yIGlzIGEgZXRoIG5hdGl2ZSBgQWRkcmVzczIwYC4gSXQgd2lsbB0BdGFrZSBhIGRlcG9zaXQgdGhhdCBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBbYFNlbGY6OnVubWFwX2FjY291bnRgXS4AOQFOb29wIHdoZW4gW2BDb25maWc6OkF1dG9NYXBgXSBpcyBlbmFibGVkLCBhcyBhY2NvdW50cyBhcmUgYXV0b21hdGljYWxseSBtYXBwZWR8b24gY3JlYXRpb24gdmlhIFtgQXV0b01hcHBlcmBdLkhiYXRjaF9tYXBfYWNjb3VudHMEASBhY2NvdW50c3kBAURWZWM8VDo6QWNjb3VudElkPgANBFkBTWFwIG1hbnkgYWNjb3VudHMgYW5kIG1ha2UgdGhlIFRYIGZyZWUgaWYgYXQgbGVhc3QgOTAlIHdlcmUgdW5tYXBwZWQgb3IgaGVsZCBkZXBvc2l0cy40dW5tYXBfYWNjb3VudAAIHPxVbnJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgaW4gb3JkZXIgdG8gZnJlZSB0aGUgZGVwb3NpdC4AQQFUaGVyZSBpcyBubyByZWFzb24gdG8gZXZlciBjYWxsIHRoaXMgZnVuY3Rpb24gb3RoZXIgdGhhbiBmcmVlaW5nIHVwIHRoZSBkZXBvc2l0LvhUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdGhlIGFjY291bnQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgBRAURpc2FibGVkIHdoZW4gW2BDb25maWc6OkF1dG9NYXBgXSBpcyBlbmFibGVkLCBhcyBhY2NvdW50cyBhcmUgYXV0b21hdGljYWxseSB1bm1hcHBlZGxvbiBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS5wZGlzcGF0Y2hfYXNfZmFsbGJhY2tfYWNjb3VudAQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAkUHQFEaXNwYXRjaCBhbiBgY2FsbGAgd2l0aCB0aGUgb3JpZ2luIHNldCB0byB0aGUgY2FsbGVycyBmYWxsYmFjayBhZGRyZXNzLgBhAUV2ZXJ5IGBBY2NvdW50SWQzMmAgY2FuIGNvbnRyb2wgaXRzIGNvcnJlc3BvbmRpbmcgZmFsbGJhY2sgYWNjb3VudC4gVGhlIGZhbGxiYWNrIGFjY291bnRBAWlzIHRoZSBgQWNjb3VudElkMjBgIHdpdGggdGhlIGxhc3QgMTIgYnl0ZXMgc2V0IHRvIGAweEVFYC4gVGhpcyBpcyBlc3NlbnRpYWxseSBhVQFyZWNvdmVyeSBmdW5jdGlvbiBpbiBjYXNlIGFuIGBBY2NvdW50SWQyMGAgd2FzIHVzZWQgd2l0aG91dCBjcmVhdGluZyBhIG1hcHBpbmcgZmlyc3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEHBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAtQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEALkHASBbdTY0OyA0XQAAuQcAAAMEAAAAKAC9BwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZb0EAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWzBBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXnFBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWzJBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAGxJAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYClJAWZvciBhIExpdGUgUGVyc29uLCBhbmQgb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXKgaW50ZW5kcyB0byBjbGFpbSBhcyBhIEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieWUBICBgUGFsbGV0Ojpjb25zdHJ1Y3RfcmVzZXJ2YXRpb25fbWVzc2FnZWAg4oCUIGEgU0NBTEUtZW5jb2RlZCB0dXBsZSBiaW5kaW5nIHRoZSBhdHRlc3RlcixZASAgY2FuZGlkYXRlLCB0aGUgY2FuZGlkYXRlJ3MgY2hvc2VuICpiYXNlKiB1c2VybmFtZSwgYW5kIGNoYXQga2V5LiBUaGUgZGlnaXQgc3VmZml4IG9mOQEgIGBsaXRlX2xhYmVsYCBpcyAqKm5vdCoqIHBhcnQgb2YgdGhlIHNpZ25lZCBtZXNzYWdlICh0aGUgZGlnaXRzIGFyZSBhbGxvY2F0ZWRJASAgc2VydmVyLXNpZGUgYWZ0ZXIgdGhlIGNhbmRpZGF0ZSBzaWducywgc28gdGhlIGNhbmRpZGF0ZSBjYW5ub3QgY29tbWl0IHRvIHRoZW0gYXRAICBzaWduaW5nIHRpbWUpLjUBLSBgbGl0ZV9sYWJlbGA6IHRoZSBsaXRlLXBlcnNvbiBsYWJlbC4gTXVzdCBiZSBgPGRucy1zdGVtPi48MisgZGlnaXRzPmAgKGUuZy5JASAgYGFsaWNlLjQyYCksIG1hdGNoaW5nIGBTdHJpbmdVdGlscy5pc0xpdGVQZXJzb25MYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy4gT25seSB0aGVZASAgYDxkbnMtc3RlbT5gIHBvcnRpb24gZW50ZXJzIHRoZSBzaWduZWQgbWVzc2FnZTsgdGhlIGRpZ2l0cyByaWRlIGFsb25nIGFzIGFuIHVuc2lnbmVkEQEgIGV4dHJpbnNpYyBhcmd1bWVudCB1c2VkIGZvciB0aGUgY29udHJhY3QgY2FsbGRhdGEgYW5kIHN0b3JhZ2Uga2V5LtAtIGBjaGF0X2tleWA6IDY1LWJ5dGUgcHVibGljIGtleSB1c2VkIGZvciBFQ0RIIGNoYXQuWQEtIGByZXNlcnZlZF9iYXNlX2xhYmVsYDogb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgdGhlIGNhbmRpZGF0ZSB0byBsYXRlciBjbGFpbfggIGFzIGEgRnVsbCBQZXJzb24uIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLlkBLSBgc2lnbmVkX2F0YDogVW5peC10aW1lIHNlY29uZCBhdCB3aGljaCB0aGUgY2FuZGlkYXRlIHNpZ25lZCB0aGUgcmVzZXJ2YXRpb24gbWVzc2FnZS5ZASAgVGhlIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgIGFuZCBgbm93SQEgIDw9IHNpZ25lZF9hdCArIE1heFZhbGlkaXR5U2Vjb25kc2AsIHdoZXJlIGBub3dgIGNvbWVzIGZyb20gW2BDb25maWc6OlVuaXhUaW1lYF0uNHJlZ2lzdGVyX25hbWUMAQx3aG8EATBUOjpBY2NvdW50SWQAARRsYWJlbMEHASRCYXNlTGFiZWwAARBsaW5rzQcBEExpbmsAAUhNAVJlZ2lzdGVycyBhIGZ1bGwtcGVyc29uIGxhYmVsIG9uIGBEb3Ruc1BvcENvbnRyb2xsZXJgICh2aWEgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmApaGZvciBhIGZ1bGx5IHByb3ZlbiBwZXJzb24uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFtgT3JpZ2luOjpQZXJzb25SZWdpc3RyYXRpb25gXSwgcHJvZHVjZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdIGFmdGVyRQFpdCB2ZXJpZmllcyB0aGUgcmluZyBtZW1iZXJzaGlwIHByb29mIGFuZCB0aGUgb2ZmLWNoYWluIHNpZ25hdHVyZSBmcm9tIGB3aG9gLiBBbGz8YXV0aGVudGljYXRpb24sIGZvcm1hdCBhbmQgcmVwbGF5IGNoZWNrcyBsaXZlIGluIHRoZSBleHRlbnNpb24uADAjIFBhcmFtZXRlcnNNAS0gYHdob2A6IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgZnVsbC1wZXJzb24gbGFiZWw7IGl0cyBFVk0tbWFwcGVkIGFkZHJlc3MgaXMgdGhlOQEgIHJlY2lwaWVudCBvbiB0aGUgYERvdG5zUG9wQ29udHJvbGxlcmAgY29udHJhY3QuIE11c3QgbWF0Y2ggdGhlIGB3aG9gIGFscmVhZHmYICBhdXRoZW50aWNhdGVkIGJ5IFtgQXNEb3Ruc0dhdGV3YXlgXS5VAS0gYGxhYmVsYDogdGhlIGZ1bGwtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGEgc2luZ2xlIEROUyBsYWJlbCAoZS5nLiBgYWxpY2VgKSwgbWF0Y2hpbme8ICBgU3RyaW5nVXRpbHMuaXNTaW5nbGVMYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy5BAS0gYGxpbmtgOiBob3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBwcmUtZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWw6VQEgIC0gYExpbms6OkxpdGVVc2VybmFtZShsaXRlX2xhYmVsKWAg4oCUIGxpbmtzIHRvIGFuIGV4aXN0aW5nIGxpdGUtcGVyc29uIGxhYmVsIChtdXN0XQEgICAgbWF0Y2ggdGhlIGxpdGUgZm9ybWF0IGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCk7IHRoZSBjaGF0IGtleSBpcyBpbmhlcml0ZWQgZnJvbSB0aGU8ICAgIGxpdGUgZW50cnkuSQEgIC0gYExpbms6Ok5vbmUoY2hhdF9rZXkpYCDigJQgc3RhbmRhbG9uZSByZWdpc3RyYXRpb24gd2l0aCBhIGZyZXNoIEVDREggY2hhdCBrZXkueGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgACDNBHcmFudHMgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwzkQ2xlYXJzIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuWHNldF9kaXNwYXRjaGVyX2FkZHJlc3MEARxhZGRyZXNzcQcBEEgxNjAABAzIU2V0cyB0aGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcy4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYERpc3BhdGNoZXJBZGRyZXNzTWFuYWdlcmAuIE92ZXJ3cml0ZXMgYW55IHByaW9yIHZhbHVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7BBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMkQmFzZUxhYmVsAAAEAN0DAXBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwzMj4+AADFBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMcQ2hhdEtleQAABACRAQEgW3U4OyA2NV0AAMkHBBhPcHRpb24EBFQBwQcBCBBOb25lAAAAEFNvbWUEAMEHAAABAADNBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMQTGluawABCDBMaXRlVXNlcm5hbWUEAMEHASRCYXNlTGFiZWwAAAAQTm9uZQQAxQcBHENoYXRLZXkAAQAA0QcMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHnVBwFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QcIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVAUmVzdHJpY3RlZEVudGl0eQABBFxEb3Ruc1BlcnNvblJlZ2lzdHJhdGlvbgQACAFwaW5kaXZfc3VwcG9ydDo6dHJhaXRzOjpBbGlhcwAAAADZBwwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodBEBARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7dBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAADhBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAADlBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAA6QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAA7QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAAPEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQA9QcBDEVyYQAA9QcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AAD5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABgASBUOjpOb25jZQAA/QcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAAABCAiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwcQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkVQMBSE9wdGlvbjxUOjpBc3NldElkPgAABQgMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltc0hQcmV2YWxpZGF0ZUF0dGVzdHMEBFQAAAAACQgIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2RlDQgBEE1vZGUAAA0ICHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAAEQgQNHBhbGxldF9yZXZpdmUMZXZtMHR4X2V4dGVuc2lvbiRTZXRPcmlnaW4EBFQAAAAAFQgMXHBhbGxldF92ZXJpZnlfc2lnbmF0dXJlJGV4dGVuc2lvbjxWZXJpZnlTaWduYXR1cmUEBFQAAQggRGlzYWJsZWQAAAAYU2lnbmVkCAEkc2lnbmF0dXJlvQQBMFQ6OlNpZ25hdHVyZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQAAGQgMVGluZGl2X3BhbGxldF9zY2FyY2l0eSRleHRlbnNpb24oQXNTY2FyY2l0eQQEVAAABAAdCAFYT3B0aW9uPEFzU2NhcmNpdHlJbmZvPgAAHQgEGE9wdGlvbgQEVAEhCAEIEE5vbmUAAAAQU29tZQQAIQgAAAEAACEIDFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkkZXh0ZW5zaW9uOEFzU2NhcmNpdHlJbmZvAAEEFEFzTmZ0CAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEsc3RhdGVfbm9uY2UoAQx1NjQAAAAAJQgMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbhhBc1BnYXMEBFQAAAQAKQgBVE9wdGlvbjxBc1BnYXNJbmZvPFQ+PgAAKQgEGE9wdGlvbgQEVAEtCAEIEE5vbmUAAAAQU29tZQQALQgAAAEAAC0IDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24oQXNQZ2FzSW5mbwQEVAABCBRDbGFpbRQBFHByb29mnQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAAAChCYXRjaENsYWltFAEUcHJvb2adBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAEMZGF5OAEMdTMyAAEAADEIDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheSRleHRlbnNpb244QXNEb3Ruc0dhdGV3YXkEBFQAAAQANQgBdE9wdGlvbjxBc0RvdG5zR2F0ZXdheUluZm88VD4+AAA1CAQYT3B0aW9uBARUATkIAQgQTm9uZQAAABBTb21lBAA5CAAAAQAAOQgMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5JGV4dGVuc2lvbkhBc0RvdG5zR2F0ZXdheUluZm8EBFQAAQRAUmVnaXN0ZXJGdWxsTmFtZRABFHByb29mnQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEkc2lnbmF0dXJlvQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAAAAD0ICHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAHUBARBib29sAABBCAgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAUUIABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGFFCAEsQWNjb3VudERhdGEAAEUIDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBNQEAEAEQZnJlZTUBARxCYWxhbmNlAAEgcmVzZXJ2ZWQ1AQEcQmFsYW5jZQABGGZyb3plbjUBARxCYWxhbmNlAAEUZmxhZ3NJCAEoRXh0cmFGbGFncwAASQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEADUBARB1MTI4AABNCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAREBAAwBGG5vcm1hbBEBAQRUAAEsb3BlcmF0aW9uYWwRAQEEVAABJG1hbmRhdG9yeREBAQRUAABRCAAAAlUIAFUICDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBWQgEVAE8AAwBFHBoYXNlSQoBFFBoYXNlAAEUZXZlbnRZCAEERQABGHRvcGljc8ABGFZlYzxUPgAAWQgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAH0GFN5c3RlbQQAXQgBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBACFCAG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAgUHJlaW1hZ2UEAIkIAXxwYWxsZXRfcHJlaW1hZ2U6OkV2ZW50PFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAjQgBgHBhbGxldF9zY2hlZHVsZXI6OkV2ZW50PFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEAJUIAYRwYWxsZXRfcGFyYW1ldGVyczo6RXZlbnQ8UnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAMUIAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ACAA0TmV0d29ya1N1ZmZpeAQAyQgBrGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeDo6RXZlbnQ8UnVudGltZT4AmgAgQmFsYW5jZXMEAM0IAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQADQkBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALADhBc3NldFR4UGF5bWVudAQAEQkByHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AA0AHFZlc3RpbmcEABUJAXhwYWxsZXRfdmVzdGluZzo6RXZlbnQ8UnVudGltZT4ADgAYQ2xhaW1zBAAZCQF0cGFsbGV0X2NsYWltczo6RXZlbnQ8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAB0JAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBAAhCQF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAJQkBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAApCQFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAOQkBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEAD0JAVkBcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcjo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcgo6Okluc3RhbmNlMT4AIgAwTWVzc2FnZVF1ZXVlBABBCQGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQASQkBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXZlbnQ8UnVudGltZT4AJAAcVXRpbGl0eQQATQkBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQAUQkBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAFUJAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAHEluZGljZXMEAF0JAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4AKwAYQXNzZXRzBABhCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBABlCQF4cGFsbGV0X3VuaXF1ZXM6OkV2ZW50PFJ1bnRpbWU+ADMAEE5mdHMEAGkJAWxwYWxsZXRfbmZ0czo6RXZlbnQ8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAcQkB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQAdQkB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBAB5CQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkV2ZW50PFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEAIkJAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBACNCQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBTY2FyY2l0eQQAkQkBlGluZGl2X3BhbGxldF9zY2FyY2l0eTo6RXZlbnQ8UnVudGltZT4AOgAMUHNtBACVCQFocGFsbGV0X3BzbTo6RXZlbnQ8UnVudGltZT4AOwAgVHJlYXN1cnkEAJkJAXxwYWxsZXRfdHJlYXN1cnk6OkV2ZW50PFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAJ0JAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkV2ZW50PFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAoQkBgHBhbGxldF9yZWZlcmVuZGE6OkV2ZW50PFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAqQkBgHBhbGxldF93aGl0ZWxpc3Q6OkV2ZW50PFJ1bnRpbWU+AEAAIEJvdW50aWVzBAC5CQF8cGFsbGV0X2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAC9CQGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBCACRBc3NldFJhdGUEAMEJAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXZlbnQ8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBADFCQGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBEAAxEYXAEAMkJAWhwYWxsZXRfZGFwOjpFdmVudDxSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EANEJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkV2ZW50PFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQA3QkBnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFdmVudDxSdW50aW1lPgBQACRWb3Rlckxpc3QEAOUJAfRwYWxsZXRfYmFnc19saXN0OjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAOkJAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQA7QkBuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXZlbnQ8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBAD1CQHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFdmVudDxSdW50aW1lPgBVAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgQA+QkB+HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6dmVyaWZpZXI6OkV2ZW50PFJ1bnRpbWU+AFYAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQACQoB8HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6c2lnbmVkOjpFdmVudDxSdW50aW1lPgBYABxTdGFraW5nBAANCgGQcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkV2ZW50PFJ1bnRpbWU+AFkAJE5mdENsYWltcwQAHQoBnGluZGl2X3BhbGxldF9uZnRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgBgAERNZW1iZXJzU3Vic2NyaWJlcgQAKQoBvGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXI6OkV2ZW50PFJ1bnRpbWU+AGEANEFsaWFzQWNjb3VudHMEAC0KAaxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6OkV2ZW50PFJ1bnRpbWU+AGIAEFBnYXMEADEKAYRpbmRpdl9wYWxsZXRfcGdhczo6RXZlbnQ8UnVudGltZT4AYwAYUmV2aXZlBAA1CgF0cGFsbGV0X3Jldml2ZTo6RXZlbnQ8UnVudGltZT4AZAAwRG90bnNHYXRld2F5BAA5CgGoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6OkV2ZW50PFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBAA9CgG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXZlbnQ8UnVudGltZT4AmQAQU3VkbwQAQQoBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgD7ADRQZ2FzQWxsb3dhbmNlBABFCgGUcGFsbGV0X3BnYXNfYWxsb3dhbmNlOjpFdmVudDxSdW50aW1lPgD8AABdCAwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABIEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb2EIAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3JtCAE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm9hCAFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQEARBoYXNoPAEcVDo6SGFzaAACBNBgOmNvZGVgIHdhcyB1cGRhdGVkIHRvIHRoZSBjb2RlIHdpdGggdGhlIGdpdmVuIGhhc2guKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb251AQEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvcm0IATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LmEICDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc2UIATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWVpCAEQUGF5cwAAZQgMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAGkIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAG0ICChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEAHEIASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBAB1CAEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAB5CAE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAH0IAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAgQgBJFRyaWVFcnJvcgAOAABxCAgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAHUICChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAHkICDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAfQgIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAIEIDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAACFCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWQRAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaLEHATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkIDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0FEV2ZW50BARUAAEMFE5vdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAARoQSBwcmVpbWFnZSBoYXMgYmVlbiBub3RlZC4kUmVxdWVzdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAQR4QSBwcmVpbWFnZSBoYXMgYmVlbiByZXF1ZXN0ZWQuHENsZWFyZWQEARBoYXNoPAEcVDo6SGFzaAACBGxBIHByZWltYWdlIGhhcyBiZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSNCAxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQURXZlbnQEBFQAASgkU2NoZWR1bGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAARQU2NoZWR1bGVkIHNvbWUgdGFzay4gQ2FuY2VsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABBExDYW5jZWxlZCBzb21lIHRhc2suKERpc3BhdGNoZWQMARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSxBwFAT3B0aW9uPFRhc2tOYW1lPgABGHJlc3VsdJEIAThEaXNwYXRjaFJlc3VsdAACBFREaXNwYXRjaGVkIHNvbWUgdGFzay4gUmV0cnlTZXQQARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSxBwFAT3B0aW9uPFRhc2tOYW1lPgABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAEccmV0cmllcwwBCHU4AAMEoFNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay44UmV0cnlDYW5jZWxsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWSxBwFAT3B0aW9uPFRhc2tOYW1lPgAEBKxDYW5jZWwgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suPENhbGxVbmF2YWlsYWJsZQgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZLEHAUBPcHRpb248VGFza05hbWU+AAUEKQFUaGUgY2FsbCBmb3IgdGhlIHByb3ZpZGVkIGhhc2ggd2FzIG5vdCBmb3VuZCBzbyB0aGUgdGFzayBoYXMgYmVlbiBhYm9ydGVkLjhQZXJpb2RpY0ZhaWxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZLEHAUBPcHRpb248VGFza05hbWU+AAYEPQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJlbmV3ZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2suLFJldHJ5RmFpbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlksQcBQE9wdGlvbjxUYXNrTmFtZT4ABwhdAVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmV0cmllZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jayBvciB0aGVyZZx3YXMgbm90IGVub3VnaCB3ZWlnaHQgdG8gcmVzY2hlZHVsZSBpdC5UUGVybWFuZW50bHlPdmVyd2VpZ2h0CAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlksQcBQE9wdGlvbjxUYXNrTmFtZT4ACATwVGhlIGdpdmVuIHRhc2sgY2FuIG5ldmVyIGJlIGV4ZWN1dGVkIHNpbmNlIGl0IGlzIG92ZXJ3ZWlnaHQuQEFnZW5kYUluY29tcGxldGUEARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4ACQSEQWdlbmRhIGlzIGluY29tcGxldGUgZnJvbSBgd2hlbmAuBDBFdmVudHMgdHlwZS6RCAQYUmVzdWx0CARUARAERQFtCAEICE9rBAAQAAAAAAxFcnIEAG0IAAABAACVCAxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0FEV2ZW50BARUAAEEHFVwZGF0ZWQMAQxrZXmZCAHEPFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQRkVGhlIGtleSB0aGF0IHdhcyB1cGRhdGVkLgEkb2xkX3ZhbHVlrQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHxUaGUgb2xkIHZhbHVlIGJlZm9yZSB0aGlzIGNhbGwuASRuZXdfdmFsdWWtCAHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EeFRoZSBuZXcgdmFsdWUgYWZ0ZXIgdGhpcyBjYWxsLgAMUEEgUGFyYW1ldGVyIHdhcyBzZXQuALxJcyBhbHNvIGVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgd2FzIG5vdCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkICHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEQPFN0YWtpbmdFbGVjdGlvbgQAnQgBxQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQAAACRTY2hlZHVsZXIEAKEIAakBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQABADBNZXNzYWdlUXVldWUEAKUIAbkBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAgA0QWxpYXNBY2NvdW50cwQAqQgBvQE8ZHluYW1pY19wYXJhbXM6OmFsaWFzX2FjY291bnRzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAwAAnQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRQYXJhbWV0ZXJzS2V5AAEcLFNpZ25lZFBoYXNlBADcASxTaWduZWRQaGFzZQAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAQA0VW5zaWduZWRQaGFzZQQA6AE0VW5zaWduZWRQaGFzZQACAChNaW5lclBhZ2VzBADsAShNaW5lclBhZ2VzAAMARE1heEVsZWN0aW5nVm90ZXJzBADwAURNYXhFbGVjdGluZ1ZvdGVycwAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAUAOE1heEVyYUR1cmF0aW9uBAD4AThNYXhFcmFEdXJhdGlvbgAGAAChCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0UGFyYW1ldGVyc0tleQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQABQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAAAANE1heGltdW1XZWlnaHQEAAkBATRNYXhpbXVtV2VpZ2h0AAEAAKUIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU0UGFyYW1ldGVyc0tleQABCDxNYXhPbkluaXRXZWlnaHQEABkBATxNYXhPbkluaXRXZWlnaHQAAAA8TWF4T25JZGxlV2VpZ2h0BAAhAQE8TWF4T25JZGxlV2VpZ2h0AAEAAKkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zOGFsaWFzX2FjY291bnRzNFBhcmFtZXRlcnNLZXkAAQggQWxpYXNGZWUEACkBASBBbGlhc0ZlZQAAAFxTdGFsZUFsaWFzU3dlZXBJbnRlcnZhbAQAOQEBXFN0YWxlQWxpYXNTd2VlcEludGVydmFsAAEAAK0IBBhPcHRpb24EBFQBsQgBCBBOb25lAAAAEFNvbWUEALEIAAABAACxCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZVhSdW50aW1lUGFyYW1ldGVyc1ZhbHVlAAEQPFN0YWtpbmdFbGVjdGlvbgQAtQgBzQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAJFNjaGVkdWxlcgQAuQgBsQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAQAwTWVzc2FnZVF1ZXVlBAC9CAHBATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgA0QWxpYXNBY2NvdW50cwQAwQgBxQE8ZHluYW1pY19wYXJhbXM6OmFsaWFzX2FjY291bnRzOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQADAAC1CBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uPFBhcmFtZXRlcnNWYWx1ZQABHCxTaWduZWRQaGFzZQQAOAEsQmxvY2tOdW1iZXIAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEADgBDHUzMgABADRVbnNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgACAChNaW5lclBhZ2VzBAA4AQx1MzIAAwBETWF4RWxlY3RpbmdWb3RlcnMEADgBDHUzMgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAA4AQx1MzIABQA4TWF4RXJhRHVyYXRpb24EACgBDHU2NAAGAAC5CBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI8UGFyYW1ldGVyc1ZhbHVlAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAA4AQx1MzIAAAA0TWF4aW11bVdlaWdodAQAEQEBGFdlaWdodAABAAC9CBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPFBhcmFtZXRlcnNWYWx1ZQABCDxNYXhPbkluaXRXZWlnaHQEAA0BAThPcHRpb248V2VpZ2h0PgAAADxNYXhPbklkbGVXZWlnaHQEAA0BAThPcHRpb248V2VpZ2h0PgABAADBCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczhhbGlhc19hY2NvdW50czxQYXJhbWV0ZXJzVmFsdWUAAQggQWxpYXNGZWUEADEBATxPcHRpb248QmFsYW5jZT4AAABcU3RhbGVBbGlhc1N3ZWVwSW50ZXJ2YWwEADgBLEJsb2NrTnVtYmVyAAEAAMUIDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29yYQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQgMbGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeBhwYWxsZXQURXZlbnQEBFQAAQRATmV0d29ya1N1ZmZpeFNldAgBDG9sZGkBAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAQxuZXdpAQFsUHJvZHVjdENvbnRleHROZXR3b3JrU3VmZml4AAAEbFRoZSBuZXR3b3JrIHN1ZmZpeCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0IDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVlNQEBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c9EIARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnQ1AQEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnQ1AQEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudDUBAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZDUBAShUOjpCYWxhbmNlAAEMbmV3NQEBKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29u1QgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbtUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb27VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb27VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWQ1AQEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29u1QgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAAkJAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAA1QgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AATAgUHJlaW1hZ2UEANkIAWxwYWxsZXRfcHJlaW1hZ2U6OkhvbGRSZWFzb24ABQAcU2Vzc2lvbgQA3QgBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBADhCAFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfACBTY2FyY2l0eQQA5QgBhGluZGl2X3BhbGxldF9zY2FyY2l0eTo6SG9sZFJlYXNvbgA6AAxQc20EAOkIAVhwYWxsZXRfcHNtOjpIb2xkUmVhc29uADsASE11bHRpQXNzZXRCb3VudGllcwQA7QgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAPEIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQA9QgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAPkIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAD9CAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAAQkBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQABQkBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAA2QgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAADdCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAADhCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAADlCAxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldChIb2xkUmVhc29uAAEEOFN0b3JhZ2VEZXBvc2l0AAAAAOkIDChwYWxsZXRfcHNtGHBhbGxldChIb2xkUmVhc29uAAEEPENyZWF0aW9uRGVwb3NpdAAAAADtCAxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAPEIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAPUIDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0KEhvbGRSZWFzb24AAQREU3Rha2luZ0RlbGVnYXRpb24AAAAA+QgMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAP0IEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldChIb2xkUmVhc29uAAEEQFNpZ25lZFN1Ym1pc3Npb24AAAAAAQkQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQoSG9sZFJlYXNvbgABBBxTdGFraW5nAAAAAAUJDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAACQkMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAA0JDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZTUBATBCYWxhbmNlT2Y8VD4AAQx0aXA1AQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEJDIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABCDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWU1AQEwQmFsYW5jZU9mPFQ+AAEMdGlwNQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHQ1AQEwQmFsYW5jZU9mPFQ+AAEE9EEgc3dhcCBvZiB0aGUgcmVmdW5kIGluIG5hdGl2ZSBjdXJyZW5jeSBiYWNrIHRvIGFzc2V0IGZhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEMOFZlc3RpbmdDcmVhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAAEkEEgdmVzdGluZyBzY2hlZHVsZSBoYXMgYmVlbiBjcmVhdGVkLjhWZXN0aW5nVXBkYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1bnZlc3RlZDUBATBCYWxhbmNlT2Y8VD4AAQhRAVRoZSBhbW91bnQgdmVzdGVkIGhhcyBiZWVuIHVwZGF0ZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBjaGFuZ2UgaW4gZnVuZHMgYXZhaWxhYmxlLiUBVGhlIGJhbGFuY2UgZ2l2ZW4gaXMgdGhlIGFtb3VudCB3aGljaCBpcyBsZWZ0IHVudmVzdGVkIChhbmQgdGh1cyBsb2NrZWQpLkBWZXN0aW5nQ29tcGxldGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJxBbiBcW2FjY291bnRcXSBoYXMgYmVjb21lIGZ1bGx5IHZlc3RlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZCRBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc5UBATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAAEaFNvbWVvbmUgY2xhaW1lZCBzb21lIERPVHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQkMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzeQEBRFZlYzxUOjpBY2NvdW50SWQ+AAAEbE5ldyBJbnZ1bG5lcmFibGVzIHdlcmUgc2V0LkRJbnZ1bG5lcmFibGVBZGRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQR0QSBuZXcgSW52dWxuZXJhYmxlIHdhcyBhZGRlZC5MSW52dWxuZXJhYmxlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAgRwQW4gSW52dWxuZXJhYmxlIHdhcyByZW1vdmVkLlBOZXdEZXNpcmVkQ2FuZGlkYXRlcwQBSGRlc2lyZWRfY2FuZGlkYXRlczgBDHUzMgADBKRUaGUgbnVtYmVyIG9mIGRlc2lyZWQgY2FuZGlkYXRlcyB3YXMgc2V0LkBOZXdDYW5kaWRhY3lCb25kBAEsYm9uZF9hbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgAGBHBCb25kIG9mIGEgY2FuZGlkYXRlIHVwZGF0ZWQuQENhbmRpZGF0ZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAcEYEEgY2FuZGlkYXRlIHdhcyByZW1vdmVkLkRDYW5kaWRhdGVSZXBsYWNlZAwBDG9sZAQBMFQ6OkFjY291bnRJZAABDG5ldwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXQ1AQEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0IQkMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQkMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQkMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWUtCQFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW4ZAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABHG1lc3NhZ2URAwEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2luGQIBIExvY2F0aW9uAAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARRlcnJvcjUJASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2luGQIBIExvY2F0aW9uAAEUZXJyb3JBAwEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZTUDASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0EQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQRAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb25VAwFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luGQIBIExvY2F0aW9uAAEYYXNzZXRziQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3QdAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb24ZAgEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9uGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3JBAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uxQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2luGQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbhkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXIZAgEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllclUDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABEGNvc3QdAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb24ZAgEgTG9jYXRpb24AARBjb3N0HQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9uGQIBIExvY2F0aW9uAAEQY29zdB0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZxkCASBMb2NhdGlvbgABEGZlZXMdAwEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbhkCASBMb2NhdGlvbgABGGFzc2V0c4kDATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2VyGQIBIExvY2F0aW9uAAEYdGFyZ2V0GQIBIExvY2F0aW9uAAEYZXhwaXJ5/AEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2VyGQIBIExvY2F0aW9uAAEYdGFyZ2V0GQIBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0GQIBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0JECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQRAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkEQEBGFdlaWdodAABFGVycm9yMQkBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEADEJAUBJbnN0cnVjdGlvbkVycm9yAAIAADEJECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3JBAwEURXJyb3IAADUJEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAADkJDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAC0JARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ9CQxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWVJBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVlSQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEJDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luzQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3JFCQFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luzQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQRAQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3N1AQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7NAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUJEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEABEBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAASQkMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQURXZlbnQEBFQAAQgsTWVzc2FnZVNlbnQQARhvcmlnaW4ZAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbhkCASBMb2NhdGlvbgABHG1lc3NhZ2URAwEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAAEPEFuIFhDTSB3YXMgc2VudGhFeHBvcnRPcGVyYXRpbmdNb2RlQ2hhbmdlZAQBEG1vZGXVAwE0T3BlcmF0aW5nTW9kZQABBERTZXQgT3BlcmF0aW5nTW9kZQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0JDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3JtCAE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3JtCAE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0kQgBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3JtCAE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCQw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50NQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0kQgBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQ1BAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRVCQwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0kQgBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVBBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjtAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV47QMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlQQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZFkJASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0WQkIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAAXQkMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgADBOhBIGRlcG9zaXQgdG8gcmVzZXJ2ZSBhbiBpbmRleCBoYXMgYmVlbiBwb2tlZC9yZWNvbnNpZGVyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0YQkMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2U1AQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlNQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlc1EEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRlCQw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEV2ZW50CARUAARJAAFsHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLhhGcm96ZW4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBFxTb21lIGBpdGVtYCB3YXMgZnJvemVuLhhUaGF3ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBFxTb21lIGBpdGVtYCB3YXMgdGhhd2VkLkBDb2xsZWN0aW9uRnJvemVuBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAIBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgZnJvemVuLkBDb2xsZWN0aW9uVGhhd2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgdGhhd2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBBcHByb3ZlZFRyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuREl0ZW1TdGF0dXNDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAOBBEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFlBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVudQEBEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zYQQBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAUBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXndAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2U1AQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZTUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAaBExBbiBpdGVtIHdhcyBib3VnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0aQkMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YXUBARBib29sAAE8bG9ja19hdHRyaWJ1dGVzdQEBEGJvb2wACASoYGl0ZW1gIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgd2VyZSBsb2NrZWQuQENvbGxlY3Rpb25Mb2NrZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBsb2NrZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABFGFkbWluqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcZnJlZXplcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQFRyYW5zZmVyQXBwcm92ZWQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASBkZWFkbGluZeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhWQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YVkBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNhBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVZAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFQQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AGQTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAaBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLnRDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGwSsTWludCBzZXR0aW5ncyBmb3IgYSBjb2xsZWN0aW9uIGhhZCBjaGFuZ2VkLmxOZXh0Q29sbGVjdGlvbklkSW5jcmVtZW50ZWQEARxuZXh0X2lk4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZTUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgAdBHxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGl0ZW0uQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAeBIxUaGUgcHJpY2UgZm9yIHRoZSBpdGVtIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZTUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACIEXFRoZSBzd2FwIHdhcyBjYW5jZWxsZWQuLFN3YXBDbGFpbWVkIAE8c2VudF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VudF9pdGVtOAEkVDo6SXRlbUlkAAE8c2VudF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAFMcmVjZWl2ZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNHJlY2VpdmVkX2l0ZW04ASRUOjpJdGVtSWQAAUxyZWNlaXZlZF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAEUcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIwRoVGhlIHN3YXAgaGFzIGJlZW4gY2xhaW1lZC5YUHJlU2lnbmVkQXR0cmlidXRlc1NldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ACQE/E5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBzZXQgZm9yIGFuIGBpdGVtYCBvZiB0aGUgYGNvbGxlY3Rpb25gLkhQYWxsZXRBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRlbQkBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlWQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0bQkMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAHEJDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZTUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZBkCAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEgcmVzZXJ2ZXPVBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQZAgEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZBkCAShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkGQIBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1CQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZTUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW51AQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2U1AQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzUQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudDUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHkJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkfQkBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWR9CQEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZDUBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWQ1AQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWQ1AQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWR9CQEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDE1AQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MjUBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWQ1AQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWX9BAEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW41AQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXQ1AQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aIEJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW41AQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXQ1AQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aIEJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWR9CQEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0fQkAAAQIGQIZAgCBCQAAAoUJAIUJAAAECBkCNQEAiQkMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXZlbnQIBFQABEkAAQgYRnJvemVuDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAQAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSNCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb27VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnQ1AQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYcmVhc29u1QgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50NQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb27VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnQ1AQEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQkMVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQURXZlbnQEBFQAAUBEQ29sbGVjdGlvbkNyZWF0ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAATsQSBjb2xsZWN0aW9uIHdhcyBjcmVhdGVkIGFuZCBhc3NpZ25lZCB0byBpdHMgaW5pdGlhbCBvd25lci5gQ29sbGVjdGlvbk93bmVyTm9taW5hdGVkCAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABNHBlbmRpbmdfb3duZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AAQT4VGhlIGNvbGxlY3Rpb24gb3duZXIgbm9taW5hdGVkIG9yIGNsZWFyZWQgYSBwcm9zcGVjdGl2ZSBvd25lci5YQ29sbGVjdGlvbk93bmVyQ2hhbmdlZAwBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAASRvbGRfb3duZXIEATBUOjpBY2NvdW50SWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQAAgRVAUEgbm9taW5hdGVkIGFjY291bnQgY2xhaW1lZCB0aGUgY29sbGVjdGlvbiBhbmQgYXNzdW1lZCBpdHMgYWdncmVnYXRlIHN0b3JhZ2UgZGVwb3NpdC5EQ29sbGVjdGlvbkRlbGV0ZWQEAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAMEDQFBbiBlbXB0eSBjb2xsZWN0aW9uIHdhcyBkZWxldGVkIGFuZCBpdHMgcmVtYWluaW5nIGRlcG9zaXQgcmVsZWFzZWQuLEl0ZW1EZWZpbmVkCAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgABAT4QW4gaW1tdXRhYmxlIGl0ZW0gZGVmaW5pdGlvbiB3YXMgYXNzaWduZWQgd2l0aGluIGEgY29sbGVjdGlvbi4sSXRlbURlbGV0ZWQIAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAAFBPxBbiB1bnVzZWQgaXRlbSBkZWZpbml0aW9uIHdhcyBkZWxldGVkIGFuZCBpdHMgZGVwb3NpdCByZWxlYXNlZC4YTWludGVkEAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAARRvd25lcgQBMFQ6OkFjY291bnRJZAAGBLxBbiBpbnN0YW5jZSB3YXMgbWludGVkIGludG8gYW4gZW1wdHkgcHVyc2Uga2V5LixUcmFuc2ZlcnJlZBABIGluc3RhbmNlKAEoSW5zdGFuY2VJZAABKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABwTkQSBob2xkZXIgbW92ZWQgYW4gaW5zdGFuY2UgZnJvbSBvbmUgcHVyc2Uga2V5IHRvIGFub3RoZXIuQEZvcmNlVHJhbnNmZXJyZWQQASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAgEEQFBIGNvbGxlY3Rpb24gb3duZXIgZm9yY2VkIGFuIGluc3RhbmNlIGZyb20gb25lIHB1cnNlIGtleSB0byBhbm90aGVyLhhCdXJuZWQMASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQACQQRAUFuIGluc3RhbmNlIHdhcyBwZXJtYW5lbnRseSByZW1vdmVkIGZyb20gdGhlIHB1cnNlIGtleSB0aGF0IGhlbGQgaXQuVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgAKBAEBQSBjb2xsZWN0aW9uLWxldmVsIG1ldGFkYXRhIGRlZmF1bHQgd2FzIGluc2VydGVkIG9yIG92ZXJ3cml0dGVuLmRDb2xsZWN0aW9uTWV0YWRhdGFSZW1vdmVkCAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AAsEwEEgY29sbGVjdGlvbi1sZXZlbCBtZXRhZGF0YSBkZWZhdWx0IHdhcyByZW1vdmVkLjxJdGVtTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABDGtled0DAUBNZXRhZGF0YUtleU9mPFQ+AAwE8EFuIGl0ZW0tbGV2ZWwgbWV0YWRhdGEgb3ZlcnJpZGUgd2FzIGluc2VydGVkIG9yIG92ZXJ3cml0dGVuLkxJdGVtTWV0YWRhdGFSZW1vdmVkDAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgANBLBBbiBpdGVtLWxldmVsIG1ldGFkYXRhIG92ZXJyaWRlIHdhcyByZW1vdmVkLkxJbnN0YW5jZU1ldGFkYXRhU2V0CAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEMa2V53QMBQE1ldGFkYXRhS2V5T2Y8VD4ADgQBAUFuIGluc3RhbmNlLWxldmVsIG1ldGFkYXRhIG92ZXJyaWRlIHdhcyBpbnNlcnRlZCBvciBvdmVyd3JpdHRlbi5cSW5zdGFuY2VNZXRhZGF0YVJlbW92ZWQIASBpbnN0YW5jZSgBKEluc3RhbmNlSWQAAQxrZXndAwFATWV0YWRhdGFLZXlPZjxUPgAPBMBBbiBpbnN0YW5jZS1sZXZlbCBtZXRhZGF0YSBvdmVycmlkZSB3YXMgcmVtb3ZlZC4QHQFFdmVyeSBpbnN0YW5jZSBldmVudCBuYW1lcyBpdHMgY29sbGVjdGlvbiBhbmQgYm90aCBwdXJzZSBrZXlzIGludm9sdmVkLgBVAU9mZi1jaGFpbiBjb25zdW1lcnMgcmVjb25zdHJ1Y3QgcGVyLWNvbGxlY3Rpb24gdmlld3MgZnJvbSB0aGVzZSBldmVudHMgYWxvbmUsIGFuZCB0aGUlAXN0YXRlIGEgbG9va3VwIHdvdWxkIG5lZWQgaXMgYWxyZWFkeSBnb25lIGJ5IHRoZSB0aW1lIGEgYnVybiBpcyBvYnNlcnZlZC6VCQwocGFsbGV0X3BzbRhwYWxsZXQURXZlbnQEBFQAATQYTWludGVkGAEMd2hvBAEwVDo6QWNjb3VudElkAAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAURleHRlcm5hbF9jb25zdW1lZDUBATBCYWxhbmNlT2Y8VD4AAURpbnRlcm5hbF9yZWNlaXZlZDUBATBCYWxhbmNlT2Y8VD4AATBpbnRlcm5hbF9mZWU1AQEwQmFsYW5jZU9mPFQ+AAAEpFVzZXIgc3dhcHBlZCBleHRlcm5hbCBhc3NldCBmb3IgaW50ZXJuYWwuIFJlZGVlbWVkGAEMd2hvBAEwVDo6QWNjb3VudElkAAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAURpbnRlcm5hbF9jb25zdW1lZDUBATBCYWxhbmNlT2Y8VD4AAURleHRlcm5hbF9yZWNlaXZlZDUBATBCYWxhbmNlT2Y8VD4AATBpbnRlcm5hbF9mZWU1AQEwQmFsYW5jZU9mPFQ+AAEEpFVzZXIgc3dhcHBlZCBpbnRlcm5hbCBmb3IgZXh0ZXJuYWwgYXNzZXQuRE1pbnRpbmdGZWVVcGRhdGVkEAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAASRvbGRfdmFsdWX9BAEcUGVybWlsbAABJG5ld192YWx1Zf0EARxQZXJtaWxsAAIEvE1pbnRpbmcgZmVlIHVwZGF0ZWQgZm9yIGFuIGFzc2V0IGJ5IGdvdmVybmFuY2UuUFJlZGVtcHRpb25GZWVVcGRhdGVkEAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAASRvbGRfdmFsdWX9BAEcUGVybWlsbAABJG5ld192YWx1Zf0EARxQZXJtaWxsAAMEyFJlZGVtcHRpb24gZmVlIHVwZGF0ZWQgZm9yIGFuIGFzc2V0IGJ5IGdvdmVybmFuY2UuOE1heERlYnRVcGRhdGVkDAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG9sZF92YWx1ZTUBATBCYWxhbmNlT2Y8VD4AASRuZXdfdmFsdWU1AQEwQmFsYW5jZU9mPFQ+AAQEnFBTTSBkZWJ0IGNlaWxpbmcgdXBkYXRlZCBieSBnb3Zlcm5hbmNlLmRBc3NldENlaWxpbmdXZWlnaHRVcGRhdGVkEAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAASRvbGRfdmFsdWX9BAEcUGVybWlsbAABJG5ld192YWx1Zf0EARxQZXJtaWxsAAUE0FBlci1hc3NldCBkZWJ0IGNlaWxpbmcgd2VpZ2h0IHVwZGF0ZWQgYnkgZ292ZXJuYW5jZS5IQXNzZXRTdGF0dXNVcGRhdGVkDAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAARhzdGF0dXMBBQFMQ2lyY3VpdEJyZWFrZXJMZXZlbAAGBKRQZXItYXNzZXQgY2lyY3VpdCBicmVha2VyIHN0YXR1cyB1cGRhdGVkLkhFeHRlcm5hbEFzc2V0QWRkZWQIAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAE4ZXh0ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAAHBMRBbiBleHRlcm5hbCBhc3NldCB3YXMgYWRkZWQgdG8gdGhlIGFwcHJvdmVkIGxpc3QuUEV4dGVybmFsQXNzZXRSZW1vdmVkCAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABOGV4dGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQACATUQW4gZXh0ZXJuYWwgYXNzZXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYXBwcm92ZWQgbGlzdC4oUHNtQ3JlYXRlZBQBOGludGVybmFsX2Fzc2V0GQIBKFQ6OkFzc2V0SWQAAShmdWxsX2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABPGVtZXJnZW5jeV9hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AATxmZWVfZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAASBtYXhfZGVidDUBATBCYWxhbmNlT2Y8VD4ACQRsQSBQU00gaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuKFBzbVJlbW92ZWQEAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAoEbEEgUFNNIGluc3RhbmNlIHdhcyByZW1vdmVkLkBGdWxsQWRtaW5DaGFuZ2VkDAE4aW50ZXJuYWxfYXNzZXQZAgEoVDo6QXNzZXRJZAABJG9sZF9hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AASRuZXdfYWRtaW7xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAsEkEEgUFNNJ3MgYGZ1bGxfYWRtaW5gIHdhcyByZWFzc2lnbmVkLlRFbWVyZ2VuY3lBZG1pbkNoYW5nZWQMAThpbnRlcm5hbF9hc3NldBkCAShUOjpBc3NldElkAAEkb2xkX2FkbWlu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABJG5ld19hZG1pbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4ADASkQSBQU00ncyBgZW1lcmdlbmN5X2FkbWluYCB3YXMgcmVhc3NpZ25lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSZCQw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABMCBTcGVuZGluZwQBQGJ1ZGdldF9yZW1haW5pbmc1AQE8QmFsYW5jZU9mPFQsIEk+AAAE5FdlIGhhdmUgZW5kZWQgYSBzcGVuZCBwZXJpb2QgYW5kIHdpbGwgbm93IGFsbG9jYXRlIGZ1bmRzLhxBd2FyZGVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEUYXdhcmQ1AQE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHM1AQE8QmFsYW5jZU9mPFQsIEk+AAIEiFNvbWUgb2Ygb3VyIGZ1bmRzIGhhdmUgYmVlbiBidXJudC4gUm9sbG92ZXIEAUByb2xsb3Zlcl9iYWxhbmNlNQEBPEJhbGFuY2VPZjxULCBJPgADBC0BU3BlbmRpbmcgaGFzIGZpbmlzaGVkOyB0aGlzIGlzIHRoZSBhbW91bnQgdGhhdCByb2xscyBvdmVyIHVudGlsIG5leHQgc3BlbmQuHERlcG9zaXQEARR2YWx1ZTUBATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAUEnEEgbmV3IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLjxVcGRhdGVkSW5hY3RpdmUIASxyZWFjdGl2YXRlZDUBATxCYWxhbmNlT2Y8VCwgST4AASxkZWFjdGl2YXRlZDUBATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4OAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmQJBQEwVDo6QXNzZXRLaW5kAAEYYW1vdW50NQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkNBQE4VDo6QmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AASRleHBpcmVfYXQ4AVBCbG9ja051bWJlckZvcjxULCBJPgAHBLRBIG5ldyBhc3NldCBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC5AQXNzZXRTcGVuZFZvaWRlZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIBHRBbiBhcHByb3ZlZCBzcGVuZCB3YXMgdm9pZGVkLhBQYWlkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACQRMQSBwYXltZW50IGhhcHBlbmVkLjRQYXltZW50RmFpbGVkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuOFNwZW5kUHJvY2Vzc2VkBAEUaW5kZXg4AShTcGVuZEluZGV4AAsITQFBIHNwZW5kIHdhcyBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZS4gSXQgbWlnaHQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseXBwYWlkIG9yIGl0IG1heSBoYXZlIGV4cGlyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXZlbnQIBFQABEkAARQkRGVsZWdhdGVkDAAEATBUOjpBY2NvdW50SWQAAAQBMFQ6OkFjY291bnRJZAAA7QMBNENsYXNzT2Y8VCwgST4AAAQdAUFuIGFjY291bnQgaGFzIGRlbGVnYXRlZCB0aGVpciB2b3RlIHRvIGFub3RoZXIgYWNjb3VudC4gXFt3aG8sIHRhcmdldFxdLFVuZGVsZWdhdGVkCAAEATBUOjpBY2NvdW50SWQAAO0DATRDbGFzc09mPFQsIEk+AAEE9EFuIFxbYWNjb3VudFxdIGhhcyBjYW5jZWxsZWQgYSBwcmV2aW91cyBkZWxlZ2F0aW9uIG9wZXJhdGlvbi4UVm90ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlFQUBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAgRQQW4gYWNjb3VudCBoYXMgdm90ZWQsVm90ZVJlbW92ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlFQUBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAwRcQSB2b3RlIGhhcyBiZWVuIHJlbW92ZWQwVm90ZVVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgAEBEUBVGhlIGxvY2t1cCBwZXJpb2Qgb2YgYSBjb252aWN0aW9uIHZvdGUgZXhwaXJlZCwgYW5kIHRoZSBmdW5kcyBoYXZlIGJlZW4gdW5sb2NrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQkMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEV2ZW50CARUAARJAAFAJFN1Ym1pdHRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr7QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsKQUBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uAASAQSByZWZlcmVuZHVtIGhhcyBiZWVuIHN1Ym1pdHRlZC5URGVjaXNpb25EZXBvc2l0UGxhY2VkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAQSUVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcGxhY2VkLlxEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudDUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgIEnFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLjhEZXBvc2l0U2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudDUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgMEbEEgZGVwb3NpdCBoYXMgYmVlbiBzbGFzaGVkLjxEZWNpc2lvblN0YXJ0ZWQQARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja+0DATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbCkFAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmlCQEgVDo6VGFsbHkEuFRoZSBjdXJyZW50IHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4EBLxBIHJlZmVyZW5kdW0gaGFzIG1vdmVkIGludG8gdGhlIGRlY2lkaW5nIHBoYXNlLjhDb25maXJtU3RhcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4FADhDb25maXJtQWJvcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4GACRDb25maXJtZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseaUJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4HBCEBQSByZWZlcmVuZHVtIGhhcyBlbmRlZCBpdHMgY29uZmlybWF0aW9uIHBoYXNlIGFuZCBpcyByZWFkeSBmb3IgYXBwcm92YWwuIEFwcHJvdmVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLggEDQFBIHJlZmVyZW5kdW0gaGFzIGJlZW4gYXBwcm92ZWQgYW5kIGl0cyBwcm9wb3NhbCBoYXMgYmVlbiBzY2hlZHVsZWQuIFJlamVjdGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmlCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCQSsQSBwcm9wb3NhbCBoYXMgYmVlbiByZWplY3RlZCBieSByZWZlcmVuZHVtLiBUaW1lZE91dAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5pQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgoE2EEgcmVmZXJlbmR1bSBoYXMgYmVlbiB0aW1lZCBvdXQgd2l0aG91dCBiZWluZyBkZWNpZGVkLiRDYW5jZWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseaUJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4LBIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2FuY2VsbGVkLhhLaWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseaUJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4MBHRBIHJlZmVyZW5kdW0gaGFzIGJlZW4ga2lsbGVkLmRTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50NQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuDQSkVGhlIHN1Ym1pc3Npb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC4sTWV0YWRhdGFTZXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoPAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4OBJxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIHNldC48TWV0YWRhdGFDbGVhcmVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaDwBHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDwSsTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMUVGFsbHkIFFZvdGVzATUBFFRvdGFsAAAMARBheWVzNQEBFFZvdGVzAAEQbmF5czUBARRWb3RlcwABHHN1cHBvcnQ1AQEUVm90ZXMAAKkJDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFdmVudAQEVAABDDxDYWxsV2hpdGVsaXN0ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAAAWFdoaXRlbGlzdGVkQ2FsbFJlbW92ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEAZFdoaXRlbGlzdGVkQ2FsbERpc3BhdGNoZWQIASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEYcmVzdWx0rQkBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0rQkEGFJlc3VsdAgEVAGxCQRFAbUJAQgIT2sEALEJAAAAAAxFcnIEALUJAAABAACxCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0DQEBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWVpCAEQUGF5cwAAtQkIKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwGxCQAIASRwb3N0X2luZm+xCQEQSW5mbwABFGVycm9ybQgBNERpc3BhdGNoRXJyb3IAALkJDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwOEJvdW50eVByb3Bvc2VkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABFBOZXcgYm91bnR5IHByb3Bvc2FsLjhCb3VudHlSZWplY3RlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAARBib25kNQEBPEJhbGFuY2VPZjxULCBJPgABBMxBIGJvdW50eSBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQ7IGZ1bmRzIHdlcmUgc2xhc2hlZC5IQm91bnR5QmVjYW1lQWN0aXZlBAEUaW5kZXg4ASxCb3VudHlJbmRleAACBLhBIGJvdW50eSBwcm9wb3NhbCBpcyBmdW5kZWQgYW5kIGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAwSUQSBib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LjRCb3VudHlDbGFpbWVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dDUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAEBIxBIGJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LjhCb3VudHlDYW5jZWxlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABQRYQSBib3VudHkgaXMgY2FuY2VsbGVkLjhCb3VudHlFeHRlbmRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABgRwQSBib3VudHkgZXhwaXJ5IGlzIGV4dGVuZGVkLjhCb3VudHlBcHByb3ZlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABwRUQSBib3VudHkgaXMgYXBwcm92ZWQuPEN1cmF0b3JQcm9wb3NlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAIBHRBIGJvdW50eSBjdXJhdG9yIGlzIHByb3Bvc2VkLkRDdXJhdG9yVW5hc3NpZ25lZAQBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAkEfEEgYm91bnR5IGN1cmF0b3IgaXMgdW5hc3NpZ25lZC48Q3VyYXRvckFjY2VwdGVkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAoEdEEgYm91bnR5IGN1cmF0b3IgaXMgYWNjZXB0ZWQuMERlcG9zaXRQb2tlZBABJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEgcHJvcG9zZXIEATBUOjpBY2NvdW50SWQAASxvbGRfZGVwb3NpdDUBATxCYWxhbmNlT2Y8VCwgST4AASxuZXdfZGVwb3NpdDUBATxCYWxhbmNlT2Y8VCwgST4ACwSAQSBib3VudHkgZGVwb3NpdCBoYXMgYmVlbiBwb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS9CQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFdmVudAQEVAABEBRBZGRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAAEYEEgY2hpbGQtYm91bnR5IGlzIGFkZGVkLhxBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABBKxBIGNoaWxkLWJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuHENsYWltZWQQARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dDUBATBCYWxhbmNlT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAACBKRBIGNoaWxkLWJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LiBDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAMEcEEgY2hpbGQtYm91bnR5IGlzIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kCQUBMFQ6OkFzc2V0S2luZAABEHJhdGVJBQEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kCQUBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZAkFATBUOjpBc3NldEtpbmQAAQxvbGRJBQEkRml4ZWRVMTI4AAEMbmV3SQUBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUJDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAE0NEJvdW50eUNyZWF0ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAE4EEgbmV3IGJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSENoaWxkQm91bnR5Q3JlYXRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEE+EEgbmV3IGNoaWxkLWJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAIE6FRoZSBjdXJhdG9yIGFjY2VwdGVkIHJvbGUgYW5kIGNoaWxkLS9ib3VudHkgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyeQ0FAThUOjpCZW5lZmljaWFyeQADBLRBIGNoaWxkLS9ib3VudHkgd2FzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS5UQm91bnR5UGF5b3V0UHJvY2Vzc2VkFAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKGFzc2V0X2tpbmQJBQEwVDo6QXNzZXRLaW5kAAEUdmFsdWU1AQEoVDo6QmFsYW5jZQABLGJlbmVmaWNpYXJ5DQUBOFQ6OkJlbmVmaWNpYXJ5AAQE9FBheW91dCBwYXltZW50IHRvIHRoZSBiZW5lZmljaWFyeSBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5YQm91bnR5RnVuZGluZ1Byb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABQSsRnVuZGluZyBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlRCb3VudHlSZWZ1bmRQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAYEqFJlZnVuZCBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LjhCb3VudHlDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABwR4QSBjaGlsZC0vYm91bnR5IHdhcyBjYW5jZWxsZWQuREN1cmF0b3JVbmFzc2lnbmVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAIBJxBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgdW5hc3NpZ25lZC48Q3VyYXRvclByb3Bvc2VkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACQSUQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHByb3Bvc2VkLjRQYXltZW50RmFpbGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC4QUGFpZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACwSYQSBwYXltZW50IGhhcHBlbmVkIGFuZCBjYW4gYmUgY2hlY2tlZC5QQm91bnR5VmFsdWVJbmNyZWFzZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEkb2xkX3ZhbHVlNQEBKFQ6OkJhbGFuY2UAASRuZXdfdmFsdWU1AQEoVDo6QmFsYW5jZQAMBLhBIGJvdW50eSdzIHZhbHVlIHdhcyBpbmNyZWFzZWQgYnkgaXRzIGN1cmF0b3IuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0yQkMKHBhbGxldF9kYXAYcGFsbGV0FEV2ZW50BARUAAEQOElzc3VhbmNlTWludGVkCAEwdG90YWxfbWludGVkNQEBMEJhbGFuY2VPZjxUPgSEVG90YWwgYW1vdW50IG1pbnRlZCBpbiB0aGlzIGRyaXAuAThlbGFwc2VkX21pbGxpcygBDHU2NASIRWxhcHNlZCB0aW1lIChtcykgc2luY2UgbGFzdCBkcmlwLgAE3EluZmxhdGlvbiBkcmlwcGVkIGFuZCBkaXN0cmlidXRlZCB0byBidWRnZXQgcmVjaXBpZW50cy5cQnVkZ2V0QWxsb2NhdGlvblVwZGF0ZWQEASxhbGxvY2F0aW9uc1UFAUxCdWRnZXRBbGxvY2F0aW9uTWFwBHhUaGUgbmV3IGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4BBLRCdWRnZXQgYWxsb2NhdGlvbiB3YXMgdXBkYXRlZCB2aWEgZ292ZXJuYW5jZS44U3RhZ2luZ0RyYWluZWQEARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+BDxBbW91bnQgZHJhaW5lZC4CBAEBRnVuZHMgd2VyZSBkcmFpbmVkIGZyb20gdGhlIHN0YWdpbmcgYWNjb3VudCBpbnRvIHRoZSBEQVAgYnVmZmVyLihVbmV4cGVjdGVkBADNCQE4VW5leHBlY3RlZEtpbmQAAwSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNCQwocGFsbGV0X2RhcBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQgoTWludEZhaWxlZAAAADhFbGFwc2VkQ2xhbXBlZAgBOGFjdHVhbF9lbGFwc2VkKAEMdTY0AAEcY2VpbGluZygBDHU2NAABAADRCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcDgBDHUzMgABFGNoaWxkOAEMdTMyAAEcY29tcHV0ZdUJAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgABBLRTb21lIGFjY291bnQgZ290IHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5UQXV0b01pZ3JhdGlvbkZpbmlzaGVkAAIEhFRoZSBhdXRvIG1pZ3JhdGlvbiB0YXNrIGZpbmlzaGVkLhhIYWx0ZWQEARRlcnJvctkJASBFcnJvcjxUPgADBOxNaWdyYXRpb24gZ290IGhhbHRlZCBkdWUgdG8gYW4gZXJyb3Igb3IgbWlzcy1jb25maWd1cmF0aW9uLgRwSW5uZXIgZXZlbnRzIG9mIHRoaXMgcGFsbGV0LtUJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0QE1pZ3JhdGlvbkNvbXB1dGUAAQgYU2lnbmVkAAAAEEF1dG8AAQAA2QkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXJyb3IEBFQAARg8TWF4U2lnbmVkTGltaXRzAAAEgE1heCBzaWduZWQgbGltaXRzIG5vdCByZXNwZWN0ZWQuKEtleVRvb0xvbmcAARy0QSBrZXkgd2FzIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIG1heGltdW0uABEBVGhpcyBtZWFucyB0aGF0IHRoZSBtaWdyYXRpb24gaGFsdGVkIGF0IHRoZSBjdXJyZW50IFtgUHJvZ3Jlc3NgXSBhbmQBAWNhbiBiZSByZXN1bWVkIHdpdGggYSBsYXJnZXIgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZS4hAVJldHJ5aW5nIHdpdGggdGhlIHNhbWUgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZSB3aWxsIG5vdCB3b3JrLkUBVGhlIHZhbHVlIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB0byBhdm9pZCBhIHN0b3JhZ2UgbWlncmF0aW9uIGZvciB0aGUgY3VycmVudGx5kHN0b3JlZCBbYGNyYXRlOjpQcm9ncmVzczo6TGFzdEtleWBdLjhOb3RFbm91Z2hGdW5kcwACBJRzdWJtaXR0ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMuKEJhZFdpdG5lc3MAAwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5kU2lnbmVkTWlncmF0aW9uTm90QWxsb3dlZAAEBCUBU2lnbmVkIG1pZ3JhdGlvbiBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIHRoZSBtYXhpbXVtIGxpbWl0IGlzIG5vdCBzZXQgeWV0LjBCYWRDaGlsZFJvb3QABQRgQmFkIGNoaWxkIHJvb3QgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0JDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXZlbnQEBFQAAVwcQ3JlYXRlZAgBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAAARgQSBwb29sIGhhcyBiZWVuIGNyZWF0ZWQuGEJvbmRlZBABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhib25kZWQ1AQEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkdQEBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dDUBATBCYWxhbmNlT2Y8VD4AAgSMQSBwYXlvdXQgaGFzIGJlZW4gbWFkZSB0byBhIG1lbWJlci4gVW5ib25kZWQUARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2U1AQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzNQEBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQ4ARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZDgBGFBvb2xJZAABJG5ld19zdGF0ZYkFASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkDAEccG9vbF9pZDgBGFBvb2xJZAABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABQHJlbGVhc2VkX2JhbGFuY2U1AQEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdKkBAVBPcHRpb248VDo6QWNjb3VudElkPgABHGJvdW5jZXKpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRub21pbmF0b3KpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4ACQQNAVRoZSBhY3RpdmUgYmFsYW5jZSBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5QVW5ib25kaW5nUG9vbFNsYXNoZWQMARxwb29sX2lkOAEYUG9vbElkAAEMZXJhOAEgRXJhSW5kZXgAARxiYWxhbmNlNQEBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEcY3VycmVudKEFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb25ZBQEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlqQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb26tBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb241AQEwQmFsYW5jZU9mPFQ+AA8EhFBvb2wgY29tbWlzc2lvbiBoYXMgYmVlbiBjbGFpbWVkLmRNaW5CYWxhbmNlRGVmaWNpdEFkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb26dBQE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmQ1AQEwQmFsYW5jZU9mPFQ+AAE8bWluX2NyZWF0ZV9ib25kNQEBMEJhbGFuY2VPZjxUPgABJG1heF9wb29sc+ABLE9wdGlvbjx1MzI+AAEsbWF4X21lbWJlcnPgASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s4AEsT3B0aW9uPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb27hCQE8T3B0aW9uPFBlcmJpbGw+ABYEAQFHbG9iYWwgcGFyYW1ldGVycyByZWd1bGF0aW5nIG5vbWluYXRpb24gcG9vbHMgaGF2ZSBiZWVuIHVwZGF0ZWQuBFhFdmVudHMgb2YgdGhpcyBwYWxsZXQu4QkEGE9wdGlvbgQEVAFZBQEIEE5vbmUAAAAQU29tZQQAWQUAAAEAAOUJDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV06QkMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAAEfEZ1bmRzIGRlbGVnYXRlZCBieSBhIGRlbGVnYXRvci4gUmVsZWFzZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAQR4RnVuZHMgcmVsZWFzZWQgdG8gYSBkZWxlZ2F0b3IuHFNsYXNoZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAwTEVW5jbGFpbWVkIGRlbGVnYXRpb24gZnVuZHMgbWlncmF0ZWQgdG8gZGVsZWdhdG9yLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldO0JDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEV2ZW50BARUAAEQVFNlc3Npb25SZXBvcnRSZWNlaXZlZBABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABUGFjdGl2YXRpb25fdGltZXN0YW1wyQUBSE9wdGlvbjwodTY0LCB1MzIpPgABXHZhbGlkYXRvcl9wb2ludHNfY291bnRzOAEMdTMyAAEgbGVmdG92ZXJ1AQEQYm9vbAAABIxBIHNhaWQgc2Vzc2lvbiByZXBvcnQgd2FzIHJlY2VpdmVkLjxPZmZlbmNlUmVjZWl2ZWQIATRzbGFzaF9zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAE4b2ZmZW5jZXNfY291bnQ4AQx1MzIAAQRsQSBuZXcgb2ZmZW5jZSB3YXMgcmVwb3J0ZWQuIEZlZXNQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZmVlczUBATBCYWxhbmNlT2Y8VD4AAgwBAUZlZXMgd2VyZSBjaGFyZ2VkIGZvciBhIHVzZXIgb3BlcmF0aW9uIChzZXRfa2V5cyBvciBwdXJnZV9rZXlzKS4AGQFUaGUgZmVlIGluY2x1ZGVzIGJvdGggWENNIGRlbGl2ZXJ5IGZlZSBhbmQgcmVsYXkgY2hhaW4gZXhlY3V0aW9uIGNvc3QuKFVuZXhwZWN0ZWQEAPEJAThVbmV4cGVjdGVkS2luZAADCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEYcFNlc3Npb25SZXBvcnRJbnRlZ3JpdHlGYWlsZWQAAABsVmFsaWRhdG9yU2V0SW50ZWdyaXR5RmFpbGVkAAEAOFNlc3Npb25Ta2lwcGVkAAIAXFNlc3Npb25BbHJlYWR5UHJvY2Vzc2VkAAMAWFZhbGlkYXRvclNldFNlbmRGYWlsZWQABABMVmFsaWRhdG9yU2V0RHJvcHBlZAAFAAD1CQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFdmVudAQEVAABFERQaGFzZVRyYW5zaXRpb25lZAgBEGZyb23lBQEgUGhhc2U8VD4EQHRoZSBzb3VyY2UgcGhhc2UBCHRv5QUBIFBoYXNlPFQ+BEBUaGUgdGFyZ2V0IHBoYXNlAAhdAUEgcGhhc2UgdHJhbnNpdGlvbiBoYXBwZW5lZC4gT25seSBjaGVja3MgbWFqb3IgY2hhbmdlcyBpbiB0aGUgdmFyaWFudHMsIG5vdCBtaW5vciBpbm5lchx2YWx1ZXMueFVuZXhwZWN0ZWRUYXJnZXRTbmFwc2hvdEZhaWxlZAABBIBUYXJnZXQgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLnRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHxWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQukFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25PdXRPZldlaWdodBABEGZyb23lBQEgUGhhc2U8VD4AAQh0b+UFASBQaGFzZTxUPgABIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQAAwT4UGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYmVpbmcgb3V0IG9mIHdlaWdodC50VW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbkhhbHQIASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAQEFQFQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBldmVuIGJlZ2luIGJlY2FzZXUgb2YgYmVpbmcgb3V0IG9mIHdlaWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT5CRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAA/QkBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgADQYBNEVsZWN0aW9uU2NvcmUAAAUKAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQAAQoBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAAEKCERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAABQoEGE9wdGlvbgQEVAENBgEIEE5vbmUAAAAQU29tZQQADQYAAAEAAAkKEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAADQYBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAADUBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAANQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNChBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABbBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0NQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlcjUBATBCYWxhbmNlT2Y8VD4AABRwVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0LgANAUluIG5vbi1taW50aW5nIG1vZGUsIGB2YWxpZGF0b3JfcGF5b3V0YCBpcyB0aGUgc3Rha2VyIHJld2FyZCBidWRnZXQFAXNuYXBzaG90dGVkIGZyb20gdGhlIGdlbmVyYWwgcG90LCBhbmQgYHJlbWFpbmRlcmAgaXMgYWx3YXlzIHplcm8uIQFJbiBsZWdhY3kgbWludGluZyBtb2RlLCBib3RoIGZpZWxkcyByZWZsZWN0IHRoZSBgRXJhUGF5b3V0YCBjb21wdXRhdGlvbi4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3T5BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAADCBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLhhCb25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4ABBDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudDUBATBCYWxhbmNlT2Y8VD4ABQSQQW4gYWNjb3VudCBoYXMgdW5ib25kZWQgdGhpcyBhbW91bnQuJFdpdGhkcmF3bggBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAGCFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLjRTdGFrZXJSZW1vdmVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABwhVAUEgc3Vic2VxdWVudCBldmVudCBvZiBgV2l0aGRyYXduYCwgaW5kaWNhdGluZyB0aGF0IGBzdGFzaGAgd2FzIGZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUcc3lzdGVtLhhLaWNrZWQIASRub21pbmF0b3IEATBUOjpBY2NvdW50SWQAARRzdGFzaAQBMFQ6OkFjY291bnRJZAAIBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci4cQ2hpbGxlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAkEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZBABJGVyYV9pbmRleDgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBEFBhZ2UAARBuZXh04AEwT3B0aW9uPFBhZ2U+AAoEWQFBIFBhZ2Ugb2Ygc3Rha2VycyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuIGBuZXh0YCBpcyBgTm9uZWAgaWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLkRWYWxpZGF0b3JQcmVmc1NldAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUcHJlZnP9BgE4VmFsaWRhdG9yUHJlZnMACwSYQSB2YWxpZGF0b3IgaGFzIHNldCB0aGVpciBwcmVmZXJlbmNlcy5oU25hcHNob3RWb3RlcnNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAAwEaFZvdGVycyBzaXplIGxpbWl0IHJlYWNoZWQubFNuYXBzaG90VGFyZ2V0c1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADQRsVGFyZ2V0cyBzaXplIGxpbWl0IHJlYWNoZWQuIEZvcmNlRXJhBAEQbW9kZREKARxGb3JjaW5nAA4AZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlczgBDHUzMgAPBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLkBDdXJyZW5jeU1pZ3JhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAThmb3JjZV93aXRoZHJhdzUBATBCYWxhbmNlT2Y8VD4AEAhVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLlhQYWdlZEVsZWN0aW9uUHJvY2VlZGVkCAEQcGFnZTgBJFBhZ2VJbmRleAABGHJlc3VsdBUKAUBSZXN1bHQ8dTMyLCB1MzI+ABEkQQFBIHBhZ2UgZnJvbSBhIG11bHRpLXBhZ2UgZWxlY3Rpb24gd2FzIGZldGNoZWQuIEEgbnVtYmVyIG9mIHRoZXNlIGFyZSBmb2xsb3dlZCBieURgU3Rha2Vyc0VsZWN0ZWRgLgDwYE9rKGNvdW50KWAgaW5kaWNhdGVzIHRoZSBnaXZlIG51bWJlciBvZiBzdGFzaGVzIHdlcmUgYWRkZWQuBQFgRXJyKGluZGV4KWAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0YXNoZXMgYWZ0ZXIgaW5kZXggd2VyZSBkcm9wcGVkLkEBYEVycigwKWAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgYnV0IG5vIHN0YXNoZXMgd2VyZSBkcm9wcGVkIG5vciBhZGRlZC4AUQFUaGUgZXJyb3IgaW5kaWNhdGVzIHRoYXQgYSBudW1iZXIgb2YgdmFsaWRhdG9ycyB3ZXJlIGRyb3BwZWQgZHVlIHRvIGV4Y2VzcyBzaXplLCBidXSMdGhlIG92ZXJhbGwgZWxlY3Rpb24gd2lsbCBjb250aW51ZS48T2ZmZW5jZVJlcG9ydGVkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uWQUBHFBlcmJpbGwAEghNAUFuIG9mZmVuY2UgZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IsIGZvciB0aGUgZ2l2ZW4gcGVyY2VudGFnZSBvZiB0aGVpciBzdGFrZSwgYXQgdGhlbGdpdmVuIGVyYSBhcyBiZWVuIHJlcG9ydGVkLjRTbGFzaENvbXB1dGVkEAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEgb2ZmZW5kZXIEATBUOjpBY2NvdW50SWQAARBwYWdlOAEMdTMyABMEMQFBbiBvZmZlbmNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2xhc2ggaGFzIGJlZW4gY29tcHV0ZWQuOFNsYXNoQ2FuY2VsbGVkCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAFASYQW4gdW5hcHBsaWVkIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZC44U2Vzc2lvblJvdGF0ZWQMAUBzdGFydGluZ19zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAEoYWN0aXZlX2VyYTgBIEVyYUluZGV4AAEscGxhbm5lZF9lcmE4ASBFcmFJbmRleAAVEIhTZXNzaW9uIGNoYW5nZSBoYXMgYmVlbiB0cmlnZ2VyZWQuAFkBSWYgcGxhbm5lZF9lcmEgaXMgb25lIGVyYSBhaGVhZCBvZiBhY3RpdmVfZXJhLCBpdCBpbXBsaWVzIG5ldyBlcmEgaXMgYmVpbmcgcGxhbm5lZCBhbmRQZWxlY3Rpb24gaXMgb25nb2luZy4oVW5leHBlY3RlZAQAGQoBRFVuZXhwZWN0ZWRLaW5kPFQ+ABYIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuNE9mZmVuY2VUb29PbGQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb25ZBQEcUGVyYmlsbAAXBD0BQW4gb2ZmZW5jZSB3YXMgcmVwb3J0ZWQgdGhhdCB3YXMgdG9vIG9sZCB0byBiZSBwcm9jZXNzZWQsIGFuZCB0aHVzIHdhcyBkcm9wcGVkLiRFcmFQcnVuZWQEARRpbmRleDgBIEVyYUluZGV4ABgErEFuIG9sZCBlcmEgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggd2FzIHBydW5lZC5YVmFsaWRhdG9ySW5jZW50aXZlUGFpZBABDGVyYTgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdPkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50NQEBMEJhbGFuY2VPZjxUPgAZBPRUaGUgdmFsaWRhdG9yIGhhcyBiZWVuIHBhaWQgdGhlaXIgc2VsZi1zdGFrZSBpbmNlbnRpdmUgYm9udXMubFZhbGlkYXRvckluY2VudGl2ZUNvbmZpZ1NldAwBSG9wdGltdW1fc2VsZl9zdGFrZTUBATBCYWxhbmNlT2Y8VD4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlNQEBMEJhbGFuY2VPZjxUPgABMHNsb3BlX2ZhY3RvclkFARxQZXJiaWxsABoE+FZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQoIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAFQoEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAABkKEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kBARUAAEYYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAGBQYWdlZEVsZWN0aW9uT3V0T2ZXZWlnaHQMARBwYWdlOAEkUGFnZUluZGV4AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAACADBNaXNzaW5nUGF5ZWUIAQxlcmE4ASBFcmFJbmRleAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAMAgFZhbGlkYXRvckluY2VudGl2ZVdlaWdodE1pc21hdGNoBAEMZXJhOAEgRXJhSW5kZXgABACAVmFsaWRhdG9ySW5jZW50aXZlVHJhbnNmZXJGYWlsZWQEAQxlcmE4ASBFcmFJbmRleAAFAAAdCgxcaW5kaXZfcGFsbGV0X25mdF9jbGFpbXMYcGFsbGV0FEV2ZW50BARUAAE0TENyZWRpdFRyZWVzUmVjZWl2ZWQIARRjb3VudDgBDHUzMgABGHN0b3JlZDgBDHUzMgAABJhDcmVkaXQgdHJlZXMgd2VyZSByZWNlaXZlZCBhbmQgc3RvcmVkLkhDcmVkaXRUcmVlc01pc3NpbmcIATRmcm9tX3NlcXVlbmNlKAEwVHJlZVNlcXVlbmNlAAEsdG9fc2VxdWVuY2UoATBUcmVlU2VxdWVuY2UAARhJAVRyZWVzIG9mIHRoZSBsaXZlIHN0cmVhbSBuZXZlciBhcnJpdmVkLiBUaGUgZ2FtZSBwYWxsZXQncyBgQ3JlZGl0VHJlZXNTZW50YCBldmVudHMtAXJlc29sdmUgdGhlc2Ugc2VxdWVuY2VzIHRvIHRoZSB0cmVlIGJsb2NrcyB0aGV5IHdlcmUgZGVsaXZlcmVkIHVuZGVyLCBhbmQgYfRgcmVwbGF5X2NyZWRpdF90cmVlc2AgbmFtaW5nIHRob3NlIGJsb2NrcyByZWNvdmVycyB0aGUgdHJlZXMuAEkBQSBzZXF1ZW5jZSB0aGF0IHJlc29sdmVzIHRvIG5vIGJsb2NrIGlzIG9uZSB0aGUgZ2FtZSBwYWxsZXQgc3BlbnQgb24gYSB0cmVlIGl0IGhhZOhhbHJlYWR5IGRyb3BwZWQgdGhlIHJvb3Qgb2YsIGFuZCBubyByZXBsYXkgYnJpbmdzIGl0IGJhY2suSENyZWRpdFRyZWVDb25mbGljdAQBFGJsb2NrOAE8Q3JlZGl0VHJlZUJsb2NrAAIIPQFBIHRyZWUgd2FzIHJlY2VpdmVkIGZvciBhIGJsb2NrIHRoYXQgYWxyZWFkeSBob2xkcyBhIGRpZmZlcmVudCByb290LiBUaGUgc3RvcmVk4HJvb3QgaXMga2VwdCwgc28gdGhlIHByb29mcyBidWlsdCBhZ2FpbnN0IGl0IHN0YXkgdmFsaWQuSENyZWRpdFRyZWVSZWplY3RlZAQBFGJsb2NrOAE8Q3JlZGl0VHJlZUJsb2NrAAMMRQFBIHRyZWUgd2l0aCBhIHplcm8gcm9vdCBvciBubyBsZWF2ZXMgd2FzIHJlY2VpdmVkIGZvciBgYmxvY2tgIGFuZCBub3Qgc3RvcmVkLiBJdHNNAXNlcXVlbmNlIHN0YXlzIHVuY29uc3VtZWQsIHNvIHRoZSBnYXAgY2hlY2sgcmVwb3J0cyBpdCBhbmQgYSByZXBsYXkgY2FuIGRlbGl2ZXIgdGhlNGdlbnVpbmUgdHJlZS40Q3JlZGl0Q2xhaW1lZBgBFGJsb2NrOAE8Q3JlZGl0VHJlZUJsb2NrAAEQbGVhZiEKAUhOZnRDbGFpbUNyZWRpdExlYWYAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBJEl0ZW1JbmRleAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAQITQFBIGNyZWRpdCBgYmxvY2tgIGNvbW1pdHRlZCB3YXMgY2xhaW1lZCwgbWludGluZyBgaW5zdGFuY2VgIG9mIGBjb2xsZWN0aW9uYCdzIGBpdGVtYGR0byB0aGUgcHVyc2Uga2V5IGBvd25lcmAuQFRyZWVGdWxseUNsYWltZWQEARRibG9jazgBPENyZWRpdFRyZWVCbG9jawAFCFEBRXZlcnkgY3JlZGl0IGNvbW1pdHRlZCB0byBieSBgYmxvY2tgJ3MgdHJlZSBoYXMgYmVlbiBjbGFpbWVkLiBUaGlzIGNoYWluIHJlbW92ZWQgdGhlwHRyZWUgYW5kIHF1ZXVlZCBpdHMgZGVsZXRpb24gZm9yIHRoZSBnYW1lIGNoYWluLkxDb2xsZWN0aW9uTWludGVyU2V0CAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABJHNlbGVjdGlvbmkHAVRPcHRpb248SXRlbVNlbGVjdGlvbj4ABghNAWBjb2xsZWN0aW9uYCdzIG93bmVyIHJlZ2lzdGVyZWQgaXQgZm9yIGNsYWltcyB3aXRoIGBzZWxlY3Rpb25gLCBvciB3aXRoZHJldyBpdCB3aXRoHGBOb25lYC5IQ3JlZGl0VHJlZXNFeHBpcmVkBAEUY291bnQ4AQx1MzIABxRRAWBjb3VudGAgdHJlZXMgb3V0bGl2ZWQgW2BDb25maWc6OlRyZWVUdGxgXSwgYW5kIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtIHdpdGggY3JlZGl0c0UBbGVmdCB1bmNsYWltZWQuIE5vdGhpbmcgY2FuIG1pbnQgdGhvc2UgY3JlZGl0cyBhZ2Fpbiwgb24gdGhpcyBjaGFpbiBvciBhbnkgb3RoZXIuAE0BVGhlIGJsb2NrcyBhcmUgbm90IG5hbWVkIGhlcmUuIFRoZSBzYW1lIHRyZWVzIHRyYXZlbCBpbiBhIGRlbGV0aW9uIG1lc3NhZ2UsIGFuZCB0aGXsW2BFdmVudDo6VHJlZURlbGV0aW9uc1NlbnRgXSBjYXJyeWluZyB0aGVtIG5hbWVzIGV2ZXJ5IG9uZS48Q3JlZGl0VHJlZVN0YWxlBAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sACAhFAUEgdHJlZSBhcnJpdmVkIGZvciBgYmxvY2tgIHBhc3QgaXRzIGRlYWRsaW5lLCBzbyB0aGlzIGNoYWluIGRpZCBub3Qgc3RvcmUgaXQuIEl0c+hjcmVkaXRzIHdlcmUgYWxyZWFkeSB1bm1pbnRhYmxlIHdoZW4gdGhlIGRlbGl2ZXJ5IGFycml2ZWQuRFRyZWVEZWxldGlvbnNTZW50BAEYYmxvY2tzJQoB6EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZT4ACQQtAVRyZWUgYmxvY2tzIHdob3NlIGRlbGV0aW9uIHdhcyBoYW5kZWQgdG8gdGhlIFhDTSByb3V0ZXIgZm9yIHRoZSBnYW1lIGNoYWluLlhUcmVlRGVsZXRpb25TZW5kRmFpbGVkAAoITQFEZWxpdmVyeSBvZiB0aGUgZGVsZXRpb25zIHRvIHRoZSBnYW1lIGNoYWluIGZhaWxlZC4gVGhlIGJsb2NrcyBzdGF5IHF1ZXVlZCwgYW5kIHRoZaBuZXh0IG9mZmNoYWluIHdvcmtlciBjeWNsZSByZXRyaWVzIHRoZW0uUFRyZWVEZWxldGlvbnNEcm9wcGVkBAEYYmxvY2tzJQoB6EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZT4ACwxJAVtgUGVuZGluZ1RyZWVEZWxldGlvbnNgXSBpcyBmdWxsLCBzbyB0aGlzIGNoYWluIGRyb3BwZWQgdGhlIGRlbGV0aW9ucyBvZiBgYmxvY2tzYC5BAURlbGl2ZXJ5IGhhcyBmYWlsZWQgZm9yIFtgQ29uZmlnOjpNYXhRdWV1ZWRUcmVlRGVsZXRpb25zYF0gdHJlZXMuIFRoZSBnYW1lIGNoYWlutHJlbW92ZXMgaXRzIG93biBjb3BpZXMgd2hlbiBpdHMgVFRMIHJ1bnMgb3V0LkxDcmVkaXRUcmVlT3ZlcnNpemVkBAEUYmxvY2s4ATxDcmVkaXRUcmVlQmxvY2sADAzkQSB0cmVlIGFycml2ZWQgZm9yIGBibG9ja2AgY29tbWl0dGluZyB0byBtb3JlIGxlYXZlcyB0aGFuKQFbYENvbmZpZzo6TWF4Q3JlZGl0c1BlclRyZWVgXSwgc28gdGhpcyBjaGFpbiBkaWQgbm90IHN0b3JlIGl0LiBOb25lIG9mIGl0cyUBY3JlZGl0cyBjYW4gYmUgY2xhaW1lZCBoZXJlIHVudGlsIHRoYXQgYm91bmQgY292ZXJzIHRoZSBnYW1lIGNoYWluJ3Mgb3duLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEKDDRpbmRpdl9zdXBwb3J0MGNyZWRpdF90cmVlc0hOZnRDbGFpbUNyZWRpdExlYWYAAAQACAEgW3U4OyAzMl0AACUKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AACkKDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyGHBhbGxldBRFdmVudAQEVAABGFBSaW5nUm9vdHNJbml0aWFsaXplZAgBFGNvdW50OAEMdTMyBIROdW1iZXIgb2YgcmluZyByb290cyBpbml0aWFsaXplZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEsFNlcXVlbmNlIG51bWJlciBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYmF0Y2guAATMUmluZyByb290cyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbm90aWZpZXIuQFJpbmdSb290c1VwZGF0ZWQIARRjb3VudDgBDHUzMgRwTnVtYmVyIG9mIHVwZGF0ZXMgcHJvY2Vzc2VkLgEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgR0U2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBiYXRjaC4BBJhSaW5nIHJvb3QgdXBkYXRlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLlhTdWJzY3JpcHRpb25UZXJtaW5hdGVkBAFEbm90aWZpZXJfbm90aWZpZWR1AQEQYm9vbATQV2hldGhlciB0aGUgdW5zdWJzY3JpYmUgWENNIHdhcyBzdWNjZXNzZnVsbHkgcXVldWVkLgIEhFN1YnNjcmlwdGlvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkLlBNaXNzaW5nUmluZ3NEZXRlY3RlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGNvdW50OAEMdTMyBLhOdW1iZXIgb2YgbmV3bHkgZGV0ZWN0ZWQgbWlzc2luZyByaW5nIGluZGljZXMuAwTgTmV3IG1pc3NpbmcgcmluZyByb290cyBkZXRlY3RlZCBkdXJpbmcgYmF0Y2ggcHJvY2Vzc2luZy5EUmVwbGF5UmVxdWVzdFNlbnQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuATRpbmRpY2VzX2NvdW50OAEMdTMyBKBOdW1iZXIgb2YgbWlzc2luZyBpbmRpY2VzIGluIHRoaXMgY2h1bmsuBAS0UmVwbGF5IHJlcXVlc3Qgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gbm90aWZpZXIuYERlbGV0ZWRJbmRpY2VzQXRDYXBhY2l0eQQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4FBC0BQSBub3RpZmllciBkZWxldGlvbiBjb3VsZCBub3QgYmUgdHJhY2tlZCBiZWNhdXNlIGBkZWxldGVkX2luZGljZXNgIGlzIGZ1bGwuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQoMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQURXZlbnQEBFQAARQ8QWxpYXNBY2NvdW50U2V0DAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARwVGhlIGFjY291bnQgdGhhdCB3YXMgbGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4ABKRBbiBhbGlhcyBhY2NvdW50IGhhcyBiZWVuIHNldCBvciB1cGRhdGVkLkRBbGlhc0FjY291bnRVbnNldAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEEiEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gcmVtb3ZlZC5EU3RhbGVBbGlhc1JlbW92ZWQMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHhUaGUgYWNjb3VudCB0aGF0IHdhcyB1bmxpbmtlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuAgSIQSBzdGFsZSBhbGlhcyBtYXBwaW5nIHdhcyByZW1vdmVkLkhTdGFsZUFsaWFzUmVwb3J0ZWQQARxhY2NvdW50BAEwVDo6QWNjb3VudElkBJxUaGUgYWNjb3VudCB3aG9zZSBtYXBwaW5nIHdhcyByZXBvcnRlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuATByZW1vdmFibGVfYXQoAQx1NjQExFRoZSBzZWNvbmQgZnJvbSB3aGljaCB0aGUgbWFwcGluZyBjYW4gYmUgcmVtb3ZlZC4DCFEBQSBtYXBwaW5nIHdhcyByZXBvcnRlZCBzdGFsZSwgd2hpY2ggc3RhcnRzIFtgQ29uZmlnOjpNYXBwaW5nUmV0ZW50aW9uYF0uIEl0IGlzIHN0aWxs1HN0b3JlZCwgYW5kIGEgY2FsbCBmcm9tIGByZW1vdmFibGVfYXRgIG9uIHJlbW92ZXMgaXQuXFN0YWxlQWxpYXNSZXBvcnRDbGVhcmVkDAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZASUVGhlIGFjY291bnQgd2hvc2UgcmVwb3J0IHdhcyBkcm9wcGVkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4ECFUBQSBtYXBwaW5nIHJlcG9ydGVkIHN0YWxlIHZlcmlmaWVzIGFnYWluLCBzbyBpdHMgcmVwb3J0IHdhcyBkcm9wcGVkLiBBIGxhdGVyIHN0YWxlbmVzc6RzdGFydHMgW2BDb25maWc6Ok1hcHBpbmdSZXRlbnRpb25gXSBvdmVyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEKDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXZlbnQEBFQAAQwsUGdhc0NsYWltZWQUARRhbGlhcwgBFEFsaWFzAAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50NQEBIQE8PFQgYXMgQ29uZmlnPjo6RnVuZ2libGVzIGFzIGZ1bmdpYmxlczo6SW5zcGVjdDxUOjpBY2NvdW50SWQ+Pjo6CkJhbGFuY2UAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAEMZGF5OAEMdTMyAAAEdFBHQVMgd2FzIGNsYWltZWQgYnkgYSBwZXJzb24uQFBnYXNBc3NldENyZWF0ZWQAAQRsVGhlIFBHQVMgYXNzZXQgd2FzIGNyZWF0ZWQuXFBnYXNDbGFpbVJlY29yZHNDbGVhbmVkCAEkZGF5X2luZGV4OAEMdTMyAAEUY291bnQ4AQx1MzIAAgScT2xkIFBHQVMgY2xhaW0gcmVjb3JkcyB3ZXJlIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQoMNHBhbGxldF9yZXZpdmUYcGFsbGV0FEV2ZW50BARUAAEMPENvbnRyYWN0RW1pdHRlZAwBIGNvbnRyYWN0cQcBEEgxNjAEkFRoZSBjb250cmFjdCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LgEQZGF0YRgBHFZlYzx1OD4INQFEYXRhIHN1cHBsaWVkIGJ5IHRoZSBjb250cmFjdC4gTWV0YWRhdGEgZ2VuZXJhdGVkIGR1cmluZyBjb250cmFjdCBjb21waWxhdGlvblxpcyBuZWVkZWQgdG8gZGVjb2RlIGl0LgEYdG9waWNzwAEkVmVjPEgyNTY+CKRBIGxpc3Qgb2YgdG9waWNzIHVzZWQgdG8gaW5kZXggdGhlIGV2ZW50LuxOdW1iZXIgb2YgdG9waWNzIGlzIGNhcHBlZCBieSBbYGxpbWl0czo6TlVNX0VWRU5UX1RPUElDU2BdLgAEnEEgY3VzdG9tIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIGNvbnRyYWN0LjBJbnN0YW50aWF0ZWQIASBkZXBsb3llcnEHARBIMTYwAAEgY29udHJhY3RxBwEQSDE2MAABBNxDb250cmFjdCBkZXBsb3llZCBieSBkZXBsb3llciBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuSEV0aEV4dHJpbnNpY1JldmVydAQBOGRpc3BhdGNoX2Vycm9ybQgBNERpc3BhdGNoRXJyb3IAAhi0RW1pdHRlZCB3aGVuIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJldmVydHMuACkBRXRoZXJldW0gdHJhbnNhY3Rpb25zIGFsd2F5cyBjb21wbGV0ZSBzdWNjZXNzZnVsbHkgYXQgdGhlIGV4dHJpbnNpYyBsZXZlbCzYYXMgZXZlbiByZXZlcnRlZCBjYWxscyBtdXN0IHN0b3JlIHRoZWlyIGBSZWNlaXB0SW5mb2AuJQFUbyBkaXN0aW5ndWlzaCByZXZlcnRlZCBjYWxscyBmcm9tIHN1Y2Nlc3NmdWwgb25lcywgdGhpcyBldmVudCBpcyBlbWl0dGVkhGZvciBmYWlsZWQgRXRoZXJldW0gdHJhbnNhY3Rpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDkKDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXZlbnQEBFQAARQwTmFtZVJlc2VydmVkFAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkBJhUaGUgY2FuZGlkYXRlIHdob3NlIG5hbWUgd2FzIHJlc2VydmVkLgEgYXR0ZXN0ZXIEATBUOjpBY2NvdW50SWQErFRoZSBhdHRlc3RlciB3aG8gcGVyZm9ybWVkIHRoZSByZXNlcnZhdGlvbi4BKGxpdGVfbGFiZWzBBwEkQmFzZUxhYmVsBLhUaGUgbGl0ZS1wZXJzb24gbGFiZWwgKGA8ZG5zLXN0ZW0+LjxkaWdpdHM+YCkuASBjaGF0X2tlecUHARxDaGF0S2V5BORUaGUgRUNESCBjaGF0IGtleSBzdG9yZWQgYWxvbmdzaWRlIHRoZSBsaXRlLXBlcnNvbiBsYWJlbC4BTHJlc2VydmVkX2Jhc2VfbGFiZWzJBwFET3B0aW9uPEJhc2VMYWJlbD4EBQFUaGUgb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgZnV0dXJlIGZ1bGwtcGVyc29uIGNsYWltaW5nLgAE8EEgdXNlcm5hbWUgaGFzIGJlZW4gcmVzZXJ2ZWQgZm9yIGEgY2FuZGlkYXRlIGJ5IGFuIGF0dGVzdGVyLjhOYW1lUmVnaXN0ZXJlZBABFGFsaWFzCAEUQWxpYXMEmFRoZSBhbGlhcyBkZXJpdmVkIGZyb20gdGhlIHJpbmcgcHJvb2YuARxhY2NvdW50BAEwVDo6QWNjb3VudElkBLBUaGUgYWNjb3VudCB0aGF0IGluaXRpYXRlZCB0aGUgcmVnaXN0cmF0aW9uLgEUbGFiZWzBBwEkQmFzZUxhYmVsBIRUaGUgcmVnaXN0ZXJlZCBmdWxsLXBlcnNvbiBsYWJlbC4BEGxpbmvNBwEQTGluawTkSG93IHRoZSBmdWxsLXBlcnNvbiBsYWJlbCByZWxhdGVzIHRvIGEgbGl0ZS1wZXJzb24gbGFiZWwuAQTQQSB1c2VybmFtZSBoYXMgYmVlbiByZWdpc3RlcmVkIGJ5IGEgdmVyaWZpZWQgcGVyc29uLnRBdHRlc3RhdGlvbkFsbG93YW5jZUluY3JlYXNlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQEVFRoZSBhdHRlc3RlciBhY2NvdW50LgEUY291bnQ4AQx1MzIEhFRoZSBudW1iZXIgb2YgYXR0ZXN0YXRpb25zIGFkZGVkLgIEzEF0dGVzdGF0aW9uIGFsbG93YW5jZSB3YXMgaW5jcmVhc2VkIGZvciBhbiBhY2NvdW50LnhBbGxBdHRlc3RhdGlvbkFsbG93YW5jZUNsZWFyZWQEASBhdHRlc3RlcgQBMFQ6OkFjY291bnRJZARUVGhlIGF0dGVzdGVyIGFjY291bnQuAwTwQWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBoYXMgYmVlbiByZW1vdmVkIGZvciB0aGUgYXR0ZXN0ZXIuUERpc3BhdGNoZXJBZGRyZXNzU2V0BAEcYWRkcmVzc3EHARBIMTYwBGRUaGUgbmV3IGNvbnRyYWN0IGFkZHJlc3MuBATUVGhlIGBSb290R2F0ZXdheURpc3BhdGNoZXJgIGNvbnRyYWN0IGFkZHJlc3Mgd2FzIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ9Cgx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXZlbnQEBFQAAQQwVXNhZ2VDbGVhbmVkBAEYZW50aXR51QcBTFQ6OlJlc3RyaWN0ZWRFbnRpdHkAAAR8VXNhZ2UgZm9yIGFuIGVudGl0eSBpcyBjbGVhbmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEKDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdJEIAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdJEIAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRFCgxUcGFsbGV0X3BnYXNfYWxsb3dhbmNlGHBhbGxldBRFdmVudAQEVAABBCxQR0FTRmVlUGFpZAgBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWU1AQEwQmFsYW5jZU9mPFQ+AAAIRQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAgaGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBQR0FTIGFuZCBidXJuZWQuIE1pcnJvcnPoW2BwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ6OlRyYW5zYWN0aW9uRmVlUGFpZGBdLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEkKCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAATQoAAALMAFEKCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZVUKAURDb3c8J3N0YXRpYywgc3RyPgAAVQoEDENvdwQEVAFZCgAEAFkKAAAAWQoAAAUCAF0KCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbnUBARBib29sAABhCgwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2sRAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrEQEBGFdlaWdodAABJHBlcl9jbGFzc2UKAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAGUKDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBaQoADAEYbm9ybWFsaQoBBFQAASxvcGVyYXRpb25hbGkKAQRUAAEkbWFuZGF0b3J5aQoBBFQAAGkKDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMRAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpYw0BAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbA0BAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkDQEBOE9wdGlvbjxXZWlnaHQ+AABtCgwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4cQoBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeABLE9wdGlvbjx1MzI+AABxCgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAHUKCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAB5Cggoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lVQoBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lVQoBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzfQoBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAfQoEDENvdwQEVAGBCgAEAIEKAAAAgQoAAAKFCgCFCgAABAh1AjgAiQoMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0jQoQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAZEKAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3OdCgE4VmVjPEV4dHJpbnNpYz4AAJEKEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAb0EFEV4dHJhAZUKAAQAGAAAAJUKCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwGZCgAEAJkKAQRTAACZCgAABDDdB+EH5QfpB+0H8Qf5B/0HAQgFCAkIEQgAnQoAAAKRCgChCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQRAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgACAAClCgAAAqkKAKkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRorQoBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaDUFASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzBCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAK0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ7EKAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAsQoEIEJUcmVlTWFwCARLAZwEVgG1CgAEALkKAAAAtQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAuQoAAAK9CgC9CgAABAictQoAwQoEGE9wdGlvbgQEVAHFCgEIEE5vbmUAAAAQU29tZQQAxQoAAAEAAMUKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAAyQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGitCgE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr4AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzBCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAM0KBBhPcHRpb24EBFQB0QoBCBBOb25lAAAAEFNvbWUEANEKAAABAADRCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAADVCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0edkKAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHPdCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc90KAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AADZCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAN0KAAAC4QoA4QoAAAQInOUKAOUKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZDUFATBPcHRpb248SGFzaD4AAOkKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1z7QoBSEFzeW5jQmFja2luZ1BhcmFtcwAA7QoQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAA8QoIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAD1CgQgQlRyZWVNYXAIBEsBnARWAfEKAAQA+QoAAAD5CgAAAv0KAP0KAAAECJzxCgABCwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAAULAAACCQsACQsIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAA0LCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50cxELASxWZWM8UGFyYUlkPgAAEQsAAAKcABULDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkLCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdAEGAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0HQsBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuABLE9wdGlvbjx1MzI+AAEAAB0LBBhPcHRpb24EBFQBAQYBCBBOb25lAAAAEFNvbWUEAAEGAAABAAAhCwg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAElCwEILFVucmVxdWVzdGVkCAEYdGlja2V0KQsBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0LQsBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu4AEsT3B0aW9uPHUzMj4AAQAAJQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAACkLAAAECAQlCwAtCwQYT3B0aW9uBARUASkLAQgQTm9uZQAAABBTb21lBAApCwAAAQAAMQsAAAQIPDgANQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA5Cww8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQsEUwAABABJCwEYVmVjPFQ+AABBCwQYT3B0aW9uBARUAUULAQgQTm9uZQAAABBTb21lBABFCwAAAQAARQsIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAEpBSxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B8QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWSxBwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsKQUBEENhbGwAAThtYXliZV9wZXJpb2RpY8gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7xAwE0UGFsbGV0c09yaWdpbgAASQsAAAJBCwBNCwhAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAFELDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVQsMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWQsIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAXQsEGE9wdGlvbgQEVAFhCwEIEE5vbmUAAAAQU29tZQQAYQsAAAEAAGELCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPgASxPcHRpb248dTMyPgAAZQsIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ1kLATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc10LAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAGkLDGxpbmRpdl9wYWxsZXRfbmV0d29ya19zdWZmaXgYcGFsbGV0FEVycm9yBARUAAEELEVtcHR5U3VmZml4AAAEhEEgbmV0d29yayBzdWZmaXggY2Fubm90IGJlIGVtcHR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5tCwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAXELBFMAAAQAeQsBGFZlYzxUPgAAcQsMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQE1AQAMAQhpZHUCAThMb2NrSWRlbnRpZmllcgABGGFtb3VudDUBARxCYWxhbmNlAAEccmVhc29uc3ULARxSZWFzb25zAAB1Cww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAHkLAAACcQsAfQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGBCwRTAAAEAIULARhWZWM8VD4AAIELDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAXUCHEJhbGFuY2UBNQEACAEIaWR1AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnQ1AQEcQmFsYW5jZQAAhQsAAAKBCwCJCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0LBFMAAAQAkQsBGFZlYzxUPgAAjQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAHVCBxCYWxhbmNlATUBAAgBCGlk1QgBCElkAAEYYW1vdW50NQEBHEJhbGFuY2UAAJELAAACjQsAlQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCwRTAAAEAKkLARhWZWM8VD4AAJkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBnQscQmFsYW5jZQE1AQAIAQhpZJ0LAQhJZAABGGFtb3VudDUBARxCYWxhbmNlAACdCwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZUxSdW50aW1lRnJlZXplUmVhc29uAAEIPE5vbWluYXRpb25Qb29scwQAoQsBlHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpGcmVlemVSZWFzb24AUAAYUmV2aXZlBAClCwFscGFsbGV0X3Jldml2ZTo6RnJlZXplUmVhc29uAGQAAKELDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBvb2xNaW5CYWxhbmNlAAAAAKULDDRwYWxsZXRfcmV2aXZlGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UEdhc01pbkJhbGFuY2UAAAAAqQsAAAKZCwCtCww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQsIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAC1CxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBuQsABAC5CwEEVAAAuQsYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCATUBGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudDUBAQRCAAC9CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUBBFMAAAQAwQsBGFZlYzxUPgAAwQsAAAKFAQDFCwg4cGFsbGV0X3Zlc3RpbmcgUmVsZWFzZXMAAQgIVjAAAAAIVjEAAQAAyQsMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFcnJvcgQEVAABFChOb3RWZXN0aW5nAAAEhFRoZSBhY2NvdW50IGdpdmVuIGlzIG5vdCB2ZXN0aW5nLlRBdE1heFZlc3RpbmdTY2hlZHVsZXMAAQglAVRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGBNYXhWZXN0aW5nU2NoZWR1bGVzYCBjb3VudCBvZiBzY2hlZHVsZXMgYW5kIHRodXNRAWNhbm5vdCBhZGQgYW5vdGhlciBvbmUuIENvbnNpZGVyIG1lcmdpbmcgZXhpc3Rpbmcgc2NoZWR1bGVzIGluIG9yZGVyIHRvIGFkZCBhbm90aGVyLiRBbW91bnRMb3cAAgQFAUFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCBpcyB0b28gbG93IHRvIGNyZWF0ZSBhIHZlc3Rpbmcgc2NoZWR1bGUuYFNjaGVkdWxlSW5kZXhPdXRPZkJvdW5kcwADBNBBbiBpbmRleCB3YXMgb3V0IG9mIGJvdW5kcyBvZiB0aGUgdmVzdGluZyBzY2hlZHVsZXMuVEludmFsaWRTY2hlZHVsZVBhcmFtcwAEBA0BRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzY2hlZHVsZSBiZWNhdXNlIHNvbWUgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLgR0RXJyb3IgZm9yIHRoZSB2ZXN0aW5nIHBhbGxldC7NCxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkRXRoZXJldW1TaWduYXR1cmUAAARsSW52YWxpZCBFdGhlcmV1bSBzaWduYXR1cmUuQFNpZ25lckhhc05vQ2xhaW0AAQR4RXRoZXJldW0gYWRkcmVzcyBoYXMgbm8gY2xhaW0uQFNlbmRlckhhc05vQ2xhaW0AAgSwQWNjb3VudCBJRCBzZW5kaW5nIHRyYW5zYWN0aW9uIGhhcyBubyBjbGFpbS4wUG90VW5kZXJmbG93AAMISQFUaGVyZSdzIG5vdCBlbm91Z2ggaW4gdGhlIHBvdCB0byBwYXkgb3V0IHNvbWUgdW52ZXN0ZWQgYW1vdW50LiBHZW5lcmFsbHkgaW1wbGllcyBhMGxvZ2ljIGVycm9yLkBJbnZhbGlkU3RhdGVtZW50AAQEkEEgbmVlZGVkIHN0YXRlbWVudCB3YXMgbm90IGluY2x1ZGVkLkxWZXN0ZWRCYWxhbmNlRXhpc3RzAAUEpFRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgdmVzdGVkIGJhbGFuY2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AANULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB2QsEUwAABADdCwEYVmVjPFQ+AADZCwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0NQEBHEJhbGFuY2UAAN0LAAAC2QsA4QsINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAdQIBHFt1ODsgOF0AAOULDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFcnJvcgQEVAABRERUb29NYW55Q2FuZGlkYXRlcwAABIxUaGUgcGFsbGV0IGhhcyB0b28gbWFueSBjYW5kaWRhdGVzLlxUb29GZXdFbGlnaWJsZUNvbGxhdG9ycwABBKxMZWF2aW5nIHdvdWxkIHJlc3VsdCBpbiB0b28gZmV3IGNhbmRpZGF0ZXMuQEFscmVhZHlDYW5kaWRhdGUAAgR8QWNjb3VudCBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLjBOb3RDYW5kaWRhdGUAAwRsQWNjb3VudCBpcyBub3QgYSBjYW5kaWRhdGUuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAQEhFRoZXJlIGFyZSB0b28gbWFueSBJbnZ1bG5lcmFibGVzLkxBbHJlYWR5SW52dWxuZXJhYmxlAAUEjEFjY291bnQgaXMgYWxyZWFkeSBhbiBJbnZ1bG5lcmFibGUuPE5vdEludnVsbmVyYWJsZQAGBHxBY2NvdW50IGlzIG5vdCBhbiBJbnZ1bG5lcmFibGUuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAcEnEFjY291bnQgaGFzIG5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElELlhWYWxpZGF0b3JOb3RSZWdpc3RlcmVkAAgEjFZhbGlkYXRvciBJRCBpcyBub3QgeWV0IHJlZ2lzdGVyZWQubEluc2VydFRvQ2FuZGlkYXRlTGlzdEZhaWxlZAAJBJxDb3VsZCBub3QgaW5zZXJ0IGluIHRoZSBjYW5kaWRhdGUgbGlzdC50UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQACgSkQ291bGQgbm90IHJlbW92ZSBmcm9tIHRoZSBjYW5kaWRhdGUgbGlzdC40RGVwb3NpdFRvb0xvdwALBPROZXcgZGVwb3NpdCBhbW91bnQgd291bGQgYmUgYmVsb3cgdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQuZFVwZGF0ZUNhbmRpZGF0ZUxpc3RGYWlsZWQADASQQ291bGQgbm90IHVwZGF0ZSB0aGUgY2FuZGlkYXRlIGxpc3QuQEluc3VmZmljaWVudEJvbmQADQQpAURlcG9zaXQgYW1vdW50IGlzIHRvbyBsb3cgdG8gdGFrZSB0aGUgdGFyZ2V0J3Mgc2xvdCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QuUFRhcmdldElzTm90Q2FuZGlkYXRlAA4ELQFUaGUgdGFyZ2V0IGFjY291bnQgdG8gYmUgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGlzIG5vdCBhIGNhbmRpZGF0ZS5ASWRlbnRpY2FsRGVwb3NpdAAPBA0BVGhlIHVwZGF0ZWQgZGVwb3NpdCBhbW91bnQgaXMgZXF1YWwgdG8gdGhlIGFtb3VudCBhbHJlYWR5IHJlc2VydmVkLkBJbnZhbGlkVW5yZXNlcnZlABAEPQFDYW5ub3QgbG93ZXIgY2FuZGlkYWN5IGJvbmQgd2hpbGUgb2NjdXB5aW5nIGEgZnV0dXJlIGNvbGxhdG9yIHNsb3QgaW4gdGhlIGxpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LukLAAAC7QsA7QsAAAQIBLUBAPELAAAC9QsA9QsAAAQIOPkLAPkLDChzcF9zdGFraW5nHG9mZmVuY2U8T2ZmZW5jZVNldmVyaXR5AAAEAFkFARxQZXJiaWxsAAD9CwAABAgBDBgAAQwMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABABwARxbdTg7IDRdAAAFDAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEVycm9yBARUAAEUMEludmFsaWRQcm9vZgAABGBJbnZhbGlkIG93bmVyc2hpcCBwcm9vZi5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQScTm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQgZm9yIGFjY291bnQuNER1cGxpY2F0ZWRLZXkAAgRkUmVnaXN0ZXJlZCBkdXBsaWNhdGUga2V5LhhOb0tleXMAAwSkTm8ga2V5cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjb3VudC4kTm9BY2NvdW50AAQEGQFLZXkgc2V0dGluZyBhY2NvdW50IGlzIG5vdCBsaXZlLCBzbyBpdCdzIGltcG9zc2libGUgdG8gYXNzb2NpYXRlIGtleXMuBHRFcnJvciBmb3IgdGhlIHNlc3Npb24gcGFsbGV0LgkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBuQEEUwAABAANDAEYVmVjPFQ+AAANDAAAArkBABEMCEhzcF9jb25zZW5zdXNfc2xvdHMQU2xvdAAABAAoAQx1NjQAABUMAAAECBEMOAAZDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBnARTAAAEAB0MASxCVHJlZVNldDxUPgAAHQwEIEJUcmVlU2V0BARUAZwABAARCwAAACEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBJQwEUwAABAAxDAEYVmVjPFQ+AAAlDAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAcASRyZWNpcGllbnScARhQYXJhSWQAARRzdGF0ZSkMATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdHUBARBib29sAAEsZmlyc3RfaW5kZXjtAwEMdTE2AAEobGFzdF9pbmRleO0DAQx1MTYAARRmbGFncy0MAVBPdXRib3VuZENoYW5uZWxGbGFncwABMHF1ZXVlZF9ieXRlczgBDHUzMgAAKQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAALQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAADEMAAACJQwANQwAAAQInO0DADkMDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAPQwIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAQQwMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuRQwMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcsUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJJDAFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeU0MAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbsUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZXUBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2VVDAFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAEkMBBhPcHRpb24EBFQBxQEBCBBOb25lAAAAEFNvbWUEAMUBAAABAABNDAQYT3B0aW9uBARUAVEMAQgQTm9uZQAAABBTb21lBABRDAAAAQAAUQwAAAQIDAwAVQwIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAfQIBMHYzOjpSZXNwb25zZQADAAhWNAQA6QIBMHY0OjpSZXNwb25zZQAEAAhWNQQANQMBMHY1OjpSZXNwb25zZQAFAABZDAAABAg4xQEAXQwAAAQMKBEBOABhDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUMBFMAAAQAaQwBGFZlYzxUPgAAZQwAAAQIxQE4AGkMAAACZQwAbQwMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQAYQEBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAABxDAAABAw4BL0DAHUMDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyARAwTWF4Q29uc3VtZXJzAAAQARhhbW91bnQ1AQEQdTEyOAABFG93bmVyxQEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2VyxQEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJzeQwB0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AAHkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQwEUwAABACBDAEYVmVjPFQ+AAB9DAAABAgQNQEAgQwAAAJ9DACFDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYkMBFMAAAQAjQwBGFZlYzxUPgAAiQwAAAQINQHFAQCNDAAAAokMAJEMCChwYWxsZXRfeGNtWEF1dGhvcml6ZWRBbGlhc2VzRW50cnkIGFRpY2tldAGVDAxNQVgBmQwACAEgYWxpYXNlcnOdDAF4Qm91bmRlZFZlYzxPcmlnaW5BbGlhc2VyLCBNQVg+AAEYdGlja2V0lQwBGFRpY2tldAAAlQwUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQANQEBKEY6OkJhbGFuY2UAAJkMDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAACdDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaEMBFMAAAQApQwBGFZlYzxUPgAAoQwMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9uxQEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5/AEsT3B0aW9uPHU2ND4AAKUMAAACoQwAqQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcq0MAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tDAwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAACxDAhgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9ySQUBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZHUBARBib29sAAC1DAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAc0DABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzuQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AAC5DAQYT3B0aW9uBARUAb0MAQgQTm9uZQAAABBTb21lBAC9DAAAAQAAvQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BzQMACAEQcHJlds0DATRNZXNzYWdlT3JpZ2luAAEQbmV4dM0DATRNZXNzYWdlT3JpZ2luAADBDAAABAjNAzgAxQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcMkMAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAMkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAzQwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RDAyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFcnJvcgQEVAABNGhVbnN1cHBvcnRlZExvY2F0aW9uVmVyc2lvbgAABIhDb252ZXJ0IHZlcnNpb25lZCBsb2NhdGlvbiBmYWlsdXJlREludmFsaWRBc3NldE93bmVyAAEEGQFDaGVjayBsb2NhdGlvbiBmYWlsdXJlLCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgZGlzcGF0Y2ggb3JpZ2luIGFzIG93bmVyLFNlbmRGYWlsdXJlAAIEYFNlbmQgeGNtIG1lc3NhZ2UgZmFpbHVyZShGZWVzTm90TWV0AAMEaFdpdGhkcmF3IGZlZSBhc3NldCBmYWlsdXJlYExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAAEBJhDb252ZXJ0IHRvIHJlYW5jaG9yZWQgbG9jYXRpb24gZmFpbHVyZRhIYWx0ZWQABQRgTWVzc2FnZSBleHBvcnQgaXMgaGFsdGVkLFVucmVhY2hhYmxlAAYIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuQFVuc3VwcG9ydGVkQXNzZXQABwS4VGhlIGFzc2V0IHByb3ZpZGVkIGZvciB0aGUgdGlwIGlzIHVuc3VwcG9ydGVkLjRXaXRoZHJhd0Vycm9yAAgEZFVuYWJsZSB0byB3aXRoZHJhdyBhc3NldC44SW52YWxpZEFjY291bnQACQS0QWNjb3VudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIGEgbG9jYXRpb24uJFN3YXBFcnJvcgAKBMhQcm92aWRlZCB0aXAgYXNzZXQgY291bGQgbm90IGJlIHN3YXBwZWQgZm9yIGV0aGVyLiRCdXJuRXJyb3IACwRoRXRoZXIgY291bGQgbm90IGJlIGJ1cm5lZC40VGlwQW1vdW50WmVybwAMBGRUaGUgdGlwIHByb3ZpZGVkIGlzIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtUMDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtkMAAAECAQIAN0MCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQE1ASRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW41BAFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXQ1AQEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc+EMAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAA4QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAA5QwMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7pDAAABAjtDDUBAO0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB8QwEUwAABAD1DAEYVmVjPFQ+AADxDAgwcGFsbGV0X3Byb3h5PFByb3h5RGVmaW5pdGlvbgwkQWNjb3VudElkAQQkUHJveHlUeXBlAUEELEJsb2NrTnVtYmVyATgADAEgZGVsZWdhdGUEASRBY2NvdW50SWQAAShwcm94eV90eXBlQQQBJFByb3h5VHlwZQABFGRlbGF5OAEsQmxvY2tOdW1iZXIAAPUMAAAC8QwA+QwAAAQI/Qw1AQD9DAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQENBFMAAAQABQ0BGFZlYzxUPgAAAQ0IMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAAUNAAACAQ0ACQ0MMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0NAAAEDAQ1AXUBABENDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4VDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBNQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBNQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHk1AQEcQmFsYW5jZQABHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZTUBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudHUBARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1cxkNASxBc3NldFN0YXR1cwAAGQ0MNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAAAdDQAABAg4BAAhDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBNQE4RGVwb3NpdEJhbGFuY2UBNQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlNQEBHEJhbGFuY2UAARhzdGF0dXMlDQE0QWNjb3VudFN0YXR1cwABGHJlYXNvbikNAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAAAlDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAAApDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBNQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBAA1AQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAANQEBHEJhbGFuY2UABAAALQ0AAAQMOAQEADENDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlATUBOERlcG9zaXRCYWxhbmNlATUBAAgBGGFtb3VudDUBARxCYWxhbmNlAAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQAANQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQE0Qm91bmRlZFN0cmluZwE5DQAUARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZTkNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sOQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAADkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAPQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFkKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFAQVAVRoZSBhc3NldCBJRCBpcyBub3QgdGhlIG9uZSByZXF1aXJlZCBieSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdLlxBc3NldElkQWxsb2NhdGlvbkZhaWxlZAAVCDkBVGhlIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gY2Fubm90IGFsbG9jYXRlIHRoZSBhc3NldCBJRDogdGhlIGlkIHNwYWNlIGlzKGV4aGF1c3RlZC48Q29udGFpbnNGcmVlemVzABYETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABcERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABgEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkENBBhPcHRpb24EBFQBFQ0BCBBOb25lAAAAEFNvbWUEABUNAAABAABFDQQYT3B0aW9uBARUATUNAQgQTm9uZQAAABBTb21lBAA1DQAAAQAASQ0MOHBhbGxldF91bmlxdWVzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQE1AQAoARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAATBmcmVlX2hvbGRpbmd1AQEQYm9vbAABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAEkaXNfZnJvemVudQEBEGJvb2wAAE0NAAAEDAQ4OABRDQw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlATUBABABFG93bmVyBAEkQWNjb3VudElkAAEgYXBwcm92ZWSpAQFET3B0aW9uPEFjY291bnRJZD4AASRpc19mcm96ZW51AQEQYm9vbAABHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAAFUNDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlATUBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YWUEAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW51AQEQYm9vbAAAWQ0MOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXQ1AQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhZQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbnUBARBib29sAABdDQAABAw44N0DAGENAAAECHg1AQBlDQAABAg1AakBAGkNDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAVgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4oTm9NZXRhZGF0YQASBFRObyBtZXRhZGF0YSBpcyBmb3VuZC40V3JvbmdNZXRhZGF0YQATBKBXcm9uZyBtZXRhZGF0YSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuREF0dHJpYnV0ZU5vdEZvdW5kABQEaEFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuOFdyb25nQXR0cmlidXRlABUEpFdyb25nIGF0dHJpYnV0ZSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lm0NDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBNQEAGAEUb3duZXIEASRBY2NvdW50SWQAATRvd25lcl9kZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABMGl0ZW1fY29uZmlnczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAAHENDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAF1DQAEAAwBOENvbGxlY3Rpb25Sb2xlAAB1DQwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAAeQ0MLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBBBxEZXBvc2l0AX0NJEFwcHJvdmFscwGBDQAMARRvd25lcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc4ENASRBcHByb3ZhbHMAARxkZXBvc2l0fQ0BHERlcG9zaXQAAH0NDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudAQBJEFjY291bnRJZAABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAgQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgHgBFMAAAQAhQ0BOEJUcmVlTWFwPEssIFY+AACFDQQgQlRyZWVNYXAIBEsBBARWAeAABACJDQAAAIkNAAACjQ0AjQ0AAAQIBOAAkQ0MLHBhbGxldF9uZnRzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQgcRGVwb3NpdAE1ASxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdDUBARxEZXBvc2l0AAEQZGF0YVkBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAJUNDCxwYWxsZXRfbmZ0cxR0eXBlczBJdGVtTWV0YWRhdGEIHERlcG9zaXQBmQ0sU3RyaW5nTGltaXQAAAgBHGRlcG9zaXSZDQEcRGVwb3NpdAABEGRhdGFZAQFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AACZDQwscGFsbGV0X25mdHMUdHlwZXNMSXRlbU1ldGFkYXRhRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudKkBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAnQ0AAAQQOOCZBHgAoQ0AAAQIWQGlDQClDQwscGFsbGV0X25mdHMUdHlwZXNAQXR0cmlidXRlRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBNQEkQWNjb3VudElkAQQACAEcYWNjb3VudKkBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudDUBAThEZXBvc2l0QmFsYW5jZQAAqQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABACtDQEsQlRyZWVTZXQ8VD4AAK0NBCBCVHJlZVNldAQEVAEEAAQAeQEAAACxDQwscGFsbGV0X25mdHMUdHlwZXMsUGVuZGluZ1N3YXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4WEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24BsQQgRGVhZGxpbmUBOAAQAUhkZXNpcmVkX2NvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAThPcHRpb248SXRlbUlkPgABFHByaWNlrQQBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAALUNDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAG5DQAEACgBNFBhbGxldEZlYXR1cmUAALkNDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAAvQ0MLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsENAAAECBkCBADFDQAABAwZAgQEAMkNDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlATUBNEJvdW5kZWRTdHJpbmcBzQ0AFAEcZGVwb3NpdDUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWXNDQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbM0NATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbnUBARBib29sAADNDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANENDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABZChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEFQFUaGUgYXNzZXQgSUQgaXMgbm90IHRoZSBvbmUgcmVxdWlyZWQgYnkgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXS5cQXNzZXRJZEFsbG9jYXRpb25GYWlsZWQAFQg5AVRoZSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGNhbm5vdCBhbGxvY2F0ZSB0aGUgYXNzZXQgSUQ6IHRoZSBpZCBzcGFjZSBpcyhleGhhdXN0ZWQuPENvbnRhaW5zRnJlZXplcwAWBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAXBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAYBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VDQQYT3B0aW9uBARUAckNAQgQTm9uZQAAABBTb21lBADJDQAAAQAA2Q0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBNQE0Qm91bmRlZFN0cmluZwHdDQAUARxkZXBvc2l0NQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZd0NATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9s3Q0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVudQEBEGJvb2wAAN0NDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA4Q0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFkKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFAQVAVRoZSBhc3NldCBJRCBpcyBub3QgdGhlIG9uZSByZXF1aXJlZCBieSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdLlxBc3NldElkQWxsb2NhdGlvbkZhaWxlZAAVCDkBVGhlIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gY2Fubm90IGFsbG9jYXRlIHRoZSBhc3NldCBJRDogdGhlIGlkIHNwYWNlIGlzKGV4aGF1c3RlZC48Q29udGFpbnNGcmVlemVzABYETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABcERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABgEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuUNBBhPcHRpb24EBFQB2Q0BCBBOb25lAAAAEFNvbWUEANkNAAABAADpDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAA7Q0MXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xDQQYUmVzdWx0CARUAfUNBEUB7Q0BCAhPawQA9Q0AAAAADEVycgQA7Q0AAAEAAPUNAAAECDUBNQEA+Q0MVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXJyb3IIBFQABEkAAQQ4VG9vTWFueUZyZWV6ZXMAAAToTnVtYmVyIG9mIGZyZWV6ZXMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgYE1heEZyZWV6ZXNgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC79DQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BDgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldDhDb2xsZWN0aW9uSW5mbwwkQWNjb3VudElkAQQcQmFsYW5jZQE1AVBTdG9yYWdlQ29uc2lkZXJhdGlvbgAAIAEUb3duZXIEASRBY2NvdW50SWQAATRwZW5kaW5nX293bmVyqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAE8bmV4dF9pdGVtX2luZGV4OAEkSXRlbUluZGV4AAEoaXRlbV9jb3VudDgBDHUzMgABOG1ldGFkYXRhX2NvdW50OAEMdTMyAAFIY29sbGVjdGlvbl9kZXBvc2l0NQEBHEJhbGFuY2UAATRvd25lcl9kZXBvc2l0NQEBHEJhbGFuY2UAATRjb25zaWRlcmF0aW9uBQ4BUFN0b3JhZ2VDb25zaWRlcmF0aW9uAAAFDhQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABAA1AQEoRjo6QmFsYW5jZQAACQ4MVGluZGl2X3BhbGxldF9zY2FyY2l0eRhwYWxsZXQ4SXRlbURlZmluaXRpb24EHEJhbGFuY2UBNQEAFAEYc3VwcGx5OAEMdTMyAAEsbGl2ZV9zdXBwbHk4AQx1MzIAAThtZXRhZGF0YV9jb3VudDgBDHUzMgABHGRlcG9zaXQ1AQEcQmFsYW5jZQABPHRyYW5zZmVyYWJpbGl0eekEATxUcmFuc2ZlcmFiaWxpdHkAAA0OAAAECDjdAwARDgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldDRNZXRhZGF0YUVudHJ5CBRWYWx1ZQFZARxCYWxhbmNlATUBAAgBFHZhbHVlWQEBFFZhbHVlAAEcZGVwb3NpdDUBARxCYWxhbmNlAAAVDgAABAw4ON0DABkOAAAECCjdAwAdDgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5GHBhbGxldCBMb2NrSW5mbwAACAEccmV0cmllcwwBCHU4AAEUdW50aWwoAQx1NjQAACEODFRpbmRpdl9wYWxsZXRfc2NhcmNpdHkYcGFsbGV0FEVycm9yBARUAAFYSFRvb01hbnlDb2xsZWN0aW9ucwAABLRUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyIHNwYWNlIGlzIGV4aGF1c3RlZC5EVW5rbm93bkNvbGxlY3Rpb24AAQR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBPRPbmx5IHRoZSBjdXJyZW50IGNvbGxlY3Rpb24gb3duZXIgbWF5IHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uWEFscmVhZHlDb2xsZWN0aW9uT3duZXIAAwQRAVRoZSBjdXJyZW50IGNvbGxlY3Rpb24gb3duZXIgY2Fubm90IGJlIG5vbWluYXRlZCBhcyBpdHMgcmVwbGFjZW1lbnQuZE5vdFBlbmRpbmdDb2xsZWN0aW9uT3duZXIABAQtAVRoZSBzaWduZXIgaXMgbm90IHRoZSBhY2NvdW50IGN1cnJlbnRseSBub21pbmF0ZWQgdG8gY2xhaW0gdGhpcyBjb2xsZWN0aW9uLjBUb29NYW55SXRlbXMABQTEVGhlIHBlci1jb2xsZWN0aW9uIGl0ZW0gaW5kZXggc3BhY2UgaXMgZXhoYXVzdGVkLixVbmtub3duSXRlbQAGBLRUaGUgcmVxdWVzdGVkIGl0ZW0gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGlzdC4kSXRlbUluVXNlAAcEuEFuIGl0ZW0gd2l0aCBsaXZlIGluc3RhbmNlcyBjYW5ub3QgYmUgZGVsZXRlZC5QSXRlbU1ldGFkYXRhTm90RW1wdHkACATcSXRlbSBtZXRhZGF0YSBtdXN0IGJlIHJlbW92ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBpdGVtLlxDb2xsZWN0aW9uSXRlbXNOb3RFbXB0eQAJBAEBSXRlbSBkZWZpbml0aW9ucyBtdXN0IGJlIGRlbGV0ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBjb2xsZWN0aW9uLmhDb2xsZWN0aW9uTWV0YWRhdGFOb3RFbXB0eQAKBA0BQ29sbGVjdGlvbiBtZXRhZGF0YSBtdXN0IGJlIHJlbW92ZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBjb2xsZWN0aW9uLkREZWxldGlvbkludmFyaWFudAALBPhTdG9yZWQgZGVwZW5kZW5jeSBjb3VudGVycyBvciBkZXBvc2l0cyBkbyBub3QgcGVybWl0IGRlbGV0aW9uLjxBZGRyZXNzT2NjdXBpZWQADAS8VGhlIGRlc3RpbmF0aW9uIHB1cnNlIGtleSBhbHJlYWR5IGhvbGRzIGFuIE5GVC5AVG9vTWFueUluc3RhbmNlcwANBNRUaGUgcGVybWFuZW50IGluc3RhbmNlIGlkZW50aWZpZXIgc3BhY2UgaXMgZXhoYXVzdGVkLjhTdXBwbHlPdmVyZmxvdwAOBMBBbiBpdGVtIGRlZmluaXRpb24ncyBtaW50ZWQgc3VwcGx5IGlzIGV4aGF1c3RlZC48VW5rbm93bkluc3RhbmNlAA8ErFRoZSByZXF1ZXN0ZWQgbGl2ZSBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdC5cVG9vTWFueUluc3RhbmNlTWV0YWRhdGEAEAT0VGhlIGNvbmZpZ3VyZWQgcGVyLWluc3RhbmNlIG1ldGFkYXRhIGVudHJ5IGxpbWl0IHdhcyByZWFjaGVkLjBTZWxmVHJhbnNmZXIAEQTYQW4gTkZUIGNhbm5vdCBiZSB0cmFuc2ZlcnJlZCB0byBpdHMgY3VycmVudCBwdXJzZSBrZXkuSFN0YXRlTm9uY2VPdmVyZmxvdwASBLxBbiBORlQgaGFzIGV4aGF1c3RlZCBpdHMgb3duZXJzaGlwLXN0YXRlIG5vbmNlLiRTb3VsYm91bmQAEwQ9AVRoZSBpdGVtIGRlZmluaXRpb24gYmluZHMgaXRzIGluc3RhbmNlcyB0byB0aGUgcHVyc2Uga2V5IHRoZXkgd2VyZSBtaW50ZWQgaW50by5kVG9vTWFueUNvbGxlY3Rpb25NZXRhZGF0YQAUBPxUaGUgY29uZmlndXJlZCBwZXItY29sbGVjdGlvbiBtZXRhZGF0YSBlbnRyeSBsaW1pdCB3YXMgcmVhY2hlZC5MVG9vTWFueUl0ZW1NZXRhZGF0YQAVBORUaGUgY29uZmlndXJlZCBwZXItaXRlbSBtZXRhZGF0YSBlbnRyeSBsaW1pdCB3YXMgcmVhY2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuJQ4MKHBhbGxldF9wc20YcGFsbGV0HFBzbUluZm8EBFQAABQBPGZlZV9kZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABIG1heF9kZWJ0NQEBMEJhbGFuY2VPZjxUPgABPG1pbl9zd2FwX2Ftb3VudDUBATBCYWxhbmNlT2Y8VD4AAURpbnRlcm5hbF9kZWNpbWFscwwBCHU4AAE4ZXh0ZXJuYWxfY291bnQ4AQx1MzIAACkODChwYWxsZXRfcHNtGHBhbGxldDBQc21BZG1pbkluZm8EBFQAAAwBKGZ1bGxfYWRtaW7xAwFAVDo6UGFsbGV0c09yaWdpbgABPGVtZXJnZW5jeV9hZG1pbvEDAUBUOjpQYWxsZXRzT3JpZ2luAAEcZGVwb3NpdC0OAaBPcHRpb248KFQ6OkFjY291bnRJZCwgVDo6Q29uc2lkZXJhdGlvbik+AAAtDgQYT3B0aW9uBARUATEOAQgQTm9uZQAAABBTb21lBAAxDgAAAQAAMQ4AAAQIBDUOADUOFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEADUBAShGOjpCYWxhbmNlAAA5DgwocGFsbGV0X3BzbRhwYWxsZXRERXh0ZXJuYWxBc3NldEluZm8AAAgBGHN0YXR1cwEFAUxDaXJjdWl0QnJlYWtlckxldmVsAAEgZGVjaW1hbHMMAQh1OAAAPQ4MKHBhbGxldF9wc20YcGFsbGV0FEVycm9yBARUAAFcTEluc3VmZmljaWVudFJlc2VydmUAAATYUFNNIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggZXh0ZXJuYWwgYXNzZXQgZm9yIHJlZGVtcHRpb24uREV4Y2VlZHNNYXhQc21EZWJ0AAEEjFN3YXAgd291bGQgZXhjZWVkIFBTTSBkZWJ0IGNlaWxpbmcuQEJlbG93TWluaW11bVN3YXAAAgTMU3dhcCBhbW91bnQgYmVsb3cgdGhlIGluc3RhbmNlJ3MgbWluaW11bSB0aHJlc2hvbGQuKEZlZVRvb0hpZ2gAAwTAQ3VycmVudCBmZWUgZXhjZWVkcyB0aGUgY2FsbGVyLXByb3ZpZGVkIG1heGltdW0uRFplcm9NaW5Td2FwQW1vdW50AAQE2GBjcmVhdGVfcHNtYCB3YXMgY2FsbGVkIHdpdGggYSB6ZXJvIGBtaW5fc3dhcF9hbW91bnRgLjhNaW50aW5nU3RvcHBlZAAFBPRNaW50aW5nIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkIChjaXJjdWl0IGJyZWFrZXIgbGV2ZWwgPj0gMSkuPEFsbFN3YXBzU3RvcHBlZAAGBPRBbGwgc3dhcCBvcGVyYXRpb25zIGFyZSBkaXNhYmxlZCAoY2lyY3VpdCBicmVha2VyIGxldmVsID0gMikuQFVuc3VwcG9ydGVkQXNzZXQABwSgQXNzZXQgaXMgbm90IGFuIGFwcHJvdmVkIGV4dGVybmFsIGFzc2V0LixQc21Ob3RGb3VuZAAIBOxObyBQU00gaW5zdGFuY2UgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGludGVybmFsIGFzc2V0LlBBc3NldEFscmVhZHlBcHByb3ZlZAAJBJhBc3NldCBpcyBhbHJlYWR5IGluIHRoZSBhcHByb3ZlZCBsaXN0LkRBc3NldERvZXNOb3RFeGlzdAAKBFRBc3NldCBkb2VzIG5vdCBleGlzdC5AQXNzZXROb3RBcHByb3ZlZAALBKhDYW5ub3QgcmVtb3ZlIGFzc2V0OiBub3QgaW4gYXBwcm92ZWQgbGlzdC4wQXNzZXRIYXNEZWJ0AAwErENhbm5vdCByZW1vdmUgYXNzZXQ6IGhhcyBub24temVybyBQU00gZGVidC5USW5zdWZmaWNpZW50UHJpdmlsZWdlAA0IMQFPcGVyYXRpb24gcmVxdWlyZXMgdGhlIGluc3RhbmNlJ3MgYGZ1bGxfYWRtaW5gIChGdWxsIGxldmVsKTsgdGhlIGNhbGxlciBvbmx5wG1hdGNoZWQgdGhlIGBlbWVyZ2VuY3lfYWRtaW5gIChFbWVyZ2VuY3kgbGV2ZWwpLjRUb29NYW55QXNzZXRzAA4EzE1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmVkIGV4dGVybmFsIGFzc2V0cyByZWFjaGVkLkBEZWNpbWFsc01pc21hdGNoAA8ECQFSZXNlcnZlZCBsZWdhY3kgZXJyb3I7IHJldGFpbmVkIHRvIHByZXNlcnZlIGVycm9yIHZhcmlhbnQgaW5kaWNlcy5URGVjaW1hbHNSYW5nZUV4Y2VlZGVkABAE9FRoZSBhc3NldCdzIGRlY2ltYWwgcHJlY2lzaW9uIGlzIG91dHNpZGUgdGhlIHN1cHBvcnRlZCByYW5nZS5IQ29udmVyc2lvbk92ZXJmbG93ABEEwERlY2ltYWwgc2NhbGluZyBwcm9kdWNlZCBhbiBhcml0aG1ldGljIG92ZXJmbG93LnRBbW91bnRUb29TbWFsbEFmdGVyQ29udmVyc2lvbgASBDEBQ29udmVyc2lvbiB0byB0aGUgY291bnRlci1hc3NldCByb3VuZHMgdG8gemVybzsgc3dhcCB3b3VsZCB0cmFuc2ZlciBub3RoaW5nLkBQc21BbHJlYWR5RXhpc3RzABME0EEgUFNNIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgdGhpcyBpbnRlcm5hbCBhc3NldC4oUHNtSGFzRGVidAAUBCEBVGhlIFBTTSBoYXMgbm9uLXplcm8gb3V0c3RhbmRpbmcgZGVidCBvbiBhdCBsZWFzdCBvbmUgYXBwcm92ZWQgZXh0ZXJuYWwuXFBzbUhhc0FwcHJvdmVkRXh0ZXJuYWxzABUEKQFUaGUgUFNNIHN0aWxsIGhhcyBhcHByb3ZlZCBleHRlcm5hbHM7IHJlbW92ZSB0aGVtIGJlZm9yZSByZW1vdmluZyB0aGUgUFNNLihVbmV4cGVjdGVkABYEEQFBbiB1bmV4cGVjdGVkIGludmFyaWFudCB2aW9sYXRpb24gb2NjdXJyZWQuIFRoaXMgc2hvdWxkIGJlIHJlcG9ydGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BDgg8cGFsbGV0X3RyZWFzdXJ5IFByb3Bvc2FsCCRBY2NvdW50SWQBBBxCYWxhbmNlATUBABABIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWU1AQEcQmFsYW5jZQABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEQYm9uZDUBARxCYWxhbmNlAABFDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABhBAEYVmVjPFQ+AABJDgg8cGFsbGV0X3RyZWFzdXJ5LFNwZW5kU3RhdHVzFCRBc3NldEtpbmQBCQUwQXNzZXRCYWxhbmNlATUBLEJlbmVmaWNpYXJ5AQ0FLEJsb2NrTnVtYmVyATgkUGF5bWVudElkASgAGAEoYXNzZXRfa2luZAkFASRBc3NldEtpbmQAARhhbW91bnQ1AQEwQXNzZXRCYWxhbmNlAAEsYmVuZWZpY2lhcnkNBQEsQmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAEsQmxvY2tOdW1iZXIAASRleHBpcmVfYXQ4ASxCbG9ja051bWJlcgABGHN0YXR1c00OAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAATQ4IPHBhbGxldF90cmVhc3VyeTBQYXltZW50U3RhdGUECElkASgBDBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAAFEODDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEVycm9yCARUAARJAAEsMEludmFsaWRJbmRleAAABKxObyBwcm9wb3NhbCwgYm91bnR5IG9yIHNwZW5kIGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAQSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgACCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAADBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UABARRAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0LjBTcGVuZEV4cGlyZWQABQSwVGhlIHNwZW5kIGhhcyBleHBpcmVkIGFuZCBjYW5ub3QgYmUgY2xhaW1lZC4sRWFybHlQYXlvdXQABgSkVGhlIHNwZW5kIGlzIG5vdCB5ZXQgZWxpZ2libGUgZm9yIHBheW91dC5AQWxyZWFkeUF0dGVtcHRlZAAHBJxUaGUgcGF5bWVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVtcHRlZC4sUGF5b3V0RXJyb3IACATMVGhlcmUgd2FzIHNvbWUgaXNzdWUgd2l0aCB0aGUgbWVjaGFuaXNtIG9mIHBheW1lbnQuME5vdEF0dGVtcHRlZAAJBKRUaGUgcGF5b3V0IHdhcyBub3QgeWV0IGF0dGVtcHRlZC9jbGFpbWVkLjBJbmNvbmNsdXNpdmUACgTEVGhlIHBheW1lbnQgaGFzIG5laXRoZXIgZmFpbGVkIG5vciBzdWNjZWVkZWQgeWV0LgR4RXJyb3IgZm9yIHRoZSB0cmVhc3VyeSBwYWxsZXQuVQ4AAAQIBO0DAFkODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRhWb3RpbmcUHEJhbGFuY2UBNQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwABCBxDYXN0aW5nBABdDgHIQ2FzdGluZzxCYWxhbmNlLCBCbG9ja051bWJlciwgUG9sbEluZGV4LCBNYXhWb3Rlcz4AAAAoRGVsZWdhdGluZwQAdQ4BrERlbGVnYXRpbmc8QmFsYW5jZSwgQWNjb3VudElkLCBCbG9ja051bWJlcj4AAQAAXQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlHENhc3RpbmcQHEJhbGFuY2UBNQEsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwAADAEUdm90ZXNhDgHcQm91bmRlZFZlYzwoUG9sbEluZGV4LCBBY2NvdW50Vm90ZTxCYWxhbmNlPiksIE1heFZvdGVzPgABLGRlbGVnYXRpb25zbQ4BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3JxDgF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAAYQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFlDgRTAAAEAGkOARhWZWM8VD4AAGUOAAAECDgVBQBpDgAAAmUOAG0ODGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMsRGVsZWdhdGlvbnMEHEJhbGFuY2UBNQEACAEUdm90ZXM1AQEcQmFsYW5jZQABHGNhcGl0YWw1AQEcQmFsYW5jZQAAcQ4MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlJFByaW9yTG9jawgsQmxvY2tOdW1iZXIBOBxCYWxhbmNlATUBAAgAOAEsQmxvY2tOdW1iZXIAADUBARxCYWxhbmNlAAB1DgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUoRGVsZWdhdGluZwwcQmFsYW5jZQE1ASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ABQBHGJhbGFuY2U1AQEcQmFsYW5jZQABGHRhcmdldAQBJEFjY291bnRJZAABKGNvbnZpY3Rpb24dBQEoQ29udmljdGlvbgABLGRlbGVnYXRpb25zbQ4BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3JxDgF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAAeQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF9DgRTAAAEAIEOARhWZWM8VD4AAH0OAAAECO0DNQEAgQ4AAAJ9DgCFDgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFcnJvcggEVAAESQABMChOb3RPbmdvaW5nAAAEUFBvbGwgaXMgbm90IG9uZ29pbmcuIE5vdFZvdGVyAAEErFRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgdm90ZSBvbiB0aGUgcG9sbC4wTm9QZXJtaXNzaW9uAAIEyFRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24uPE5vUGVybWlzc2lvbllldAADBFkBVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbiByaWdodCBub3cgYnV0IHdpbGwgZG8gaW4gdGhlIGZ1dHVyZS5EQWxyZWFkeURlbGVnYXRpbmcABASIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nLjRBbHJlYWR5Vm90aW5nAAUIVQFUaGUgYWNjb3VudCBjdXJyZW50bHkgaGFzIHZvdGVzIGF0dGFjaGVkIHRvIGl0IGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIHVudGlsoHRoZXNlIGFyZSByZW1vdmVkIHRocm91Z2ggYHJlbW92ZV92b3RlYC5ESW5zdWZmaWNpZW50RnVuZHMABgT8VG9vIGhpZ2ggYSBiYWxhbmNlIHdhcyBwcm92aWRlZCB0aGF0IHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQuNE5vdERlbGVnYXRpbmcABwSgVGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBkZWxlZ2F0aW5nLiBOb25zZW5zZQAIBJREZWxlZ2F0aW9uIHRvIG9uZXNlbGYgbWFrZXMgbm8gc2Vuc2UuPE1heFZvdGVzUmVhY2hlZAAJBIBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyByZWFjaGVkLixDbGFzc05lZWRlZAAKBDkBVGhlIGNsYXNzIG11c3QgYmUgc3VwcGxpZWQgc2luY2UgaXQgaXMgbm90IGVhc2lseSBkZXRlcm1pbmFibGUgZnJvbSB0aGUgc3RhdGUuIEJhZENsYXNzAAsEhFRoZSBjbGFzcyBJRCBzdXBwbGllZCBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAHtAzRSdW50aW1lT3JpZ2luAfEDGE1vbWVudAE4EENhbGwBKQUcQmFsYW5jZQE1ARRUYWxseQGlCSRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MBzAEYHE9uZ29pbmcEAI0OAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAJUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAJUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQ4BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AACVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAJUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AACVDgGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAJUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAACNDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlc0BSZWZlcmVuZHVtU3RhdHVzIBxUcmFja0lkAe0DNFJ1bnRpbWVPcmlnaW4B8QMYTW9tZW50ATgQQ2FsbAEpBRxCYWxhbmNlATUBFFRhbGx5AaUJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHMACwBFHRyYWNr7QMBHFRyYWNrSWQAARhvcmlnaW7xAwE0UnVudGltZU9yaWdpbgABIHByb3Bvc2FsKQUBEENhbGwAASRlbmFjdG1lbnQxBQFQRGlzcGF0Y2hUaW1lPE1vbWVudD4AASRzdWJtaXR0ZWQ4ARhNb21lbnQAAUhzdWJtaXNzaW9uX2RlcG9zaXSRDgFsRGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+AAFAZGVjaXNpb25fZGVwb3NpdJUOAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABIGRlY2lkaW5nmQ4BeE9wdGlvbjxEZWNpZGluZ1N0YXR1czxNb21lbnQ+PgABFHRhbGx5pQkBFFRhbGx5AAEgaW5fcXVldWV1AQEQYm9vbAABFGFsYXJtoQ4BhE9wdGlvbjwoTW9tZW50LCBTY2hlZHVsZUFkZHJlc3MpPgAAkQ4MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMcRGVwb3NpdAgkQWNjb3VudElkAQQcQmFsYW5jZQE1AQAIAQx3aG8EASRBY2NvdW50SWQAARhhbW91bnQ1AQEcQmFsYW5jZQAAlQ4EGE9wdGlvbgQEVAGRDgEIEE5vbmUAAAAQU29tZQQAkQ4AAAEAAJkOBBhPcHRpb24EBFQBnQ4BCBBOb25lAAAAEFNvbWUEAJ0OAAABAACdDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhEZWNpZGluZ1N0YXR1cwQsQmxvY2tOdW1iZXIBOAAIARRzaW5jZTgBLEJsb2NrTnVtYmVyAAEoY29uZmlybWluZ+ABTE9wdGlvbjxCbG9ja051bWJlcj4AAKEOBBhPcHRpb24EBFQBpQ4BCBBOb25lAAAAEFNvbWUEAKUOAAABAAClDgAABAg4zACpDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAa0OBFMAAAQAsQ4BGFZlYzxUPgAArQ4AAAQIODUBALEOAAACrQ4AtQ4AAAK5DgC5DgAABAjtA70OAL0ODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzMFRyYWNrRGV0YWlscwwcQmFsYW5jZQE1ARhNb21lbnQBOBBOYW1lAVkKACQBEG5hbWVZCgEQTmFtZQABMG1heF9kZWNpZGluZzgBDHUzMgABQGRlY2lzaW9uX2RlcG9zaXQ1AQEcQmFsYW5jZQABOHByZXBhcmVfcGVyaW9kOAEYTW9tZW50AAE8ZGVjaXNpb25fcGVyaW9kOAEYTW9tZW50AAE4Y29uZmlybV9wZXJpb2Q4ARhNb21lbnQAAVBtaW5fZW5hY3RtZW50X3BlcmlvZDgBGE1vbWVudAABMG1pbl9hcHByb3ZhbMEOARRDdXJ2ZQABLG1pbl9zdXBwb3J0wQ4BFEN1cnZlAADBDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxRDdXJ2ZQABDEBMaW5lYXJEZWNyZWFzaW5nDAEYbGVuZ3RoWQUBHFBlcmJpbGwAARRmbG9vclkFARxQZXJiaWxsAAEQY2VpbFkFARxQZXJiaWxsAAAARFN0ZXBwZWREZWNyZWFzaW5nEAEUYmVnaW5ZBQEcUGVyYmlsbAABDGVuZFkFARxQZXJiaWxsAAEQc3RlcFkFARxQZXJiaWxsAAEYcGVyaW9kWQUBHFBlcmJpbGwAAQAoUmVjaXByb2NhbAwBGGZhY3RvcsUOASBGaXhlZEk2NAABIHhfb2Zmc2V0xQ4BIEZpeGVkSTY0AAEgeV9vZmZzZXTFDgEgRml4ZWRJNjQAAgAAxQ4MNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQgRml4ZWRJNjQAAAQAyQ4BDGk2NAAAyQ4AAAUMAM0ODEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFcnJvcggEVAAESQABOChOb3RPbmdvaW5nAAAEaFJlZmVyZW5kdW0gaXMgbm90IG9uZ29pbmcuKEhhc0RlcG9zaXQAAQS4UmVmZXJlbmR1bSdzIGRlY2lzaW9uIGRlcG9zaXQgaXMgYWxyZWFkeSBwYWlkLiBCYWRUcmFjawACBJxUaGUgdHJhY2sgaWRlbnRpZmllciBnaXZlbiB3YXMgaW52YWxpZC4QRnVsbAADBDEBVGhlcmUgYXJlIGFscmVhZHkgYSBmdWxsIGNvbXBsZW1lbnQgb2YgcmVmZXJlbmRhIGluIHByb2dyZXNzIGZvciB0aGlzIHRyYWNrLihRdWV1ZUVtcHR5AAQEgFRoZSBxdWV1ZSBvZiB0aGUgdHJhY2sgaXMgZW1wdHkuNEJhZFJlZmVyZW5kdW0ABQTkVGhlIHJlZmVyZW5kdW0gaW5kZXggcHJvdmlkZWQgaXMgaW52YWxpZCBpbiB0aGlzIGNvbnRleHQuLE5vdGhpbmdUb0RvAAYErFRoZXJlIHdhcyBub3RoaW5nIHRvIGRvIGluIHRoZSBhZHZhbmNlbWVudC4cTm9UcmFjawAHBKBObyB0cmFjayBleGlzdHMgZm9yIHRoZSBwcm9wb3NhbCBvcmlnaW4uKFVuZmluaXNoZWQACAQBAUFueSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCB1bnRpbCBhZnRlciB0aGUgZGVjaXNpb24gaXMgb3Zlci4wTm9QZXJtaXNzaW9uAAkEqFRoZSBkZXBvc2l0IHJlZnVuZGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLiROb0RlcG9zaXQACgTMVGhlIGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHNpbmNlIG5vbmUgd2FzIG1hZGUuJEJhZFN0YXR1cwALBNBUaGUgcmVmZXJlbmR1bSBzdGF0dXMgaXMgaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb24uQFByZWltYWdlTm90RXhpc3QADARwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LoRQcmVpbWFnZVN0b3JlZFdpdGhEaWZmZXJlbnRMZW5ndGgADQQVAVRoZSBwcmVpbWFnZSBpcyBzdG9yZWQgd2l0aCBhIGRpZmZlcmVudCBsZW5ndGggdGhhbiB0aGUgb25lIHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RDgxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXJyb3IEBFQAARRMVW5hdmFpbGFibGVQcmVJbWFnZQAABMhUaGUgcHJlaW1hZ2Ugb2YgdGhlIGNhbGwgaGFzaCBjb3VsZCBub3QgYmUgbG9hZGVkLjxVbmRlY29kYWJsZUNhbGwAAQR4VGhlIGNhbGwgY291bGQgbm90IGJlIGRlY29kZWQuYEludmFsaWRDYWxsV2VpZ2h0V2l0bmVzcwACBOxUaGUgd2VpZ2h0IG9mIHRoZSBkZWNvZGVkIGNhbGwgd2FzIGhpZ2hlciB0aGFuIHRoZSB3aXRuZXNzLlBDYWxsSXNOb3RXaGl0ZWxpc3RlZAADBHRUaGUgY2FsbCB3YXMgbm90IHdoaXRlbGlzdGVkLlhDYWxsQWxyZWFkeVdoaXRlbGlzdGVkAAQEoFRoZSBjYWxsIHdhcyBhbHJlYWR5IHdoaXRlbGlzdGVkOyBOby1PcC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1Q4IPHBhbGxldF9ib3VudGllcxhCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBNQEsQmxvY2tOdW1iZXIBOAAYASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlNQEBHEJhbGFuY2UAAQxmZWU1AQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdDUBARxCYWxhbmNlAAEQYm9uZDUBARxCYWxhbmNlAAEYc3RhdHVz2Q4BkEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAA2Q4IPHBhbGxldF9ib3VudGllczBCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBHCBQcm9wb3NlZAAAACBBcHByb3ZlZAABABhGdW5kZWQAAgA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAADABhBY3RpdmUIARxjdXJhdG9yBAEkQWNjb3VudElkAAEodXBkYXRlX2R1ZTgBLEJsb2NrTnVtYmVyAAQANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgAFAExBcHByb3ZlZFdpdGhDdXJhdG9yBAEcY3VyYXRvcgQBJEFjY291bnRJZAAGAADdDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOEODDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAEwcEluc3VmZmljaWVudFByb3Bvc2Vyc0JhbGFuY2UAAAR4UHJvcG9zZXIncyBiYWxhbmNlIGlzIHRvbyBsb3cuMEludmFsaWRJbmRleAABBJBObyBwcm9wb3NhbCBvciBib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAIEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLkBVbmV4cGVjdGVkU3RhdHVzAAMEgFRoZSBib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAQEXFJlcXVpcmUgYm91bnR5IGN1cmF0b3IuMEludmFsaWRWYWx1ZQAFBFRJbnZhbGlkIGJvdW50eSB2YWx1ZS4oSW52YWxpZEZlZQAGBExJbnZhbGlkIGJvdW50eSBmZWUuNFBlbmRpbmdQYXlvdXQABwhsQSBib3VudHkgcGF5b3V0IGlzIHBlbmRpbmcu+FRvIGNhbmNlbCB0aGUgYm91bnR5LCB5b3UgbXVzdCB1bmFzc2lnbiBhbmQgc2xhc2ggdGhlIGN1cmF0b3IuJFByZW1hdHVyZQAIBEUBVGhlIGJvdW50aWVzIGNhbm5vdCBiZSBjbGFpbWVkL2Nsb3NlZCBiZWNhdXNlIGl0J3Mgc3RpbGwgaW4gdGhlIGNvdW50ZG93biBwZXJpb2QuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AAkEBQFUaGUgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLjRUb29NYW55UXVldWVkAAoEmFRvbyBtYW55IGFwcHJvdmFscyBhcmUgYWxyZWFkeSBxdWV1ZWQuLE5vdFByb3Bvc2VyAAsEnFVzZXIgaXMgbm90IHRoZSBwcm9wb3NlciBvZiB0aGUgYm91bnR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7lDghUcGFsbGV0X2NoaWxkX2JvdW50aWVzLENoaWxkQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgAFAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWU1AQEcQmFsYW5jZQABDGZlZTUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0NQEBHEJhbGFuY2UAARhzdGF0dXPpDgGkQ2hpbGRCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AAOkOCFRwYWxsZXRfY2hpbGRfYm91bnRpZXNEQ2hpbGRCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBEBRBZGRlZAAAADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAgA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAMAAO0ODFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEVycm9yBARUAAEMVFBhcmVudEJvdW50eU5vdEFjdGl2ZQAABKRUaGUgcGFyZW50IGJvdW50eSBpcyBub3QgaW4gYWN0aXZlIHN0YXRlLmRJbnN1ZmZpY2llbnRCb3VudHlCYWxhbmNlAAEE5FRoZSBib3VudHkgYmFsYW5jZSBpcyBub3QgZW5vdWdoIHRvIGFkZCBuZXcgY2hpbGQtYm91bnR5LlBUb29NYW55Q2hpbGRCb3VudGllcwACBA0BTnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIGV4Y2VlZHMgbGltaXQgYE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xDgxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu9Q4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhCb3VudHkYJEFjY291bnRJZAEEHEJhbGFuY2UBNQEkQXNzZXRLaW5kAQkFEEhhc2gBPCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQENBQAQAShhc3NldF9raW5kCQUBJEFzc2V0S2luZAABFHZhbHVlNQEBHEJhbGFuY2UAASBtZXRhZGF0YTwBEEhhc2gAARhzdGF0dXP5DgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAPkOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzDCRBY2NvdW50SWQBBCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQENBQEYQEZ1bmRpbmdBdHRlbXB0ZWQIARxjdXJhdG9yBAEkQWNjb3VudElkAAE4cGF5bWVudF9zdGF0dXP9DgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4AAAAYRnVuZGVkBAEcY3VyYXRvcgQBJEFjY291bnRJZAABAERDdXJhdG9yVW5hc3NpZ25lZAACABhBY3RpdmUEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAPFJlZnVuZEF0dGVtcHRlZAgBHGN1cmF0b3KpAQFET3B0aW9uPEFjY291bnRJZD4AAThwYXltZW50X3N0YXR1c/0OAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAEADxQYXlvdXRBdHRlbXB0ZWQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkNBQEsQmVuZWZpY2lhcnkAAThwYXltZW50X3N0YXR1c/0OAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAFAAD9DghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzMFBheW1lbnRTdGF0ZQQISWQBKAEQHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAkU3VjY2VlZGVkAAMAAAEPCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMsQ2hpbGRCb3VudHkUJEFjY291bnRJZAEEHEJhbGFuY2UBNQEQSGFzaAE8JFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AQ0FABABNHBhcmVudF9ib3VudHk4ASxCb3VudHlJbmRleAABFHZhbHVlNQEBHEJhbGFuY2UAASBtZXRhZGF0YTwBEEhhc2gAARhzdGF0dXP5DgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAAUPAAAECDjgAAkPFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEADUBAShGOjpCYWxhbmNlAAANDwxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABSDBJbnZhbGlkSW5kZXgAAAR8Tm8gY2hpbGQtL2JvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAQSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuMEludmFsaWRWYWx1ZQACBHBJbnZhbGlkIGNoaWxkLS9ib3VudHkgdmFsdWUuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UAAwhdAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0IGZvcoRhc3NlcnRpbmcgdGhlIG9yaWdpbiBwZXJtaXNzaW9ucy5AVW5leHBlY3RlZFN0YXR1cwAEBJxUaGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABQR4UmVxdWlyZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuWEluc3VmZmljaWVudFBlcm1pc3Npb24ABghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZURyZXF1ZXN0ZWQgYW1vdW50LjBGdW5kaW5nRXJyb3IABwS8VGhlcmUgd2FzIGlzc3VlIHdpdGggZnVuZGluZyB0aGUgY2hpbGQtL2JvdW50eS4sUmVmdW5kRXJyb3IACATEVGhlcmUgd2FzIGlzc3VlIHdpdGggcmVmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixQYXlvdXRFcnJvcgAJAExGdW5kaW5nSW5jb25jbHVzaXZlAAoEsENoaWxkLS9ib3VudHkgZnVuZGluZyBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFJlZnVuZEluY29uY2x1c2l2ZQALBKxDaGlsZC0vYm91bnR5IHJlZnVuZCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFBheW91dEluY29uY2x1c2l2ZQAMBKxDaGlsZC0vYm91bnR5IHBheW91dCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuVEZhaWxlZFRvQ29udmVydFNvdXJjZQANCFUBVGhlIGNoaWxkLS9ib3VudHkgb3IgZnVuZGluZyBzb3VyY2UgYWNjb3VudCBjb3VsZCBub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBpbmRleGVzIGFuZCxhc3NldCBraW5kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAOBCEBVGhlIHBhcmVudCBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuUFRvb01hbnlDaGlsZEJvdW50aWVzAA8EDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuXEluc3VmZmljaWVudEJvdW50eVZhbHVlABAE+FRoZSBwYXJlbnQgYm91bnR5IHZhbHVlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuQFByZWltYWdlTm90RXhpc3QAEQRwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4RDwwocGFsbGV0X2RhcBhwYWxsZXQURXJyb3IEBFQAAQhAVW5rbm93bkJ1ZGdldEtleQAABB0BQSBrZXkgaW4gdGhlIGJ1ZGdldCBhbGxvY2F0aW9uIGRvZXMgbm90IG1hdGNoIGFueSByZWdpc3RlcmVkIHJlY2lwaWVudC44QnVkZ2V0Tm90RXhhY3QAAQTkQnVkZ2V0IGFsbG9jYXRpb24gcGVyY2VudGFnZXMgZG8gbm90IHN1bSB0byBleGFjdGx5IDEwMCUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhUPAAACGQ8AGQ8AAAQM3QMEWQUAHQ8IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFBvb2xNZW1iZXIEBFQAABABHHBvb2xfaWQ4ARhQb29sSWQAARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAFwbGFzdF9yZWNvcmRlZF9yZXdhcmRfY291bnRlckkFAUBUOjpSZXdhcmRDb3VudGVyAAE4dW5ib25kaW5nX2VyYXMhDwHgQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBCYWxhbmNlT2Y8VD4sIFQ6Ok1heFVuYm9uZGluZz4AACEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwE4BFYBNQEEUwAABAAlDwE4QlRyZWVNYXA8SywgVj4AACUPBCBCVHJlZU1hcAgESwE4BFYBNQEABACxDgAAACkPCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sczxCb25kZWRQb29sSW5uZXIEBFQAABQBKGNvbW1pc3Npb24tDwE0Q29tbWlzc2lvbjxUPgABOG1lbWJlcl9jb3VudGVyOAEMdTMyAAEYcG9pbnRzNQEBMEJhbGFuY2VPZjxUPgABFHJvbGVzNQ8BXFBvb2xSb2xlczxUOjpBY2NvdW50SWQ+AAEUc3RhdGWJBQEkUG9vbFN0YXRlAAAtDwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoQ29tbWlzc2lvbgQEVAAAFAEcY3VycmVudKEFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAEMbWF44QkBPE9wdGlvbjxQZXJiaWxsPgABLGNoYW5nZV9yYXRlMQ8BvE9wdGlvbjxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4+AAE0dGhyb3R0bGVfZnJvbeABZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AAUBjbGFpbV9wZXJtaXNzaW9urQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AAAxDwQYT3B0aW9uBARUAakFAQgQTm9uZQAAABBTb21lBACpBQAAAQAANQ8IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xSb2xlcwQkQWNjb3VudElkAQQAEAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEQcm9vdKkBAURPcHRpb248QWNjb3VudElkPgABJG5vbWluYXRvcqkBAURPcHRpb248QWNjb3VudElkPgABHGJvdW5jZXKpAQFET3B0aW9uPEFjY291bnRJZD4AADkPCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhSZXdhcmRQb29sBARUAAAUAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVySQUBQFQ6OlJld2FyZENvdW50ZXIAAWxsYXN0X3JlY29yZGVkX3RvdGFsX3BheW91dHM1AQEwQmFsYW5jZU9mPFQ+AAFUdG90YWxfcmV3YXJkc19jbGFpbWVkNQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fcGVuZGluZzUBATBCYWxhbmNlT2Y8VD4AAWB0b3RhbF9jb21taXNzaW9uX2NsYWltZWQ1AQEwQmFsYW5jZU9mPFQ+AAA9DwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgU3ViUG9vbHMEBFQAAAgBGG5vX2VyYUEPATRVbmJvbmRQb29sPFQ+AAEgd2l0aF9lcmFFDwEBAUJvdW5kZWRCVHJlZU1hcDxFcmFJbmRleCwgVW5ib25kUG9vbDxUPiwgVG90YWxVbmJvbmRpbmdQb29sczxUPj4AAEEPCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhVbmJvbmRQb29sBARUAAAIARhwb2ludHM1AQEwQmFsYW5jZU9mPFQ+AAEcYmFsYW5jZTUBATBCYWxhbmNlT2Y8VD4AAEUPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwE4BFYBQQ8EUwAABABJDwE4QlRyZWVNYXA8SywgVj4AAEkPBCBCVHJlZU1hcAgESwE4BFYBQQ8ABABNDwAAAE0PAAACUQ8AUQ8AAAQIOEEPAFUPDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXJyb3IEBFQAAZgwUG9vbE5vdEZvdW5kAAAEiEEgKGJvbmRlZCkgcG9vbCBpZCBkb2VzIG5vdCBleGlzdC5IUG9vbE1lbWJlck5vdEZvdW5kAAEEbEFuIGFjY291bnQgaXMgbm90IGEgbWVtYmVyLkhSZXdhcmRQb29sTm90Rm91bmQAAgQhAUEgcmV3YXJkIHBvb2wgZG9lcyBub3QgZXhpc3QuIEluIGFsbCBjYXNlcyB0aGlzIGlzIGEgc3lzdGVtIGxvZ2ljIGVycm9yLkBTdWJQb29sc05vdEZvdW5kAAMEaEEgc3ViIHBvb2wgZG9lcyBub3QgZXhpc3QuZEFjY291bnRCZWxvbmdzVG9PdGhlclBvb2wABAhNAUFuIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nIGluIGFub3RoZXIgcG9vbC4gQW4gYWNjb3VudCBtYXkgb25seSBiZWxvbmcgdG8gb25lPHBvb2wgYXQgYSB0aW1lLjhGdWxseVVuYm9uZGluZwAFCD0BVGhlIG1lbWJlciBpcyBmdWxseSB1bmJvbmRlZCAoYW5kIHRodXMgY2Fubm90IGFjY2VzcyB0aGUgYm9uZGVkIGFuZCByZXdhcmQgcG9vbKhhbnltb3JlIHRvLCBmb3IgZXhhbXBsZSwgY29sbGVjdCByZXdhcmRzKS5ETWF4VW5ib25kaW5nTGltaXQABgQJAVRoZSBtZW1iZXIgY2Fubm90IHVuYm9uZCBmdXJ0aGVyIGNodW5rcyBkdWUgdG8gcmVhY2hpbmcgdGhlIGxpbWl0LkRDYW5ub3RXaXRoZHJhd0FueQAHBE0BTm9uZSBvZiB0aGUgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biB5ZXQgYmVjYXVzZSB0aGUgYm9uZGluZyBkdXJhdGlvbiBoYXMgbm90IHBhc3NlZC5ETWluaW11bUJvbmROb3RNZXQACBQpAVRoZSBhbW91bnQgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBib25kIHRvIGVpdGhlciBqb2luIG9yIGNyZWF0ZSBhIHBvb2wuAFUBVGhlIGRlcG9zaXRvciBjYW4gbmV2ZXIgdW5ib25kIHRvIGEgdmFsdWUgbGVzcyB0aGFuIGBQYWxsZXQ6OmRlcG9zaXRvcl9taW5fYm9uZGAuIFRoZV0BY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuIE1lbWJlcnMgY2FuIG5ldmVyIHVuYm9uZCB0byBhaHZhbHVlIGJlbG93IGBNaW5Kb2luQm9uZGAuME92ZXJmbG93UmlzawAJBCEBVGhlIHRyYW5zYWN0aW9uIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBkdWUgdG8gb3ZlcmZsb3cgcmlzayBmb3IgdGhlIHBvb2wuNE5vdERlc3Ryb3lpbmcACghdAUEgcG9vbCBtdXN0IGJlIGluIFtgUG9vbFN0YXRlOjpEZXN0cm95aW5nYF0gaW4gb3JkZXIgZm9yIHRoZSBkZXBvc2l0b3IgdG8gdW5ib25kIG9yIGZvcrhvdGhlciBtZW1iZXJzIHRvIGJlIHBlcm1pc3Npb25sZXNzbHkgdW5ib25kZWQuME5vdE5vbWluYXRvcgALBPRUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuVE5vdEtpY2tlck9yRGVzdHJveWluZwAMBD0BRWl0aGVyIGEpIHRoZSBjYWxsZXIgY2Fubm90IG1ha2UgYSB2YWxpZCBraWNrIG9yIGIpIHRoZSBwb29sIGlzIG5vdCBkZXN0cm95aW5nLhxOb3RPcGVuAA0EcFRoZSBwb29sIGlzIG5vdCBvcGVuIHRvIGpvaW4gTWF4UG9vbHMADgSEVGhlIHN5c3RlbSBpcyBtYXhlZCBvdXQgb24gcG9vbHMuOE1heFBvb2xNZW1iZXJzAA8EnFRvbyBtYW55IG1lbWJlcnMgaW4gdGhlIHBvb2wgb3Igc3lzdGVtLkRDYW5Ob3RDaGFuZ2VTdGF0ZQAQBIhUaGUgcG9vbHMgc3RhdGUgY2Fubm90IGJlIGNoYW5nZWQuVERvZXNOb3RIYXZlUGVybWlzc2lvbgARBLhUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgYWRlcXVhdGUgcGVybWlzc2lvbnMuVE1ldGFkYXRhRXhjZWVkc01heExlbgASBKxNZXRhZGF0YSBleGNlZWRzIFtgQ29uZmlnOjpNYXhNZXRhZGF0YUxlbmBdJERlZmVuc2l2ZQQAWQ8BOERlZmVuc2l2ZUVycm9yABMIMQFTb21lIGVycm9yIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gVGhpcyBzaG91bGQgYmUgcmVwb3J0ZWQgdG8gdGhlMG1haW50YWluZXJzLpxQYXJ0aWFsVW5ib25kTm90QWxsb3dlZFBlcm1pc3Npb25sZXNzbHkAFAS8UGFydGlhbCB1bmJvbmRpbmcgbm93IGFsbG93ZWQgcGVybWlzc2lvbmxlc3NseS5cTWF4Q29tbWlzc2lvblJlc3RyaWN0ZWQAFQQdAVRoZSBwb29sJ3MgbWF4IGNvbW1pc3Npb24gY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUuYENvbW1pc3Npb25FeGNlZWRzTWF4aW11bQAWBOxUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIHRoZSBtYXggYWxsb3dlZCBjb21taXNzaW9uLnhDb21taXNzaW9uRXhjZWVkc0dsb2JhbE1heGltdW0AFwToVGhlIHN1cHBsaWVkIGNvbW1pc3Npb24gZXhjZWVkcyBnbG9iYWwgbWF4aW11bSBjb21taXNzaW9uLmRDb21taXNzaW9uQ2hhbmdlVGhyb3R0bGVkABgECQFOb3QgZW5vdWdoIGJsb2NrcyBoYXZlIHN1cnBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjb21taXNzaW9uIHVwZGF0ZS54Q29tbWlzc2lvbkNoYW5nZVJhdGVOb3RBbGxvd2VkABkEAQFUaGUgc3VibWl0dGVkIGNoYW5nZXMgdG8gY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBhcmUgbm90IGFsbG93ZWQuTE5vUGVuZGluZ0NvbW1pc3Npb24AGgSgVGhlcmUgaXMgbm8gcGVuZGluZyBjb21taXNzaW9uIHRvIGNsYWltLlhOb0NvbW1pc3Npb25DdXJyZW50U2V0ABsEjE5vIGNvbW1pc3Npb24gY3VycmVudCBoYXMgYmVlbiBzZXQuLFBvb2xJZEluVXNlABwEZFBvb2wgaWQgY3VycmVudGx5IGluIHVzZS40SW52YWxpZFBvb2xJZAAdBJxQb29sIGlkIHByb3ZpZGVkIGlzIG5vdCBjb3JyZWN0L3VzYWJsZS5MQm9uZEV4dHJhUmVzdHJpY3RlZAAeBPxCb25kaW5nIGV4dHJhIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGV4YWN0IHBlbmRpbmcgcmV3YXJkIGFtb3VudC48Tm90aGluZ1RvQWRqdXN0AB8EsE5vIGltYmFsYW5jZSBpbiB0aGUgRUQgZGVwb3NpdCBmb3IgdGhlIHBvb2wuOE5vdGhpbmdUb1NsYXNoACAEzE5vIHNsYXNoIHBlbmRpbmcgdGhhdCBjYW4gYmUgYXBwbGllZCB0byB0aGUgbWVtYmVyLixTbGFzaFRvb0xvdwAhBKhUaGUgc2xhc2ggYW1vdW50IGlzIHRvbyBsb3cgdG8gYmUgYXBwbGllZC48QWxyZWFkeU1pZ3JhdGVkACIEFQFUaGUgcG9vbCBvciBtZW1iZXIgZGVsZWdhdGlvbiBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0ZSBzdGFrZS4sTm90TWlncmF0ZWQAIwQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBub3QgbWlncmF0ZWQgeWV0IHRvIGRlbGVnYXRlIHN0YWtlLjBOb3RTdXBwb3J0ZWQAJATwVGhpcyBjYWxsIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYWxsZXQuKFJlc3RyaWN0ZWQAJQhRAUFjY291bnQgaXMgcmVzdHJpY3RlZCBmcm9tIHBhcnRpY2lwYXRpb24gaW4gcG9vbHMuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc3xzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkPDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQ4RGVmZW5zaXZlRXJyb3IAARxoTm90RW5vdWdoU3BhY2VJblVuYm9uZFBvb2wAAAAwUG9vbE5vdEZvdW5kAAEASFJld2FyZFBvb2xOb3RGb3VuZAACAEBTdWJQb29sc05vdEZvdW5kAAMAcEJvbmRlZFN0YXNoS2lsbGVkUHJlbWF0dXJlbHkABABURGVsZWdhdGlvblVuc3VwcG9ydGVkAAUAPFNsYXNoTm90QXBwbGllZAAGAABdDwxAcGFsbGV0X2JhZ3NfbGlzdBBsaXN0EE5vZGUIBFQABEkAABQBCGlkBAEwVDo6QWNjb3VudElkAAEQcHJldqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABEG5leHSpAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRiYWdfdXBwZXIoASBUOjpTY29yZQABFHNjb3JlKAEgVDo6U2NvcmUAAGEPDEBwYWxsZXRfYmFnc19saXN0EGxpc3QMQmFnCARUAARJAAAIARBoZWFkqQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQdGFpbKkBAVBPcHRpb248VDo6QWNjb3VudElkPgAAZQ8AAAIoAGkPDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFcnJvcggEVAAESQABCBBMaXN0BABtDwEkTGlzdEVycm9yAAAEtEEgZXJyb3IgaW4gdGhlIGxpc3QgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLhhMb2NrZWQAAQTYQ291bGQgbm90IHVwZGF0ZSBhIG5vZGUsIGJlY2F1c2UgdGhlIHBhbGxldCBpcyBsb2NrZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lm0PDEBwYWxsZXRfYmFnc19saXN0EGxpc3QkTGlzdEVycm9yAAEUJER1cGxpY2F0ZQAAAChOb3RIZWF2aWVyAAEAME5vdEluU2FtZUJhZwACADBOb2RlTm90Rm91bmQAAwAYTG9ja2VkAAQAAHEPAAAECPz8AHUPDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMoRGVsZWdhdGlvbgQEVAAACAEUYWdlbnQEATBUOjpBY2NvdW50SWQAARhhbW91bnQ1AQEwQmFsYW5jZU9mPFQ+AAB5DwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzLEFnZW50TGVkZ2VyBARUAAAQARRwYXllZQQBMFQ6OkFjY291bnRJZAABPHRvdGFsX2RlbGVnYXRlZHEBATBCYWxhbmNlT2Y8VD4AAVR1bmNsYWltZWRfd2l0aGRyYXdhbHNxAQEwQmFsYW5jZU9mPFQ+AAE0cGVuZGluZ19zbGFzaHEBATBCYWxhbmNlT2Y8VD4AAH0PDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0FEVycm9yBARUAAEwKE5vdEFsbG93ZWQAAASoVGhlIGFjY291bnQgY2Fubm90IHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uOEFscmVhZHlTdGFraW5nAAEEuEFuIGV4aXN0aW5nIHN0YWtlciBjYW5ub3QgcGVyZm9ybSB0aGlzIGFjdGlvbi5gSW52YWxpZFJld2FyZERlc3RpbmF0aW9uAAIE1FJld2FyZCBEZXN0aW5hdGlvbiBjYW5ub3QgYmUgc2FtZSBhcyBgQWdlbnRgIGFjY291bnQuREludmFsaWREZWxlZ2F0aW9uAAMUiERlbGVnYXRpb24gY29uZGl0aW9ucyBhcmUgbm90IG1ldC4ATFBvc3NpYmxlIGlzc3VlcyBhcmVsMSkgQ2Fubm90IGRlbGVnYXRlIHRvIHNlbGYspDIpIENhbm5vdCBkZWxlZ2F0ZSB0byBtdWx0aXBsZSBkZWxlZ2F0ZXMuOE5vdEVub3VnaEZ1bmRzAAQEAQFUaGUgYWNjb3VudCBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uIE5vdEFnZW50AAUEgE5vdCBhbiBleGlzdGluZyBgQWdlbnRgIGFjY291bnQuME5vdERlbGVnYXRvcgAGBGBOb3QgYSBEZWxlZ2F0b3IgYWNjb3VudC4gQmFkU3RhdGUABwSIU29tZSBjb3JydXB0aW9uIGluIGludGVybmFsIHN0YXRlLjhVbmFwcGxpZWRTbGFzaAAIBNxVbmFwcGxpZWQgcGVuZGluZyBzbGFzaCByZXN0cmljdHMgb3BlcmF0aW9uIG9uIGBBZ2VudGAuOE5vdGhpbmdUb1NsYXNoAAkErGBBZ2VudGAgaGFzIG5vIHBlbmRpbmcgc2xhc2ggdG8gYmUgYXBwbGllZC44V2l0aGRyYXdGYWlsZWQACgSwRmFpbGVkIHRvIHdpdGhkcmF3IGFtb3VudCBmcm9tIENvcmUgU3Rha2luZy4wTm90U3VwcG9ydGVkAAsEnE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGFsbGV0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6BDwAABAiFDzgAhQ8IeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudEhWYWxpZGF0b3JTZXRSZXBvcnQEJEFjY291bnRJZAEEABABRG5ld192YWxpZGF0b3Jfc2V0eQEBOFZlYzxBY2NvdW50SWQ+AAEIaWQ4AQx1MzIAASxwcnVuZV91cF90b+ABUE9wdGlvbjxTZXNzaW9uSW5kZXg+AAEgbGVmdG92ZXJ1AQEQYm9vbAAAiQ8MeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQURXJyb3IEBFQAARQ0WGNtU2VuZEZhaWxlZAAABLhGYWlsZWQgdG8gc2VuZCBYQ00gbWVzc2FnZSB0byB0aGUgUmVsYXkgQ2hhaW4uME5vdFZhbGlkYXRvcgABFMRUaGUgb3JpZ2luIGFjY291bnQgaXMgbm90IGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuAFkBT25seSBhY2NvdW50cyB0aGF0IGhhdmUgY2FsbGVkIGB2YWxpZGF0ZSgpYCBjYW4gc2V0IG9yIHB1cmdlIHNlc3Npb24ga2V5cy4gV2hlbiBjYWxsZWRJAXZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBvcmlnaW4gaXMgdGhlIGRlbGVnYXRpbmcgYWNjb3VudCAoc3Rhc2gpLCB3aGljaCBtdXN0IGJlIGFUcmVnaXN0ZXJlZCB2YWxpZGF0b3IuLEludmFsaWRLZXlzAAIERQFUaGUgc2Vzc2lvbiBrZXlzIGNvdWxkIG5vdCBiZSBkZWNvZGVkIGFzIHRoZSBleHBlY3RlZCBSZWxheUNoYWluU2Vzc2lvbktleXMgdHlwZS4wSW52YWxpZFByb29mAAMEtEludmFsaWQgb3duZXJzaGlwIHByb29mIGZvciB0aGUgc2Vzc2lvbiBrZXlzLjxGZWVzRXhjZWVkZWRNYXgABAS0RGVsaXZlcnkgZmVlcyBleGNlZWRlZCB0aGUgc3BlY2lmaWVkIG1heGltdW0uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lo0PDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBkQ8EUwAABACZDwEYVmVjPFQ+AACRDwAABAwEKJUPAJUPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAHkBARhWZWM8VD4AAJkPAAACkQ8AnQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAeQEBGFZlYzxUPgAAoQ8MkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQURXJyb3IEBFQAAQwgRmFsbGJhY2sAAASEVHJpZ2dlcmluZyB0aGUgYEZhbGxiYWNrYCBmYWlsZWQuPFVuZXhwZWN0ZWRQaGFzZQABBEBVbmV4cGVjdGVkIHBoYXNlIFNuYXBzaG90AAIEZFNuYXBzaG90IHdhcyB1bmF2YWlsYWJsZS4EDQFFcnJvciBvZiB0aGUgcGFsbGV0IHRoYXQgY2FuIGJlIHJldHVybmVkIGluIHJlc3BvbnNlIHRvIGRpc3BhdGNoZXMupQ8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczRWYWxpZFNvbHV0aW9uAAEIBFgAAAAEWQABAACpDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAa0PBFMAAAQAtQ8BGFZlYzxUPgAArQ8AAAQIBLEPALEPEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHM8UGFydGlhbEJhY2tpbmdzAAAIARR0b3RhbDUBATxFeHRlbmRlZEJhbGFuY2UAARxiYWNrZXJzOAEMdTMyAAC1DwAAAq0PALkPEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYU3RhdHVzAAEIHE9uZ29pbmcEADgBJFBhZ2VJbmRleAAAABxOb3RoaW5nAAEAAL0PDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBwQ8EUwAABADFDwEYVmVjPFQ+AADBDwAABAgEDQYAxQ8AAALBDwDJDwAABAw4BDgAzQ8MkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWRIU3VibWlzc2lvbk1ldGFkYXRhBARUAAAUARxkZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABDGZlZTUBATBCYWxhbmNlT2Y8VD4AARhyZXdhcmQ1AQEwQmFsYW5jZU9mPFQ+AAE0Y2xhaW1lZF9zY29yZQ0GATRFbGVjdGlvblNjb3JlAAEUcGFnZXPRDwFoQm91bmRlZFZlYzxib29sLCBUOjpQYWdlcz4AANEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBdQEEUwAABADVDwEYVmVjPFQ+AADVDwAAAnUBANkPEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFcnJvcgQEVAABJDhQaGFzZU5vdFNpZ25lZAAABGBUaGUgcGhhc2UgaXMgbm90IHNpZ25lZC4kRHVwbGljYXRlAAEEeFRoZSBzdWJtaXNzaW9uIGlzIGEgZHVwbGljYXRlLiRRdWV1ZUZ1bGwAAgRIVGhlIHF1ZXVlIGlzIGZ1bGwuMEJhZFBhZ2VJbmRleAADBIBUaGUgcGFnZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzLjROb3RSZWdpc3RlcmVkAAQEeFRoZSBhY2NvdW50IGlzIG5vdCByZWdpc3RlcmVkLjBOb1N1Ym1pc3Npb24ABQRQTm8gc3VibWlzc2lvbiBmb3VuZC4wUm91bmROb3RPdmVyAAYEWFJvdW5kIGlzIG5vdCB5ZXQgb3Zlci44QmFkV2l0bmVzc0RhdGEABwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5QVG9vTWFueUludnVsbmVyYWJsZXMACASwVG9vIG1hbnkgaW52dWxuZXJhYmxlIGFjY291bnRzIGFyZSBwcm92aWRlZCwEgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu3Q8MUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcjRTdGFraW5nTGVkZ2VyBARUAAAQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABFHRvdGFscQEBMEJhbGFuY2VPZjxUPgABGGFjdGl2ZXEBATBCYWxhbmNlT2Y8VD4AASR1bmxvY2tpbmcxBwHwQm91bmRlZFZlYzxVbmxvY2tDaHVuazxCYWxhbmNlT2Y8VD4+LCBUOjpNYXhVbmxvY2tpbmdDaHVua3M+AADhDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmMsTm9taW5hdGlvbnMEBFQAAAwBHHRhcmdldHOVDwG0Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIE1heE5vbWluYXRpb25zT2Y8VD4+AAEwc3VibWl0dGVkX2luOAEgRXJhSW5kZXgAAShzdXBwcmVzc2VkdQEBEGJvb2wAAOUPCFBwYWxsZXRfc3Rha2luZ19hc3luYzRBY3RpdmVFcmFJbmZvAAAIARRpbmRleDgBIEVyYUluZGV4AAEUc3RhcnT8ASxPcHRpb248dTY0PgAA6Q8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHMBFMAAAQATQoBGFZlYzxUPgAA7Q8IKHNwX3N0YWtpbmdUUGFnZWRFeHBvc3VyZU1ldGFkYXRhBBxCYWxhbmNlATUBABABFHRvdGFscQEBHEJhbGFuY2UAAQxvd25xAQEcQmFsYW5jZQABPG5vbWluYXRvcl9jb3VudDgBDHUzMgABKHBhZ2VfY291bnQ4ARBQYWdlAADxDxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldExCb3VuZGVkRXhwb3N1cmVQYWdlBARUAAAEAPUPAaBFeHBvc3VyZVBhZ2U8VDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4+AAD1Dwgoc3Bfc3Rha2luZzBFeHBvc3VyZVBhZ2UIJEFjY291bnRJZAEEHEJhbGFuY2UBNQEACAEocGFnZV90b3RhbHEBARxCYWxhbmNlAAEYb3RoZXJz+Q8BrFZlYzxJbmRpdmlkdWFsRXhwb3N1cmU8QWNjb3VudElkLCBCYWxhbmNlPj4AAPkPAAAC/Q8A/Q8IKHNwX3N0YWtpbmdISW5kaXZpZHVhbEV4cG9zdXJlCCRBY2NvdW50SWQBBBxCYWxhbmNlATUBAAgBDHdobwQBJEFjY291bnRJZAABFHZhbHVlcQEBHEJhbGFuY2UAAAEQDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AAAUQCFBwYWxsZXRfc3Rha2luZ19hc3luYzxFcmFSZXdhcmRQb2ludHMEBFQAAAgBFHRvdGFsOAEsUmV3YXJkUG9pbnQAAShpbmRpdmlkdWFsCRAB+EJvdW5kZWRCVHJlZU1hcDxUOjpBY2NvdW50SWQsIFJld2FyZFBvaW50LCBUOjpNYXhWYWxpZGF0b3JTZXQ+AAAJEAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWATgEUwAABAANEAE4QlRyZWVNYXA8SywgVj4AAA0QBCBCVHJlZU1hcAgESwEEBFYBOAAEAMEFAAAAERAMUHBhbGxldF9zdGFraW5nX2FzeW5jIHNsYXNoaW5nNE9mZmVuY2VSZWNvcmQEJEFjY291bnRJZAEEABQBIHJlcG9ydGVyqQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEwcmVwb3J0ZWRfZXJhOAEgRXJhSW5kZXgAATRleHBvc3VyZV9wYWdlOAEMdTMyAAE4c2xhc2hfZnJhY3Rpb25ZBQEcUGVyYmlsbAABUHByaW9yX3NsYXNoX2ZyYWN0aW9uWQUBHFBlcmJpbGwAABUQDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBOARTAAAEAGEEARhWZWM8VD4AABkQAAAEDDgEERAAHRAAAAQIOD0HACEQCFBwYWxsZXRfc3Rha2luZ19hc3luYzhVbmFwcGxpZWRTbGFzaAQEVAAAFAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEMb3duNQEBMEJhbGFuY2VPZjxUPgABGG90aGVycyUQAREBV2Vha0JvdW5kZWRWZWM8KFQ6OkFjY291bnRJZCwgQmFsYW5jZU9mPFQ+KSwgVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZT4AASByZXBvcnRlcqkBAVBPcHRpb248VDo6QWNjb3VudElkPgABGHBheW91dDUBATBCYWxhbmNlT2Y8VD4AACUQDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBAQYEUwAABAAFBgEYVmVjPFQ+AAApEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAREHBFMAAAQADQcBGFZlYzxUPgAALRAAAAQIWQU1AQAxEAhQcGFsbGV0X3N0YWtpbmdfYXN5bmM4U25hcHNob3RTdGF0dXMEJEFjY291bnRJZAEEAQwcT25nb2luZwQABAEkQWNjb3VudElkAAAAIENvbnN1bWVkAAEAHFdhaXRpbmcAAgAANRAMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABACtDQEsQlRyZWVTZXQ8VD4AADkQEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0LFBydW5pbmdTdGVwAAEkQEVyYXNTdGFrZXJzUGFnZWQAAABMRXJhc1N0YWtlcnNPdmVydmlldwABAEhFcmFzVmFsaWRhdG9yUHJlZnMAAgA4Q2xhaW1lZFJld2FyZHMAAwBMRXJhc1ZhbGlkYXRvclJld2FyZAAEAEBFcmFzUmV3YXJkUG9pbnRzAAUATFNpbmdsZUVudHJ5Q2xlYW51cHMABgBMVmFsaWRhdG9yU2xhc2hJbkVyYQAHAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AAgAAD0QEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0FEVycm9yBARUAAGYNE5vdENvbnRyb2xsZXIAAARkTm90IGEgY29udHJvbGxlciBhY2NvdW50LiBOb3RTdGFzaAABBFBOb3QgYSBzdGFzaCBhY2NvdW50LjRBbHJlYWR5Qm9uZGVkAAIEYFN0YXNoIGlzIGFscmVhZHkgYm9uZGVkLjRBbHJlYWR5UGFpcmVkAAMEdENvbnRyb2xsZXIgaXMgYWxyZWFkeSBwYWlyZWQuMEVtcHR5VGFyZ2V0cwAEBGBUYXJnZXRzIGNhbm5vdCBiZSBlbXB0eS44RHVwbGljYXRlSW5kZXgABQRARHVwbGljYXRlIGluZGV4LkhJbnZhbGlkU2xhc2hSZWNvcmQABgRcU2xhc2ggcmVjb3JkIG5vdCBmb3VuZC5ASW5zdWZmaWNpZW50Qm9uZAAHDDUBQ2Fubm90IGJvbmQsIG5vbWluYXRlIG9yIHZhbGlkYXRlIHdpdGggdmFsdWUgbGVzcyB0aGFuIHRoZSBtaW5pbXVtIGRlZmluZWQgYnk9AWdvdmVybmFuY2UgKHNlZSBgTWluVmFsaWRhdG9yQm9uZGAgYW5kIGBNaW5Ob21pbmF0b3JCb25kYCkuIElmIHVuYm9uZGluZyBpcyB0aGUVAWludGVudGlvbiwgYGNoaWxsYCBmaXJzdCB0byByZW1vdmUgb25lJ3Mgcm9sZSBhcyB2YWxpZGF0b3Ivbm9taW5hdG9yLjBOb01vcmVDaHVua3MACASQQ2FuIG5vdCBzY2hlZHVsZSBtb3JlIHVubG9jayBjaHVua3MuNE5vVW5sb2NrQ2h1bmsACQSgQ2FuIG5vdCByZWJvbmQgd2l0aG91dCB1bmxvY2tpbmcgY2h1bmtzLjBGdW5kZWRUYXJnZXQACgTIQXR0ZW1wdGluZyB0byB0YXJnZXQgYSBzdGFzaCB0aGF0IHN0aWxsIGhhcyBmdW5kcy5ISW52YWxpZEVyYVRvUmV3YXJkAAsEWEludmFsaWQgZXJhIHRvIHJld2FyZC5oSW52YWxpZE51bWJlck9mTm9taW5hdGlvbnMADAR4SW52YWxpZCBudW1iZXIgb2Ygbm9taW5hdGlvbnMuOEFscmVhZHlDbGFpbWVkAA0ECQFSZXdhcmRzIGZvciB0aGlzIGVyYSBoYXZlIGFscmVhZHkgYmVlbiBjbGFpbWVkIGZvciB0aGlzIHZhbGlkYXRvci4sSW52YWxpZFBhZ2UADgSETm8gbm9taW5hdG9ycyBleGlzdCBvbiB0aGlzIHBhZ2UuVEluY29ycmVjdEhpc3RvcnlEZXB0aAAPBMBJbmNvcnJlY3QgcHJldmlvdXMgaGlzdG9yeSBkZXB0aCBpbnB1dCBwcm92aWRlZC4gQmFkU3RhdGUAEAQ5AUludGVybmFsIHN0YXRlIGhhcyBiZWNvbWUgc29tZWhvdyBjb3JydXB0ZWQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IGNvbnRpbnVlLjhUb29NYW55VGFyZ2V0cwARBJRUb28gbWFueSBub21pbmF0aW9uIHRhcmdldHMgc3VwcGxpZWQuJEJhZFRhcmdldAASBD0BQSBub21pbmF0aW9uIHRhcmdldCB3YXMgc3VwcGxpZWQgdGhhdCB3YXMgYmxvY2tlZCBvciBvdGhlcndpc2Ugbm90IGEgdmFsaWRhdG9yLkBDYW5ub3RDaGlsbE90aGVyABMEVQFUaGUgdXNlciBoYXMgZW5vdWdoIGJvbmQgYW5kIHRodXMgY2Fubm90IGJlIGNoaWxsZWQgZm9yY2VmdWxseSBieSBhbiBleHRlcm5hbCBwZXJzb24uRFRvb01hbnlOb21pbmF0b3JzABQITQFUaGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBpbiB0aGUgc3lzdGVtLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIGFkanVzdCB0aGUgc3Rha2luZ7RzZXR0aW5ncyB0byBrZWVwIHRoaW5ncyBzYWZlIGZvciB0aGUgcnVudGltZS5EVG9vTWFueVZhbGlkYXRvcnMAFQhVAVRoZXJlIGFyZSB0b28gbWFueSB2YWxpZGF0b3IgY2FuZGlkYXRlcyBpbiB0aGUgc3lzdGVtLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIGFkanVzdCB0aGXUc3Rha2luZyBzZXR0aW5ncyB0byBrZWVwIHRoaW5ncyBzYWZlIGZvciB0aGUgcnVudGltZS5AQ29tbWlzc2lvblRvb0xvdwAWBOBDb21taXNzaW9uIGlzIHRvbyBsb3cuIE11c3QgYmUgYXQgbGVhc3QgYE1pbkNvbW1pc3Npb25gLixCb3VuZE5vdE1ldAAXBFhTb21lIGJvdW5kIGlzIG5vdCBtZXQuUENvbnRyb2xsZXJEZXByZWNhdGVkABgEAQFVc2VkIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgZGVwcmVjYXRlZCBjb250cm9sbGVyIGFjY291bnQgbG9naWMuTENhbm5vdFJlc3RvcmVMZWRnZXIAGQRYQ2Fubm90IHJlc2V0IGEgbGVkZ2VyLmxSZXdhcmREZXN0aW5hdGlvblJlc3RyaWN0ZWQAGgSsUHJvdmlkZWQgcmV3YXJkIGRlc3RpbmF0aW9uIGlzIG5vdCBhbGxvd2VkLjhOb3RFbm91Z2hGdW5kcwAbBJxOb3QgZW5vdWdoIGZ1bmRzIGF2YWlsYWJsZSB0byB3aXRoZHJhdy5cVmlydHVhbFN0YWtlck5vdEFsbG93ZWQAHASoT3BlcmF0aW9uIG5vdCBhbGxvd2VkIGZvciB2aXJ0dWFsIHN0YWtlcnMuPENhbm5vdFJlYXBTdGFzaAAdBPRTdGFzaCBjb3VsZCBub3QgYmUgcmVhcGVkIGFzIG90aGVyIHBhbGxldCBtaWdodCBkZXBlbmQgb24gaXQuPEFscmVhZHlNaWdyYXRlZAAeBAkBVGhlIHN0YWtlIG9mIHRoaXMgYWNjb3VudCBpcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGBGdW5naWJsZWAgaG9sZHMuNEVyYU5vdFN0YXJ0ZWQAHwRQRXJhIG5vdCB5ZXQgc3RhcnRlZC4oUmVzdHJpY3RlZAAgCFkBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBzdGFraW5nLiBUaGlzIG1heSBoYXBwZW4gaWYgdGhlIGFjY291bnQgaXPEc3Rha2luZyBpbiBhbm90aGVyIHdheSBhbHJlYWR5LCBzdWNoIGFzIHZpYSBwb29sLnRVbmFwcGxpZWRTbGFzaGVzSW5QcmV2aW91c0VyYQAhCC0BVW5hcHBsaWVkIHNsYXNoZXMgaW4gdGhlIHJlY2VudGx5IGNvbmNsdWRlZCBlcmEgaXMgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24umFNlZSBgQ2FsbDo6YXBwbHlfc2xhc2hgIHRvIGFwcGx5IHRoZW0uOEVyYU5vdFBydW5hYmxlACIEkFRoZSBlcmEgaXMgbm90IGVsaWdpYmxlIGZvciBwcnVuaW5nLjhDYW5jZWxsZWRTbGFzaAAjBMxUaGUgc2xhc2ggaGFzIGJlZW4gY2FuY2VsbGVkIGFuZCBjYW5ub3QgYmUgYXBwbGllZC5EQ29tbWlzc2lvblRvb0hpZ2gAJAT4Q29tbWlzc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIGBNYXhDb21taXNzaW9uYC5UT3B0aW11bUdyZWF0ZXJUaGFuQ2FwACUEzE9wdGltdW0gc2VsZi1zdGFrZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGhhcmQgY2FwLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5BEAhQcGFsbGV0X3N0YWtpbmdfYXN5bmMkUmV3YXJkUG90AAEIHEdlbmVyYWwEAEUQAShSZXdhcmRLaW5kAAAADEVyYQgAOAEgRXJhSW5kZXgAAEUQAShSZXdhcmRLaW5kAAEAAEUQCFBwYWxsZXRfc3Rha2luZ19hc3luYyhSZXdhcmRLaW5kAAEINFN0YWtlclJld2FyZHMAAABIVmFsaWRhdG9yU2VsZlN0YWtlAAEAAEkQDFBwYWxsZXRfc3Rha2luZ19hc3luYxhyZXdhcmRMRXJhUmV3YXJkQWxsb2NhdGlvbgQcQmFsYW5jZQE1AQAIAThzdGFrZXJfcmV3YXJkczUBARxCYWxhbmNlAAFMdmFsaWRhdG9yX2luY2VudGl2ZTUBARxCYWxhbmNlAABNEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAFEQDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcxR0eXBlc0BDb2xsZWN0aW9uTWludGVyBCRBY2NvdW50SWQBBAAIARRvd25lcgQBJEFjY291bnRJZAABJHNlbGVjdGlvbm0HATRJdGVtU2VsZWN0aW9uAABVEAAABAgVBDgAWRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAYQQBGFZlYzxUPgAAXRAMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABNERVbmtub3duQ3JlZGl0VHJlZQAADEEBTm8gdHJlZSBpcyBoZWxkIGZvciB0aGUgYmxvY2ssIHNvIG5vdGhpbmcgY2FuIGJlIHByb3ZlbiBhZ2FpbnN0IGl0LiBUaGUgdHJlZSBtYXlRAXN0aWxsIGJlIG9uIGl0cyB3YXksIG9yIGhhdmUgYmVlbiBsb3N0LCBpbiB3aGljaCBjYXNlIGEgYHJlcGxheV9jcmVkaXRfdHJlZXNgIG9uIHRoZWBnYW1lIHBhbGxldCBkZWxpdmVycyBpdC5QTGVhZkluZGV4T3V0T2ZCb3VuZHMAAQS8VGhlIGxlYWYgaW5kZXggaXMgbm90IG9uZSBvZiB0aGUgdHJlZSdzIGxlYXZlcy44QWxyZWFkeUNsYWltZWQAAgTsVGhlIGNyZWRpdCBoYXMgYWxyZWFkeSBiZWVuIGNsYWltZWQgYW5kIG1pbnRzIG9uZSBORlQgb25seS4wSW52YWxpZFByb29mAAMIWQFUaGUgcHJvb2YgZG9lcyBub3QgcmVoYXNoIHRoZSBjcmVkaXQncyBsZWFmIHRvIHRoZSB0cmVlJ3Mgcm9vdCwgc28gdGhlIG9yaWdpbiBob2xkcyBub2hzdWNoIGNyZWRpdCBpbiB0aGF0IGJsb2NrLkRVbmtub3duQ29sbGVjdGlvbgAEBKhUaGUgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBTY2FyY2l0eS5ITm90Q29sbGVjdGlvbk93bmVyAAUEAQFPbmx5IHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIgbWF5IHJlZ2lzdGVyIG9yIHdpdGhkcmF3IGl0cyBtaW50ZXIuXENvbGxlY3Rpb25Ob3RSZWdpc3RlcmVkAAYISQFUaGUgY29sbGVjdGlvbidzIG93bmVyIGhhcyBub3QgcmVnaXN0ZXJlZCBpdCBmb3IgY2xhaW1zLCBzbyBubyBjbGFpbSBjYW4gbWludCBpbnRvDGl0LlhDb2xsZWN0aW9uT3duZXJDaGFuZ2VkAAcMPQFUaGUgY29sbGVjdGlvbiBoYXMgY2hhbmdlZCBvd25lcnMgc2luY2UgcmVnaXN0cmF0aW9uLCBzbyBpdHMgY3VycmVudCBvd25lciBtdXN0tHJlZ2lzdGVyIGl0IGFnYWluLiBPbmx5IGEgcnVudGltZSB0aGF0IGxlYXZlc0UBW2BpbmRpdl9wYWxsZXRfc2NhcmNpdHk6OkNvbmZpZzo6T25Db2xsZWN0aW9uT3duZXJDaGFuZ2VkYF0gdW53aXJlZCByZWFjaGVzIHRoaXMuHE5vSXRlbXMACAhFAVRoZSBjb2xsZWN0aW9uIGhhcyBubyBsaXZlIGl0ZW0gZGVmaW5pdGlvbnMgZm9yIFtgSXRlbVNlbGVjdGlvbjo6UmFuZG9tYF0gdG8gZHJhdw0BZnJvbSwgZWl0aGVyIGJlY2F1c2Ugbm9uZSB3ZXJlIGRlZmluZWQgb3IgYmVjYXVzZSBhbGwgd2VyZSBkZWxldGVkLlhNaW50ZXJDb250cmFjdFJldmVydGVkAAkEFQFUaGUgcmVnaXN0ZXJlZCBtaW50ZXIgY29udHJhY3QgcmV2ZXJ0ZWQgaW5zdGVhZCBvZiBzZWxlY3RpbmcgYW4gaXRlbS5sTWludGVyQ29udHJhY3RJbnZhbGlkUmV0dXJuAAoIPQFUaGUgcmVnaXN0ZXJlZCBtaW50ZXIgY29udHJhY3QgcmV0dXJuZWQgZGF0YSB0aGF0IGlzIG5vdCBvbmUgY2Fub25pY2FsIGB1aW50MzJgLGl0ZW0gaW5kZXguSE1pbnRlck5vdEFDb250cmFjdAALBA0BVGhlIGFkZHJlc3MgZ2l2ZW4gZm9yIGEgbWludGVyIHJlZ2lzdHJhdGlvbiBob2xkcyBubyBjb250cmFjdCBjb2RlLixVbmtub3duSXRlbQAMDE0BVGhlIHNlbGVjdGVkIGl0ZW0gaGFzIG5vIGRlZmluaXRpb24gaW4gdGhlIGNvbGxlY3Rpb24sIHNvIHRoZSBtaW50IHdvdWxkIHJlamVjdCBpdC5NAUFuIFtgSXRlbVNlbGVjdGlvbjo6UmFuZG9tYF0gZHJhdyByZWFjaGVzIHRoaXMgYnkgbGFuZGluZyBvbiBhIGRlbGV0ZWQgaW5kZXgsIHdoaWNoOQFzdGF5cyBpbnNpZGUgdGhlIGRyYXcgcmFuZ2UsIGFuZCBhIGNvbnRyYWN0IHNlbGVjdGlvbiBieSBuYW1pbmcgc3VjaCBhbiBpbmRleC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuYRAAAAQMOAg4AGUQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaRAEUwAABABtEAEYVmVjPFQ+AABpEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdI0HATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAABtEAAAAmkQAHEQDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzRFJpbmdQdXJnZVByb2dyZXNzAAAIAShnZW5lcmF0aW9uOAEoR2VuZXJhdGlvbgABEHBhZ2U4AQx1MzIAAHUQDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABgBKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxuZXh0X3NjYW5faW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXN5EAGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc4EQAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgABYGxhc3RfYmF0Y2hfcmVjZWl2ZWRfdGltZSgBDHU2NAAAeRAMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQAfRABOEJUcmVlTWFwPEssIFY+AAB9EAQgQlRyZWVNYXAIBEsBOARWATgABABNCgAAAIEQDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAhRABLEJUcmVlU2V0PFQ+AACFEAQgQlRyZWVTZXQEBFQBOAAEAGEEAAAAiRAMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAACNEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAIAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AACREAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbhkCASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AACVEAx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASw0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy48UmV2aXNpb25FeHBpcmVkAAkEOQFSZXF1ZXN0ZWQgcmV2aXNpb24gaGFzIGJlZW4gc3VwZXJzZWRlZCBmb3IgbG9uZ2VyIHRoYW4gdGhlIHJldGVudGlvbiBkdXJhdGlvbi5IVG9vTWFueUNvbGxlY3Rpb25zAAoEAQFUaGUgbm90aWZpZXIgaW5pdGlhbGl6ZWQgbW9yZSB0aGFuIGBNYXhDb2xsZWN0aW9uc2AgY29sbGVjdGlvbnMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpkQAAAECAidEACdEBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAAoRAMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYZ0QATxDb250ZXh0dWFsQWxpYXMAAKUQDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAEsREludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzRmVlVW5zZXQABQToVGhlIFBHQVMgZmVlIGZvciBhbGlhcyByZWdpc3RyYXRpb25zIGhhcyBub3QgYmVlbiBzZXQgeWV0LjxSZXByb3ZlTWlzbWF0Y2gABggdAVRoZSBwcm9vZiBwYXNzZWQgdG8gYHJlcHJvdmVfYWxpYXNfYWNjb3VudGAgcHJvZHVjZWQgYW4gYWxpYXMgLyBjb250ZXh02HRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLkBSaW5nUm9vdE5vdEZvdW5kAAcEBQFObyByaW5nIHJvb3Qgd2FzIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIGNvbGxlY3Rpb24gLyByaW5nIGluZGV4LjRTdGFsZVJldmlzaW9uAAgEAQFUaGUgcmVxdWVzdGVkIHJpbmcgcmV2aXNpb24gaXMgbm8gbG9uZ2VyIGFjY2VwdGVkIGZvciB0aGlzIHJpbmcuIEJhZFByb29mAAkEjFJpbmctVlJGIHByb29mIHZlcmlmaWNhdGlvbiBmYWlsZWQuTEludmFsaWRSaW5nQ2FwYWNpdHkACgTwVGhlIGNvbmZpZ3VyZWQgcmluZyBjYXBhY2l0eSBpcyBpbnZhbGlkIGZvciB0aGlzIGNvbGxlY3Rpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkQAAAECBUECACtEAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEVycm9yBARUAAEQOEFscmVhZHlDbGFpbWVkAAAE+FRoaXMgYWxpYXMgaGFzIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIFBHQVMgaW4gdGhpcyBwZXJpb2QuOFBnYXNNaW50RmFpbGVkAAEEwFRoZSBQR0FTIGFzc2V0IGRvZXMgbm90IGV4aXN0IG9yIG1pbnRpbmcgZmFpbGVkLjxOb1JlY29yZHNGb3JEYXkAAgQxAWBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHNgIHdhcyBjYWxsZWQgd2l0aCBhIGRheSB0aGF0IGhhcyBubyBzdG9yZWQgcmVjb3Jkcy5IRmlyc3RBbGlhc01pc21hdGNoAAMIVQFUaGUgYGZpcnN0X2FsaWFzYCBwYXNzZWQgdG8gYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2AgZG9lcyBub3QgbWF0Y2ggdGhlIGZpcnN0IGFsaWFziGN1cnJlbnRseSBzdG9yZWQgdW5kZXIgdGhlIHByZWZpeC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusRAMNHBhbGxldF9yZXZpdmUIdm0gQ29kZUluZm8EBFQAABgBFG93bmVyBAE4QWNjb3VudElkT2Y8VD4AARxkZXBvc2l0cQEBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50tAEMdTY0AAEgY29kZV9sZW44AQx1MzIAASRjb2RlX3R5cGW1EAEwQnl0ZWNvZGVUeXBlAAFEYmVoYXZpb3VyX3ZlcnNpb244AQx1MzIAALUQDDRwYWxsZXRfcmV2aXZlCHZtMEJ5dGVjb2RlVHlwZQABCAxQdm0AAAAMRXZtAAEAALkQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudEluZm8EBFQAAAgBMGFjY291bnRfdHlwZb0QAThBY2NvdW50VHlwZTxUPgABEGR1c3Q4AQx1MzIAAL0QDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudFR5cGUEBFQAAQggQ29udHJhY3QEAMEQATxDb250cmFjdEluZm88VD4AAAAMRU9BAAEAAMEQDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UwQ29udHJhY3RJbmZvBARUAAAgARx0cmllX2lkZQQBGFRyaWVJZAABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAATRzdG9yYWdlX2J5dGVzOAEMdTMyAAE0c3RvcmFnZV9pdGVtczgBDHUzMgABUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfaXRlbV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0NQEBMEJhbGFuY2VPZjxUPgABSGltbXV0YWJsZV9kYXRhX2xlbjgBDHUzMgAAxRAAAAQIBAQAyRAMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADNEAw0cGFsbGV0X3Jldml2ZRxzdG9yYWdlRERlbGV0aW9uUXVldWVJdGVtBARUAAAIARx0cmllX2lkZQQBGFRyaWVJZAABKGFjY291bnRfaWQEAThBY2NvdW50SWRPZjxUPgAA0RAMNHBhbGxldF9yZXZpdmUcc3RvcmFnZVBEZWxldGlvblF1ZXVlTWFuYWdlcgQEVAAACAE4aW5zZXJ0X2NvdW50ZXI4AQx1MzIAAThkZWxldGVfY291bnRlcjgBDHUzMgAA1RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuFEJsb2NrAABsAUBiYXNlX2ZlZV9wZXJfZ2FztQcBEFUyNTYAATRibG9iX2dhc191c2VktQcBEFUyNTYAAShkaWZmaWN1bHR5tQcBEFUyNTYAATxleGNlc3NfYmxvYl9nYXO1BwEQVTI1NgABKGV4dHJhX2RhdGHZEAEUQnl0ZXMAASRnYXNfbGltaXS1BwEQVTI1NgABIGdhc191c2VktQcBEFUyNTYAARBoYXNoPAEQSDI1NgABKGxvZ3NfYmxvb23dEAEgQnl0ZXMyNTYAARRtaW5lcnEHARxBZGRyZXNzAAEgbWl4X2hhc2g8ARBIMjU2AAEUbm9uY2XlEAEYQnl0ZXM4AAEYbnVtYmVytQcBEFUyNTYAAWBwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3Q1BQEwT3B0aW9uPEgyNTY+AAEscGFyZW50X2hhc2g8ARBIMjU2AAE0cmVjZWlwdHNfcm9vdDwBEEgyNTYAATRyZXF1ZXN0c19oYXNoNQUBME9wdGlvbjxIMjU2PgABMHNoYV8zX3VuY2xlczwBEEgyNTYAARBzaXpltQcBEFUyNTYAAShzdGF0ZV9yb290PAEQSDI1NgABJHRpbWVzdGFtcLUHARBVMjU2AAFAdG90YWxfZGlmZmljdWx0eekQATBPcHRpb248VTI1Nj4AATB0cmFuc2FjdGlvbnPtEAFgSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAFEdHJhbnNhY3Rpb25zX3Jvb3Q8ARBIMjU2AAEYdW5jbGVzwAEkVmVjPEgyNTY+AAEsd2l0aGRyYXdhbHM5EQE8VmVjPFdpdGhkcmF3YWw+AAFAd2l0aGRyYXdhbHNfcm9vdDwBEEgyNTYAANkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRRCeXRlcwAABAAYARxWZWM8dTg+AADdEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUgQnl0ZXMyNTYAAAQA4RABJFt1ODsgMjU2XQAA4RAAAAMAAQAADADlEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUYQnl0ZXM4AAAEAHUCARxbdTg7IDhdAADpEAQYT3B0aW9uBARUAbUHAQgQTm9uZQAAABBTb21lBAC1BwAAAQAA7RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuYEhhc2hlc09yVHJhbnNhY3Rpb25JbmZvcwABCBhIYXNoZXMEAMABJFZlYzxIMjU2PgAAAEBUcmFuc2FjdGlvbkluZm9zBADxEAFQVmVjPFRyYW5zYWN0aW9uSW5mbz4AAQAA8RAAAAL1EAD1EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48VHJhbnNhY3Rpb25JbmZvAAAYAShibG9ja19oYXNoPAEQSDI1NgABMGJsb2NrX251bWJlcrUHARBVMjU2AAEQZnJvbXEHARxBZGRyZXNzAAEQaGFzaDwBEEgyNTYAAUR0cmFuc2FjdGlvbl9pbmRleLUHARBVMjU2AAFIdHJhbnNhY3Rpb25fc2lnbmVk+RABRFRyYW5zYWN0aW9uU2lnbmVkAAD5EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5EVHJhbnNhY3Rpb25TaWduZWQAARRUVHJhbnNhY3Rpb243NzAyU2lnbmVkBAD9EAFUVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAAVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAQAFREBVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAABAFRUcmFuc2FjdGlvbjE1NTlTaWduZWQEAB0RAVRUcmFuc2FjdGlvbjE1NTlTaWduZWQAAgBUVHJhbnNhY3Rpb24yOTMwU2lnbmVkBAApEQFUVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAMAXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkBAAxEQFcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQABAAA/RAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZAERAVxUcmFuc2FjdGlvbjc3MDJVbnNpZ25lZAABBHK1BwEQVTI1NgABBHO1BwEQVTI1NgABBHbpEAEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHm1BwEQVTI1NgAAAREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAAsASxhY2Nlc3NfbGlzdAURAShBY2Nlc3NMaXN0AAFIYXV0aG9yaXphdGlvbl9saXN0DREBbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABIGNoYWluX2lktQcBEFUyNTYAAQxnYXO1BwEQVTI1NgABFGlucHV02RABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0b3EHARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDc3MDIAARR2YWx1ZbUHARBVMjU2AAAFEQAAAgkRAAkRFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxBY2Nlc3NMaXN0RW50cnkAAAgBHGFkZHJlc3NxBwEcQWRkcmVzcwABMHN0b3JhZ2Vfa2V5c8ABJFZlYzxIMjU2PgAADREAAAIREQARERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5YQXV0aG9yaXphdGlvbkxpc3RFbnRyeQAAGAEgY2hhaW5faWS1BwEQVTI1NgABHGFkZHJlc3NxBwEcQWRkcmVzcwABFG5vbmNltQcBEFUyNTYAASB5X3Bhcml0ebUHARBVMjU2AAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAAVERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAAQAWR0cmFuc2FjdGlvbl80ODQ0X3Vuc2lnbmVkGREBXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEgeV9wYXJpdHm1BwEQVTI1NgAAGREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAAwASxhY2Nlc3NfbGlzdAURAShBY2Nlc3NMaXN0AAFUYmxvYl92ZXJzaW9uZWRfaGFzaGVzwAEkVmVjPEgyNTY+AAEgY2hhaW5faWS1BwEQVTI1NgABDGdhc7UHARBVMjU2AAEUaW5wdXTZEAEUQnl0ZXMAAVBtYXhfZmVlX3Blcl9ibG9iX2dhc7UHARBVMjU2AAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0b3EHARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDQ4NDQAARR2YWx1ZbUHARBVMjU2AAAdERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24xNTU5U2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8xNTU5X3Vuc2lnbmVkIREBXFRyYW5zYWN0aW9uMTU1OVVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEEdukQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0ebUHARBVMjU2AAAhERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAACwBLGFjY2Vzc19saXN0BREBKEFjY2Vzc0xpc3QAASBjaGFpbl9pZLUHARBVMjU2AAEMZ2FztQcBEFUyNTYAASRnYXNfcHJpY2W1BwEQVTI1NgABFGlucHV02RABFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FztQcBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXO1BwEQVTI1NgABFG5vbmNltQcBEFUyNTYAAQh0byURATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMASxUeXBlRWlwMTU1OQABFHZhbHVltQcBEFUyNTYAACURBBhPcHRpb24EBFQBcQcBCBBOb25lAAAAEFNvbWUEAHEHAAABAAApERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkLREBXFRyYW5zYWN0aW9uMjkzMFVuc2lnbmVkAAEEcrUHARBVMjU2AAEEc7UHARBVMjU2AAEEdukQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0ebUHARBVMjU2AAAtERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAACQBLGFjY2Vzc19saXN0BREBKEFjY2Vzc0xpc3QAASBjaGFpbl9pZLUHARBVMjU2AAEMZ2FztQcBEFUyNTYAASRnYXNfcHJpY2W1BwEQVTI1NgABFGlucHV02RABFEJ5dGVzAAEUbm9uY2W1BwEQVTI1NgABCHRvJREBPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAyOTMwAAEUdmFsdWW1BwEQVTI1NgAAMREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkAAAQAWx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWQ1EQFkVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAABBHK1BwEQVTI1NgABBHO1BwEQVTI1NgABBHa1BwEQVTI1NgAANREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuZFRyYW5zYWN0aW9uTGVnYWN5VW5zaWduZWQAACABIGNoYWluX2lk6RABME9wdGlvbjxVMjU2PgABDGdhc7UHARBVMjU2AAEkZ2FzX3ByaWNltQcBEFUyNTYAARRpbnB1dNkQARRCeXRlcwABFG5vbmNltQcBEFUyNTYAAQh0byURATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMAShUeXBlTGVnYWN5AAEUdmFsdWW1BwEQVTI1NgAAOREAAAI9EQA9ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4oV2l0aGRyYXdhbAAAEAEcYWRkcmVzc3EHARxBZGRyZXNzAAEYYW1vdW50tQcBEFUyNTYAARRpbmRleLUHARBVMjU2AAE8dmFsaWRhdG9yX2luZGV4tQcBEFUyNTYAAEERAAACRREARREQNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g4UmVjZWlwdEdhc0luZm8AAAgBIGdhc191c2VktQcBEFUyNTYAAUxlZmZlY3RpdmVfZ2FzX3ByaWNltQcBEFUyNTYAAEkRFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoNGJsb2NrX2J1aWxkZXJYRXRoZXJldW1CbG9ja0J1aWxkZXJJUgQEVAAAIAFgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVyTREBYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABVHJlY2VpcHRzX3Jvb3RfYnVpbGRlck0RAWBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAAUBiYXNlX2ZlZV9wZXJfZ2FztQcBEFUyNTYAATxibG9ja19nYXNfbGltaXS1BwEQVTI1NgABIGdhc191c2VktQcBEFUyNTYAAShsb2dzX2Jsb29t4RABWFt1ODsgQkxPT01fU0laRV9CWVRFU10AASR0eF9oYXNoZXPAASRWZWM8SDI1Nj4AASBnYXNfaW5mb0ERAUxWZWM8UmVjZWlwdEdhc0luZm8+AABNERQ0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDBoYXNoX2J1aWxkZXJgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAAoAQxrZXkYARxWZWM8dTg+AAEodmFsdWVfdHlwZQwBCHU4AAE0YnVpbGRlcl92YWx1ZRgBHFZlYzx1OD4AARRzdGFjazQBMFZlYzxWZWM8dTg+PgABLHN0YXRlX21hc2tzUREBIFZlYzx1MTY+AAEodHJlZV9tYXNrc1ERASBWZWM8dTE2PgABKGhhc2hfbWFza3NREQEgVmVjPHUxNj4AAUhzdG9yZWRfaW5fZGF0YWJhc2V1AQEQYm9vbAABHHJscF9idWYYARxWZWM8dTg+AAEUaW5kZXgoAQx1NjQAAFERAAAC7QMAVREEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAABZEQw0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZXUBARBib29sAAE8YnlwYXNzX2VpcF8zNjA3dQEBEGJvb2wAASBwdm1fbG9nc3UBARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ3UBARBib29sAABdEQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNIUmVnaXN0cmF0aW9uUmVjb3JkBARUAAAIAShjb2xsZWN0aW9uZREBKENvbGxlY3Rpb24AARxhY2NvdW50BAEwVDo6QWNjb3VudElkAABlEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMoQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoUGVvcGxlTGl0ZQABAABpEQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNEQWNjb3VudE5hbWVSZWNvcmQAAAgBEGxpdGVtEQFET3B0aW9uPE5hbWVFbnRyeT4AARBmdWxsbREBRE9wdGlvbjxOYW1lRW50cnk+AABtEQQYT3B0aW9uBARUAXERAQgQTm9uZQAAABBTb21lBABxEQAAAQAAcREMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzJE5hbWVFbnRyeQAACAEUbGFiZWzBBwEkQmFzZUxhYmVsAAEQY2hhdHURATxPcHRpb248Q2hhdEtleT4AAHURBBhPcHRpb24EBFQBxQcBCBBOb25lAAAAEFNvbWUEAMUHAAABAAB5EQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEVycm9yBARUAAEoREFscmVhZHlSZWdpc3RlcmVkAAAEoFRoZSBhbGlhcyBoYXMgYWxyZWFkeSByZWdpc3RlcmVkIGEgbmFtZS5IQ29udHJhY3RDYWxsRmFpbGVkAAEI/FRoZSBjb250cmFjdCBjYWxsIGZhaWxlZCAobm9uLXJldmVydDogb3V0LW9mLWdhcywgbG93LWxldmVsLCBvclB1bmRlY29kYWJsZSByZXZlcnQpLjhDb250cmFjdFJldmVydAQAfREBQERpc3BhdGNoZXJSZXZlcnQAAggRAUNvbnRyYWN0IHJldmVydGVkIHdpdGggYSB0eXBlZCBlcnJvciBmcm9tIGBSb290R2F0ZXdheURpc3BhdGNoZXJgIG9yoHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBpdCBmb3J3YXJkcyB0by4sSW52YWxpZE5hbWUAAwj0VGhlIG5hbWUgaXMgaW52YWxpZCAoZW1wdHkgb3IgdG9vIGxvbmcsIG9yIGRvZXMgbm90IG1hdGNoIHRoZYByZXF1aXJlZCBETlMvbGl0ZS1sYWJlbCBmb3JtYXQpLlhOb0F0dGVzdGF0aW9uQWxsb3dhbmNlAAQE0FRoZSBhdHRlc3RlciBoYXMgbm8gYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHJlbWFpbmluZy5sSW52YWxpZEF0dGVzdGF0aW9uU2lnbmF0dXJlAAUElFRoZSBjYW5kaWRhdGUncyBzaWduYXR1cmUgaXMgaW52YWxpZC5sUmVzZXJ2YXRpb25TaWduYXR1cmVFeHBpcmVkAAYEHQFUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGlzIG9sZGVyIHRoYW4gW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdLnhSZXNlcnZhdGlvblNpZ25hdHVyZUZyb21GdXR1cmUABwj8VGhlIHJlc2VydmF0aW9uIHNpZ25hdHVyZSBjbGFpbXMgdG8gaGF2ZSBiZWVuIGNyZWF0ZWQgbW9yZSB0aGFuzFtgQ29uZmlnOjpNYXhWYWxpZGl0eVNlY29uZHNgXSBhaGVhZCBvZiBjaGFpbiB0aW1lLkROb3RMaXRlTGFiZWxPd25lcgAICAkBVGhlIGBMaW5rOjpMaXRlVXNlcm5hbWVgIHRhcmdldCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlciAob3IgaGFzeG5vIG9uLWNoYWluIG93bmVyc2hpcCByZWNvcmQpLlxEaXNwYXRjaGVyQWRkcmVzc05vdFNldAAJBPhUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyBoYXMgbm90IGJlZW4gc2V0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59EQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNARGlzcGF0Y2hlclJldmVydAABIBxOb3RSb290AAAAKE5vdEdhdGV3YXkAAQBASW52YWxpZExpdGVMYWJlbAACAEBJbnZhbGlkQmFzZUxhYmVsAAMATE5vQWN0aXZlUmVzZXJ2YXRpb24ABAAkUXVldWVGdWxsAAUAPEFscmVhZHlSZXNlcnZlZAAGACROb3RIb2xkZXIABwAAgREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlATUBLEJsb2NrTnVtYmVyATgACAEQdXNlZDUBARxCYWxhbmNlAAEgYXRfYmxvY2s4ASxCbG9ja051bWJlcgAAhREMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEVycm9yBARUAAEIHE5vVXNhZ2UAAASAVGhlIG9yaWdpbiBoYXMgbm8gdXNhZ2UgdHJhY2tlZC4cTm90WmVybwABBFhUaGUgdXNhZ2UgaXMgbm90IHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LokRDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQujREISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AACRERAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAZEKAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3OVEQFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAJURAAACmREAmREIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAJ0RCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAKERCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAKURBBhPcHRpb24EBFQBoREBCBBOb25lAAAAEFNvbWUEAKERAAABAACpEQQYUmVzdWx0CARUAZEIBEUBrREBCAhPawQAkQgAAAAADEVycgQArREAAAEAAK0RDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBACxEQFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EALURAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAsREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAAtREMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAuREIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGG9EQGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAvREEIEJUcmVlTWFwCARLAXUCBFYBGAAEAMERAAAAwREAAALFEQDFEQAABAh1AhgAyREIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theXUBARBib29sAAEsZmF0YWxfZXJyb3J1AQEQYm9vbAABGGVycm9yc7kRATBJbmhlcmVudERhdGEAAM0RDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAA0REEGFJlc3VsdAgEVAHVEQRFAa0RAQgIT2sEANURAAAAAAxFcnIEAK0RAAABAADVEQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZXUBARBib29sAADZEQwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAN0RBBhPcHRpb24EBFQB4REBCBBOb25lAAAAEFNvbWUEAOERAAABAADhEQAAAuURAOURAAAECBgBDADpEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4eQIBIFt1ODsgMTZdAAEYc3VmZml4eQIBIFt1ODsgMTZdAADtEQQYUmVzdWx0CARUARgERQHxEQEICE9rBAAYAAAAAAxFcnIEAPERAAABAADxEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBADpEQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAA9REMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBNQEYV2VpZ2h0AREBAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc2UIATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWU1AQEcQmFsYW5jZQAA+REMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBNQEACAE0aW5jbHVzaW9uX2ZlZf0RAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcDUBARxCYWxhbmNlAAD9EQQYT3B0aW9uBARUAQESAQgQTm9uZQAAABBTb21lBAABEgAAAQAAARIMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQE1AQAMASBiYXNlX2ZlZTUBARxCYWxhbmNlAAEcbGVuX2ZlZTUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZTUBARxCYWxhbmNlAAAFEgQYUmVzdWx0CARUAQkSBEUBDRIBCAhPawQACRIAAAAADEVycgQADRIAAAEAAAkSAAACvQMADRIMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAAREgQYUmVzdWx0CARUAREBBEUBDRIBCAhPawQAEQEAAAAADEVycgQADRIAAAEAABUSBBhSZXN1bHQIBFQBNQEERQENEgEICE9rBAA1AQAAAAAMRXJyBAANEgAAAQAAGRIEGFJlc3VsdAgEVAGJAwRFAQ0SAQgIT2sEAIkDAAAAAAxFcnIEAA0SAAABAAAdEgQYUmVzdWx0CARUASESBEUBORIBCAhPawQAIRIAAAAADEVycgQAORIAAAEAACESDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AVkIABABQGV4ZWN1dGlvbl9yZXN1bHStCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50cyUSAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtKRIBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zLRIBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAAlEgAAAlkIACkSBBhPcHRpb24EBFQBTQIBCBBOb25lAAAAEFNvbWUEAE0CAAABAAAtEgAAAjESADESAAAECMUBNRIANRIAAAJNAgA5EgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAA9EgQYUmVzdWx0CARUAUESBEUBORIBCAhPawQAQRIAAAAADEVycgQAORIAAAEAAEESDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQBWQgADAFAZXhlY3V0aW9uX3Jlc3VsdC0JARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHMlEgEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zLRIBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABFEgQYUmVzdWx0CARUAQQERQFJEgEICE9rBAAEAAAAAAxFcnIEAEkSAAABAABJEgxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAE0SCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAGUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA2QIBJHY0OjpBc3NldAAEAAhWNQQAJQMBJHY1OjpBc3NldAAFAABREgQYUmVzdWx0CARUAXUBBEUBVRIBCAhPawQAdQEAAAAADEVycgQAVRIAAAEAAFUSDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAABZEgQYUmVzdWx0CARUAaUMBEUBXRIBCAhPawQApQwAAAAADEVycgQAXRIAAAEAAF0SDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAGESBBhSZXN1bHQIBFQBdQEERQFdEgEICE9rBAB1AQAAAAAMRXJyBABdEgAAAQAAZRIEGFJlc3VsdAgEVAGJAwRFAWkSAQgIT2sEAIkDAAAAAAxFcnIEAGkSAAABAABpEgw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAAG0SDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBcRIEUwAABAB1EgEYVmVjPFQ+AABxEgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5LHJ1bnRpbWVfYXBpNE1ldGFkYXRhUXVlcnkAAQwgSW5zdGFuY2UEACgBKEluc3RhbmNlSWQAAAAQSXRlbQgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEAKENvbGxlY3Rpb24EADgBMENvbGxlY3Rpb25JZAACAAB1EgAAAnESAHkSAAACfRIAfRIMVGluZGl2X3BhbGxldF9zY2FyY2l0eSxydW50aW1lX2FwaThNZXRhZGF0YUxheWVycwAAEAEgcmVzb2x2ZWSBEgFYT3B0aW9uPE1ldGFkYXRhVGFyZ2V0PgABKGNvbGxlY3Rpb24sAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABEGl0ZW0sAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIGluc3RhbmNlLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AAIESBBhPcHRpb24EBFQBhRIBCBBOb25lAAAAEFNvbWUEAIUSAAABAACFEgxUaW5kaXZfcGFsbGV0X3NjYXJjaXR5LHJ1bnRpbWVfYXBpOE1ldGFkYXRhVGFyZ2V0AAEMIEluc3RhbmNlDAEgaW5zdGFuY2UoAShJbnN0YW5jZUlkAAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ASRJdGVtSW5kZXgAAAAQSXRlbQgBKGNvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAARBpdGVtOAEkSXRlbUluZGV4AAEAKENvbGxlY3Rpb24EADgBMENvbGxlY3Rpb25JZAACAACJEgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0SBFMAAAQAkRIBGFZlYzxUPgAAjRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpMFByZXZpZXdRdWVyeQAACAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAACREgAAAo0SAJUSAAACmRIAmRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdPdXRjb21lAAEIFE1pbnRzCAEQaXRlbTgBJEl0ZW1JbmRleAABDHZpYZ0SATRTZWxlY3Rpb25LaW5kAAAAFEZhaWxzBAEYcmVhc29uoRIBOFByZXZpZXdGYWlsdXJlAAEAAJ0SDFxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltcyxydW50aW1lX2FwaTRTZWxlY3Rpb25LaW5kAAEIGFJhbmRvbQAAACBDb250cmFjdAQAcQcBEEgxNjAAAQAAoRIMXGluZGl2X3BhbGxldF9uZnRfY2xhaW1zLHJ1bnRpbWVfYXBpOFByZXZpZXdGYWlsdXJlAAEYXENvbGxlY3Rpb25Ob3RSZWdpc3RlcmVkAAAARFVua25vd25Db2xsZWN0aW9uAAEAWENvbGxlY3Rpb25Pd25lckNoYW5nZWQAAgAcTm9JdGVtcwADACxVbmtub3duSXRlbQQBEGl0ZW04ASRJdGVtSW5kZXgABABcQ29udHJhY3RTZWxlY3Rpb25GYWlsZWQEARRlcnJvcm0IATREaXNwYXRjaEVycm9yAAUAAKUSCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VzBQsBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGWpEgGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAACpEgQYT3B0aW9uBARUAa0SAQgQTm9uZQAAABBTb21lBACtEgAAAQAArRIMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAsRIEGFJlc3VsdAgEVAEQBEUBWQoBCAhPawQAEAAAAAAMRXJyBABZCgAAAQAAtRIEGE9wdGlvbgQEVAFZCgEIEE5vbmUAAAAQU29tZQQAWQoAAAEAALkSAAACWQoAvRIEGE9wdGlvbgQEVAH1DQEIEE5vbmUAAAAQU29tZQQA9Q0AAAEAAMESDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZcUSAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludPUNAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAMUSDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AADJEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAc0SHEJhbGFuY2UBNQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXTVEgFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l01RIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkNQEBHEJhbGFuY2UAARhyZXN1bHTZEgFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AADNEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3PREgEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAA0RIMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAA1RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQE1AQEIGFJlZnVuZAQANQEBHEJhbGFuY2UAAAAYQ2hhcmdlBAA1AQEcQmFsYW5jZQABAADZEgQYUmVzdWx0CARUAc0SBEUBbQgBCAhPawQAzRIAAAAADEVycgQAbQgAAAEAAN0SDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEADwBNHNwX2NvcmU6OkgyNTYAAQAA4RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgHlEhxCYWxhbmNlATUBABgBPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l01RIBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdNUSAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZDUBARxCYWxhbmNlAAEYcmVzdWx06RIBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAA5RIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHTNEgE8RXhlY1JldHVyblZhbHVlAAEQYWRkcnEHARBIMTYwAADpEgQYUmVzdWx0CARUAeUSBEUBbQgBCAhPawQA5RIAAAAADEVycgQAbQgAAAEAAO0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN08RIBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdA0RAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AARRibG9ic/USAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWTpEAEwT3B0aW9uPFUyNTY+AAEQZnJvbSURATxPcHRpb248QWRkcmVzcz4AAQxnYXPpEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNl6RABME9wdGlvbjxVMjU2PgABFGlucHV0+RIBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXPpEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2Fz6RABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc+kQATBPcHRpb248VTI1Nj4AARRub25jZekQATBPcHRpb248VTI1Nj4AAQh0byURATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUBEwEwT3B0aW9uPEJ5dGU+AAEUdmFsdWXpEAEwT3B0aW9uPFUyNTY+AADxEgQYT3B0aW9uBARUAQURAQgQTm9uZQAAABBTb21lBAAFEQAAAQAA9RIAAALZEAD5EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV0/RIBNE9wdGlvbjxCeXRlcz4AARBkYXRh/RIBNE9wdGlvbjxCeXRlcz4AAP0SBBhPcHRpb24EBFQB2RABCBBOb25lAAAAEFNvbWUEANkQAAABAAABEwQYT3B0aW9uBARUAQUTAQgQTm9uZQAAABBTb21lBAAFEwAAAQAABRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAAkTBBhSZXN1bHQIBFQBDRMERQEREwEICE9rBAANEwAAAAAMRXJyBAAREwAAAQAADRMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBNQEAFAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdDUBARxCYWxhbmNlAAEcZXRoX2dhc7UHARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AABETDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEAFkKARhTdHJpbmcAAQAAFRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGX8AThPcHRpb248TW9tZW50PgABWHBlcmZvcm1fYmFsYW5jZV9jaGVja3MZEwEwT3B0aW9uPGJvb2w+AAE8c3RhdGVfb3ZlcnJpZGVzHRMBYE9wdGlvbjxTdGF0ZU92ZXJyaWRlU2V0PgAAGRMEGE9wdGlvbgQEVAF1AQEIEE5vbmUAAAAQU29tZQQAdQEAAAEAAB0TBBhPcHRpb24EBFQBIRMBCBBOb25lAAAAEFNvbWUEACETAAABAAAhExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5AU3RhdGVPdmVycmlkZVNldAAABAAlEwGAQlRyZWVNYXA8QWRkcmVzcywgU3RhdGVPdmVycmlkZT4AACUTBCBCVHJlZU1hcAgESwFxBwRWASkTAAQAQRMAAAApExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW40U3RhdGVPdmVycmlkZQAAFAEcYmFsYW5jZekQATBPcHRpb248VTI1Nj4AARRub25jZekQATBPcHRpb248VTI1Nj4AARBjb2Rl/RIBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlLRMBXE9wdGlvbjxTdG9yYWdlT3ZlcnJpZGU+AAFobW92ZV9wcmVjb21waWxlX3RvX2FkZHJlc3MlEQE8T3B0aW9uPEFkZHJlc3M+AAAtEwQYT3B0aW9uBARUATETAQgQTm9uZQAAABBTb21lBAAxEwAAAQAAMRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPFN0b3JhZ2VPdmVycmlkZQABCBRTdGF0ZQQANRMBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAAAJFN0YXRlRGlmZgQANRMBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAEAADUTBCBCVHJlZU1hcAgESwE8BFYBPAAEADkTAAAAORMAAAI9EwA9EwAABAg8PABBEwAAAkUTAEUTAAAECHEHKRMASRMEGFJlc3VsdAgEVAG1BwRFARETAQgIT2sEALUHAAAAAAxFcnIEABETAAABAABNEwQYUmVzdWx0CARUAREBBEUBERMBCAhPawQAEQEAAAAADEVycgQAERMAAAEAAFETBBhSZXN1bHQIBFQBVRMERQFtCAEICE9rBABVEwAAAAAMRXJyBABtCAAAAQAAVRMMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBNQEACAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXQ1AQEcQmFsYW5jZQAAWRMEGFJlc3VsdAgEVAFhAQRFAV0TAQgIT2sEAGEBAAAAAAxFcnIEAF0TAAABAABdEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBABtCAE0RGlzcGF0Y2hFcnJvcgACAABhExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEAGUTAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAG0TAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQAdRMBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAAGUTBBhPcHRpb24EBFQBaRMBCBBOb25lAAAAEFNvbWUEAGkTAAABAABpExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3N1AQEQYm9vbAABNG9ubHlfdG9wX2NhbGx1AQEQYm9vbAAAbRMEGE9wdGlvbgQEVAFxEwEIEE5vbmUAAAAQU29tZQQAcRMAAAEAAHETFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGV1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAEwZGlzYWJsZV9jb2RldQEBEGJvb2wAAHUTBBhPcHRpb24EBFQBeRMBCBBOb25lAAAAEFNvbWUEAHkTAAABAAB5ExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnl1AQEQYm9vbAABNGRpc2FibGVfc3RhY2t1AQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZXUBARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhdQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc3UBARBib29sAAEUbGltaXT8ASxPcHRpb248dTY0PgABRG1lbW9yeV93b3JkX2xpbWl0OAEMdTMyAAB9EwAAAoETAIETAAAECDiFEwCFExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxRUcmFjZQABDBBDYWxsBACJEwEkQ2FsbFRyYWNlAAAAIFByZXN0YXRlBACdEwE0UHJlc3RhdGVUcmFjZQABACRFeGVjdXRpb24EAL0TAThFeGVjdXRpb25UcmFjZQACAACJExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyRDYWxsVHJhY2UAADQBEGZyb21xBwEQSDE2MAABDGdhcygBDHU2NAABIGdhc191c2VkKAEMdTY0AAEIdG9xBwEQSDE2MAABFGlucHV02RABFEJ5dGVzAAEYb3V0cHV02RABFEJ5dGVzAAEUZXJyb3K1EgE4T3B0aW9uPFN0cmluZz4AATRyZXZlcnRfcmVhc29utRIBOE9wdGlvbjxTdHJpbmc+AAEUY2FsbHONEwE4VmVjPENhbGxUcmFjZT4AARBsb2dzkRMBMFZlYzxDYWxsTG9nPgABFHZhbHVl6RABME9wdGlvbjxVMjU2PgABJGNhbGxfdHlwZZkTASBDYWxsVHlwZQABQGNoaWxkX2NhbGxfY291bnQ4AQx1MzIAAI0TAAACiRMAkRMAAAKVEwCVExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxxDYWxsTG9nAAAQARxhZGRyZXNzcQcBEEgxNjAAARh0b3BpY3PAASRWZWM8SDI1Nj4AARBkYXRh2RABFEJ5dGVzAAEgcG9zaXRpb244AQx1MzIAAJkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzIENhbGxUeXBlAAEYEENhbGwAAAAoU3RhdGljQ2FsbAABADBEZWxlZ2F0ZUNhbGwAAgAYQ3JlYXRlAAMAHENyZWF0ZTIABAAwU2VsZmRlc3RydWN0AAUAAJ0TFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNFByZXN0YXRlVHJhY2UAAQggUHJlc3RhdGUEAKETAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAAAgRGlmZk1vZGUIAQxwcmWhEwGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEQcG9zdKETAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAQAAoRMEIEJUcmVlTWFwCARLAXEHBFYBpRMABAC1EwAAAKUTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzRFByZXN0YXRlVHJhY2VJbmZvAAAQARxiYWxhbmNl6RABME9wdGlvbjxVMjU2PgABFG5vbmNl4AEsT3B0aW9uPHUzMj4AARBjb2Rl/RIBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlqRMBeEJUcmVlTWFwPEJ5dGVzLCBPcHRpb248Qnl0ZXM+PgAAqRMEIEJUcmVlTWFwCARLAdkQBFYB/RIABACtEwAAAK0TAAACsRMAsRMAAAQI2RD9EgC1EwAAArkTALkTAAAECHEHpRMAvRMUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM4RXhlY3V0aW9uVHJhY2UAABgBDGdhcygBDHU2NAABPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAAUBiYXNlX2NhbGxfd2VpZ2h0EQEBGFdlaWdodAABGGZhaWxlZHUBARBib29sAAEwcmV0dXJuX3ZhbHVl2RABFEJ5dGVzAAEsc3RydWN0X2xvZ3PBEwFIVmVjPEV4ZWN1dGlvblN0ZXA+AADBEwAAAsUTAMUTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNEV4ZWN1dGlvblN0ZXAAABwBDGdhc7QBDHU2NAABIGdhc19jb3N0tAEMdTY0AAEsd2VpZ2h0X2Nvc3QRAQEYV2VpZ2h0AAEUZGVwdGjtAwEMdTE2AAEscmV0dXJuX2RhdGHZEAEUQnl0ZXMAARRlcnJvcrUSAThPcHRpb248U3RyaW5nPgABEGtpbmTJEwFERXhlY3V0aW9uU3RlcEtpbmQAAMkTFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzREV4ZWN1dGlvblN0ZXBLaW5kAAEIJEVWTU9wY29kZRQBCHBjYAEMdTMyAAEIb3AMAQh1OAABFHN0YWNr9RIBKFZlYzxCeXRlcz4AARhtZW1vcnn1EgEoVmVjPEJ5dGVzPgABHHN0b3JhZ2XNEwHIT3B0aW9uPGFsbG9jOjpjb2xsZWN0aW9uczo6QlRyZWVNYXA8Qnl0ZXMsIEJ5dGVzPj4AAAAoUFZNU3lzY2FsbAwBCG9wDAEIdTgAARBhcmdzZQ8BIFZlYzx1NjQ+AAEgcmV0dXJuZWT8ASxPcHRpb248dTY0PgABAADNEwQYT3B0aW9uBARUAdETAQgQTm9uZQAAABBTb21lBADREwAAAQAA0RMEIEJUcmVlTWFwCARLAdkQBFYB2RAABADVEwAAANUTAAAC2RMA2RMAAAQI2RDZEADdEwQYT3B0aW9uBARUAYUTAQgQTm9uZQAAABBTb21lBACFEwAAAQAA4RMEGFJlc3VsdAgEVAGFEwRFARETAQgIT2sEAIUTAAAAAAxFcnIEABETAAABAADlExQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXMdEwFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADpEwQYUmVzdWx0CARUAe0TBEUB8RMBCAhPawQA7RMAAAAADEVycgQA8RMAAAEAAO0TAAAECDUBOADxEww0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAAD1EwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAdgYU3lzdGVtBACJCgFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EABULAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBQcmVpbWFnZQQAOQsBfHBhbGxldF9wcmVpbWFnZTo6RXJyb3I8UnVudGltZT4ABQAkU2NoZWR1bGVyBABRCwGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4ABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAFULAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ACAA0TmV0d29ya1N1ZmZpeAQAaQsBrGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeDo6RXJyb3I8UnVudGltZT4AmgAgQmFsYW5jZXMEAK0LAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAoAHFZlc3RpbmcEAMkLAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4ADgAYQ2xhaW1zBADNCwF0cGFsbGV0X2NsYWltczo6RXJyb3I8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAOULAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAAFDAF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAQQwBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBACpDAFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBADNDAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQA0QwBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXJyb3I8UnVudGltZT4AJAAcVXRpbGl0eQQA1QwBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQA5QwBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAAkNAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAHEluZGljZXMEABENAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4AKwAYQXNzZXRzBAA9DQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBABpDQF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAL0NAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQA0Q0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQA4Q0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADtDQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEAPkNAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBAD9DQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBTY2FyY2l0eQQAIQ4BlGluZGl2X3BhbGxldF9zY2FyY2l0eTo6RXJyb3I8UnVudGltZT4AOgAMUHNtBAA9DgFocGFsbGV0X3BzbTo6RXJyb3I8UnVudGltZT4AOwAgVHJlYXN1cnkEAFEOAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAIUOAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAzQ4BgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQA0Q4BgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AEAAIEJvdW50aWVzBADhDgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBADtDgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBCACRBc3NldFJhdGUEAPEOAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAANDwGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBEAAxEYXAEABEPAWhwYWxsZXRfZGFwOjpFcnJvcjxSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EANkJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAVQ8BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEAGkPAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAH0PAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAiQ8BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBAChDwHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEANkPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQAPRABkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZACROZnRDbGFpbXMEAF0QAZxpbmRpdl9wYWxsZXRfbmZ0X2NsYWltczo6RXJyb3I8UnVudGltZT4AYABETWVtYmVyc1N1YnNjcmliZXIEAJUQAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFcnJvcjxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBAClEAGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFcnJvcjxSdW50aW1lPgBiABBQZ2FzBACtEAGEaW5kaXZfcGFsbGV0X3BnYXM6OkVycm9yPFJ1bnRpbWU+AGMAGFJldml2ZQQAXREBdHBhbGxldF9yZXZpdmU6OkVycm9yPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAeREBqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFcnJvcjxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAhREBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AJkAEFN1ZG8EAIkRAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4A+wAAGQEYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBEEIQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAdQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQBNCBgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AJEJsb2NrU2l6ZQAAOAQADLAgVG90YWwgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjdXJyZW50IGJsb2NrLgDIIFRyYWNrcyB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGFuZCBhbGwgZXh0cmluc2ljcy4AJEJsb2NrSGFzaAEBBAU4PIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy4ANEV4dHJpbnNpY0RhdGEBAQQFOBgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4AGE51bWJlcgEAOBAAAAAABAkBIFRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBiZWluZyBwcm9jZXNzZWQuIFNldCBieSBgZXhlY3V0ZV9ibG9ja2AuAChQYXJlbnRIYXNoAQA8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suABhEaWdlc3QBAGQEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuABhFdmVudHMBAFEIBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLgAoRXZlbnRDb3VudAEAOBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuACxFdmVudFRvcGljcwEBBAI8TQoEACglASBNYXBwaW5nIGJldHdlZW4gYSB0b3BpYyAocmVwcmVzZW50ZWQgYnkgVDo6SGFzaCkgYW5kIGEgdmVjdG9yIG9mIGluZGV4ZXOUIG9mIGV2ZW50cyBpbiB0aGUgYDxFdmVudHM8VD4+YCBsaXN0LgBRASBBbGwgdG9waWMgdmVjdG9ycyBoYXZlIGRldGVybWluaXN0aWMgc3RvcmFnZSBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4gVGhpc0UBIGFsbG93cyBsaWdodC1jbGllbnRzIHRvIGxldmVyYWdlIHRoZSBjaGFuZ2VzIHRyaWUgc3RvcmFnZSB0cmFja2luZyBtZWNoYW5pc20gYW5k5CBpbiBjYXNlIG9mIGNoYW5nZXMgZmV0Y2ggdGhlIGxpc3Qgb2YgZXZlbnRzIG9mIGludGVyZXN0LgBZASBUaGUgdmFsdWUgaGFzIHRoZSB0eXBlIGAoQmxvY2tOdW1iZXJGb3I8VD4sIEV2ZW50SW5kZXgpYCBiZWNhdXNlIGlmIHdlIHVzZWQgb25seSBqdXN0TQEgdGhlIGBFdmVudEluZGV4YCB0aGVuIGluIGNhc2UgaWYgdGhlIHRvcGljIGhhcyB0aGUgc2FtZSBjb250ZW50cyBvbiB0aGUgbmV4dCBibG9jawEBIG5vIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB0aHVzIHRoZSBldmVudCBtaWdodCBiZSBsb3N0LgBITGFzdFJ1bnRpbWVVcGdyYWRlAABRCgQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLgBEQmxvY2tzVGlsbFVwZ3JhZGUAAAwEAATsIE51bWJlciBvZiBibG9ja3MgdGlsbCB0aGUgcGVuZGluZyBjb2RlIHVwZ3JhZGUgaXMgYXBwbGllZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAdQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAHUBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAASQoEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAF0KBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAEQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAFdCAAYMEJsb2NrV2VpZ2h0c2EKiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGhtCjQAAEQAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHR1CkBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9ueQqRBlBuZXh0LWFzc2V0LWh1Yi1wYXNlb1BuZXh0LWFzc2V0LWh1Yi1wYXNlbwEAAABg1i0AAAAAAHjdcY1cxTJi1AEAAAAE5wUhoNPS+AIAAAAWK/GRN6usvQEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAACCUn1h6OFA4wEAAAD+JvwaDdWuAAEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAAWAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml47QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAGJCgAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZy0FBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrjQoIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YUUICGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAChCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAAtBgQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQClCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AADJCgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAHUBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQDNCgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAMEKBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAANUKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAOkKBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEA8QqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAPUKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAAQsEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAAELBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAAULBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEASQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABEBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAAANCwQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABhQgABChTZWxmUGFyYUlknBDcBQAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAEVCwAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAHUBBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAY8GQsEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBjwhCwQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBjELNQsEAAAAAbwAAYkIAAABOQsAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOD0LBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALMTQsEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjMBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHEAAGNCAAINE1heGltdW1XZWlnaHQRASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAFRCwAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCmQixCAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHQAAGVCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAABFAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVZARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAT0BAAHFCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAVULAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAWQsEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwBdCxAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwBlCwTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4ANE5ldHdvcmtTdWZmaXgBNE5ldHdvcmtTdWZmaXgENE5ldHdvcmtTdWZmaXgBAGkBGBRwYXNlbwQlASBOZXR3b3JrIHN1ZmZpeCBhcHBlbmRlZCB0byBwcm9kdWN0IG5hbWVzIHdoZW4gZGVyaXZpbmcgcHJvZHVjdCBjb250ZXh0cy4AAWUBAAHJCAAAAWkLAAAAmgAAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEANQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBADUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBEUIAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIEbQsEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIEfQsEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgSJCwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBJULBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAW0BAAHNCAAQSEV4aXN0ZW50aWFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAa0LABBEUnVudGltZUhvbGRSZWFzb27VCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZTUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJ1AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllcp0LBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBAEkFQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAsQsEAAAAPFR4UGF5bWVudENyZWRpdAAAtQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAENCQAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABEQkAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgS9CwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQDFCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABgQEAARUJAAhETWluVmVzdGVkVHJhbnNmZXI1AUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAAByQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAaVATUBBAAAABRUb3RhbAEANQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGlQGdAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAaVAaUBBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgSVAQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAGJAQABGQkABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAHNCwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDRCwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBANULBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABrQEAAR0JABgUUG90SWThCyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB5QsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQB5AQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQB1AQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDpCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDxCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBLUBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF/QsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGxAQABIQkABChLZXlEZXBvc2l0NQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAQUMAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlztQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAJDAQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQARDCAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWS5AQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQAJDAQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAFQwEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAGQwEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQAhDAQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBTUMOQwEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApw5DAQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAPQwwIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAdQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcSQVAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgABvQEAASUJAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABQQwAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKEUMBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCWQw4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCWQwoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAlkMXQwEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAYQwEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAAbQwEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgJxDHUMBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgSFDAQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQB1AQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAdQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAARAwQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAsUBkQwEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABwQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAEpCQAQRFVuaXZlcnNhbExvY2F0aW9uHQIYAgkCAHEXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAakMBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABwQMAATkJAAAAAAAgAABEVG9LdXNhbWFYY21Sb3V0ZXIBRFRvS3VzYW1hWGNtUm91dGVyBBhCcmlkZ2UBALEMRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgABxQMAAT0JAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXNA7UMdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAADNAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBcEMxQwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgAByQMAAUEJABAgSGVhcFNpemU4EAgAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0DQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABzQwABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQBYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZARMRXhwb3J0T3BlcmF0aW5nTW9kZQEA1QMEAATYIFRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgdG8gRXRoZXJldW0uAAHRAwABSQkAAAHRDAAAACQAABxVdGlsaXR5AAHlAwABTQkABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAdUMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbvEDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQLZDN0MBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAS0EAAFRCQAMLERlcG9zaXRCYXNlNQFAANu7dwAAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3I1AUAA1DAAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgAB5QwABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQTpDEQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQT5DEQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABOQQAAVUJABhAUHJveHlEZXBvc2l0QmFzZTUBQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcjUBQKBaMgAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZTUBQADSfncAAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcjUBQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAQkNAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlQQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZUEEdQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrQQQcYWdhaW5zdEEEdQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjgNDQQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAFFBAABXQkABBxEZXBvc2l0NQFAANJ+dwAAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgABEQ0ABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgArAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjgVDQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAh0NIQ0EAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgItDTENBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4NQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjhNBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAgbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIE9ubHkgcmVhZCBieSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdOiBjb25maWd1cmUgaXQgYXMgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBhbmRVASBwcm92aWRlIGFuIGluaXRpYWwgdmFsdWUgaGVyZSB0byBhcHBseSBhbiBhdXRvLWluY3JlbWVudCBtb2RlbCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABSQQAAWEJABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0NQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXQ1AUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXQ1AUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAT0NABQcQmFsYW5jZTUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJgHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QaCpZ1Rq55IqMjMQY/5cI0qcCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4QQ0EqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkODEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0i6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDhFDQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDhRBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AMgAAHFVuaXF1ZXMBHFVuaXF1ZXMoFENsYXNzAAEEAjhJDQQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAk0NEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuADBDbGFzc0FjY291bnQAAQgCAsUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAUQXNzZXQAAQgCAsxRDQQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuADxDbGFzc01ldGFkYXRhT2YAAQQCOFUNBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uAEhJbnN0YW5jZU1ldGFkYXRhT2YAAQgCAsxZDQQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABDAICAl0NYQ0EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAsxlDQQABHAgUHJpY2Ugb2YgYW4gYXNzZXQgaW5zdGFuY2UuAExDb2xsZWN0aW9uTWF4U3VwcGx5AAEEAjg4BAAE8CBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBtaWdodCBoYXZlLgABVQQAAWUJACBEQ29sbGVjdGlvbkRlcG9zaXQ1AUAA6HZIFwAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXQ1AUAA4fUFAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlNQFAoGr6dwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZTUBQACUNXcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZTUBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBCAAAAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4ECAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EEAAAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgABaQ0ACDBDb2xsZWN0aW9uSWQ4BJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLgAzAAAQTmZ0cwEQTmZ0czwoQ29sbGVjdGlvbgABBAI4bQ0EAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgJNDRAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBEQ29sbGVjdGlvbkFjY291bnQAAQgCAsUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBAQ29sbGVjdGlvblJvbGVPZgABCAICHQ1xDQQACNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuoCBTdG9yZXMgY29sbGVjdGlvbiByb2xlcyBhcyBwZXIgYWNjb3VudC4AEEl0ZW0AAQgCAsx5DQQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuAFBDb2xsZWN0aW9uTWV0YWRhdGFPZgABBAI4kQ0EAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4AOEl0ZW1NZXRhZGF0YU9mAAEIAgLMlQ0EAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAARACAgICnQ2hDQQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAICzGUNBAAEUCBBIHByaWNlIG9mIGFuIGl0ZW0uAGRJdGVtQXR0cmlidXRlc0FwcHJvdmFsc09mAQEIAgLMqQ0EAARoIEl0ZW0gYXR0cmlidXRlIGFwcHJvdmFscy4AQE5leHRDb2xsZWN0aW9uSWQAADgEAAgxASBTdG9yZXMgdGhlIGBDb2xsZWN0aW9uSWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgY29sbGVjdGlvbi7wIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQuADRQZW5kaW5nU3dhcE9mAAEIAgLMsQ0EAAR8IEhhbmRsZXMgYWxsIHRoZSBwZW5kaW5nIHN3YXBzLgBIQ29sbGVjdGlvbkNvbmZpZ09mAAEEAjhtBAQABGAgQ29uZmlnIG9mIGEgY29sbGVjdGlvbi4AMEl0ZW1Db25maWdPZgABCAICzJUEBAAETCBDb25maWcgb2YgYW4gaXRlbS4AAWkEAAFpCQA4RENvbGxlY3Rpb25EZXBvc2l0NQFAQPH7dwAAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0NQFAEDIBAwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZTUBQBBx/wsAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2U1AUAAwusLAAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGU1AUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQAAEAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBBAAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBAAAQAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AOEFwcHJvdmFsc0xpbWl0OBAUAAAABKggVGhlIG1heGltdW0gYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AcEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzTGltaXQ4EB4AAAAE1CBUaGUgbWF4aW11bSBhdHRyaWJ1dGVzIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuABxNYXhUaXBzOBAKAAAABKggVGhlIG1heCBudW1iZXIgb2YgdGlwcyBhIHVzZXIgY291bGQgc2VuZC4ATE1heERlYWRsaW5lRHVyYXRpb244EAAaTwAEqCBUaGUgbWF4IGR1cmF0aW9uIGluIGJsb2NrcyBmb3IgZGVhZGxpbmVzLgBQTWF4QXR0cmlidXRlc1BlckNhbGw4EAoAAAAE4CBUaGUgbWF4IG51bWJlciBvZiBhdHRyaWJ1dGVzIGEgdXNlciBjb3VsZCBzZXQgcGVyIGNhbGwuACBGZWF0dXJlc7UNIAAAAAAAAAAABJAgRGlzYWJsZXMgc29tZSBvZiBwYWxsZXQncyBmZWF0dXJlcy4AAb0NAAwwQ29sbGVjdGlvbklkOCScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uAEkBIFNBRkVUWTogVGhlIGZ1bmN0aW9ucyBpbiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0IGFyZSBmYWxsaWJsZS4gSWYgdGhlIGZ1bmN0aW9uc0EBIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBib3RoIHJldHVybiBgTm9uZWAsIHRoZSBhdXRvbWF0aWMgQ29sbGVjdGlvbklkIGdlbmVyYXRpb24pASBzaG91bGQgbm90IGJlIHVzZWQuIFNvIHRoZSBgY3JlYXRlYCBhbmQgYGZvcmNlX2NyZWF0ZWAgZXh0cmluc2ljcyBhbmQgdGhlTQEgYGNyZWF0ZV9jb2xsZWN0aW9uYCBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBgVW5rbm93bkNvbGxlY3Rpb25gIEVycm9yLiBJbnN0ZWFkIHVzZUEBIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb24uIEhvd2V2ZXIsIGlmIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXRJASBpbXBsZW1lbnRhdGlvbiBoYXMgYW4gaW5jcmVtZW50YWwgb3JkZXIsIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb278IHNob3VsZCBub3QgYmUgdXNlZCBhcyBpdCBjYW4gY2xhaW0gYSB2YWx1ZSBpbiB0aGUgSUQgc2VxdWVuY2UuGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi5ET2ZmY2hhaW5TaWduYXR1cmW9BAxoIE9mZi1DaGFpbiBzaWduYXR1cmUgdHlwZS4ACQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpPZmZjaGFpblB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4ANAAANEZvcmVpZ25Bc3NldHMBNEZvcmVpZ25Bc3NldHMYFEFzc2V0AAEEAhkCFQ0EAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgLBDSENBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICxQ0xDQQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCGQLJDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCGQLNBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAAZAgQAIG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBPbmx5IHJlYWQgYnkgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXTogY29uZmlndXJlIGl0IGFzIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gYW5kVQEgcHJvdmlkZSBhbiBpbml0aWFsIHZhbHVlIGhlcmUgdG8gYXBwbHkgYW4gYXV0by1pbmNyZW1lbnQgbW9kZWwgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAckEAAFxCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdDUBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0NQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2U1AUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlNQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0NQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAHRDQAUHEJhbGFuY2U1AQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQZAgSMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlchkCHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGHRBAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEDDmSlYCb0tePC0ZYoOpoX2nApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkGQJBDQSoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1TGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQZAjEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZBkC1Q0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9ZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQZAtUEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA1AAAoUG9vbEFzc2V0cwEoUG9vbEFzc2V0cxgUQXNzZXQAAQQCOBUNBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICHQ0hDQQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAi0NMQ0EAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjjZDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOE0EBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACBtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgT25seSByZWFkIGJ5IFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF06IGNvbmZpZ3VyZSBpdCBhcyBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGFuZFUBIHByb3ZpZGUgYW4gaW5pdGlhbCB2YWx1ZSBoZXJlIHRvIGFwcGx5IGFuIGF1dG8taW5jcmVtZW50IG1vZGVsIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHZBAABdQkAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXQ1AUAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdDUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlNQFAAAAAAAAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZTUBQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdDUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgAB4Q0AFBxCYWxhbmNlNQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjgcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBNsGuhym8Yse2wb/CC0kQJpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDhBDQSoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4MQEEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOOUNBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOFEEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA2AAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAn0J6Q0EAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgAB3QQAAXkJABwUTFBGZWX9BBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZTUBQEAtk+8AAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0GQIIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWX9BBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHk1AUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElk4QsgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAe0NAAgkQXNzZXRLaW5kGQIIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZH0JBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDEZAhhhc3NldDIZAvENCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxGQIYYXNzZXQyGQIYYW1vdW50NQEsaW5jbHVkZV9mZWV1ATEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4ANwAANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAh0NlQsEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4RnJvemVuQmFsYW5jZXMAAQgCAh0NNQEEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABiQkAAAH5DQAETFJ1bnRpbWVGcmVlemVSZWFzb26dCwR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA4AAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgIdDYkLBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAICHQ01AQQABGkBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGJhbGFuY2Ugb24gaG9sZCBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABjQkAAAH9DQAERFJ1bnRpbWVIb2xkUmVhc29u1QgEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOQAAIFNjYXJjaXR5ASBTY2FyY2l0eTBATmV4dENvbGxlY3Rpb25JZAEAOBAAAAAABLAgVGhlIG5leHQgY29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIGFsbG9jYXRlLgAsQ29sbGVjdGlvbnMAAQQFOAEOBAAE4CBJbW11dGFibGUgaXRlbSBjYXRhbG9ndWVzLCBncm91cGVkIGJ5IHRoZWlyIGNvbGxlY3Rpb24uACBJdGVtRGVmcwABCAUFzAkOBAAE9CBJbW11dGFibGUgaXRlbSBkZWZpbml0aW9ucywgaW5kZXhlZCB3aXRoaW4gdGhlaXIgY29sbGVjdGlvbi4ASENvbGxlY3Rpb25NZXRhZGF0YQABCAUCDQ4RDgQADAkBIENvbGxlY3Rpb24td2lkZSBkZWZhdWx0cyBpbmhlcml0ZWQgYnkgZXZlcnkgaXRlbSBpbiBhIGNvbGxlY3Rpb24uAC0BIEVudHJpZXMgbXVzdCBiZSByZW1vdmVkIGluZGl2aWR1YWxseSBiZWZvcmUgdGhlIGNvbGxlY3Rpb24gY2FuIGJlIGRlbGV0ZWQuADBJdGVtTWV0YWRhdGEAAQwFBQIVDhEOBAAUHQEgUGVyLWl0ZW0gZGVmYXVsdHMgd2hpY2ggb3ZlcnJpZGUgY29sbGVjdGlvbiBkZWZhdWx0cyBmb3IgdGhlIHNhbWUga2V5LgBFASBUaGVzZSBlbnRyaWVzIGFyZSBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2UgbWludGVkIGZyb20gdGhlIGl0ZW0gZGVmaW5pdGlvbi4gSXRlbWUBIGRlZmluaXRpb25zIG91dGxpdmUgbWludGVkIGluc3RhbmNlcywgc28gYnVybmluZyBhbiBpbnN0YW5jZSBuZXZlciByZW1vdmVzIHRoZW0uIEVudHJpZXMhASBtdXN0IGJlIHJlbW92ZWQgaW5kaXZpZHVhbGx5IGJlZm9yZSB0aGUgaXRlbSBkZWZpbml0aW9uIGNhbiBiZSBkZWxldGVkLgA4TmV4dEluc3RhbmNlSWQBACggAAAAAAAAAAAE0CBUaGUgbmV4dCBwZXJtYW5lbnQgaW5zdGFuY2UgaWRlbnRpZmllciB0byBhbGxvY2F0ZS4ALE5mdHNCeU93bmVyAAEEAgQJBAQABLQgT25lIE5GVCBwZXIgb3duZXIga2V5IOKAlCB0aGUgY29pbmFnZSBtb2RlbC4AJEluc3RhbmNlcwABBAUoBAQABCEBIFN0YWJsZSByZXZlcnNlIGluZGV4IGZyb20gaW5zdGFuY2UgaWRlbnRpZmllciB0byBpdHMgY3VycmVudCBvd25lciBrZXkuAEBJbnN0YW5jZURlcG9zaXRzAAEEBSg1AQQABDEBIEV4YWN0IHBlci1pbnN0YW5jZSBzdG9yYWdlIGRlcG9zaXRzLCBwcmVzZW50IG9ubHkgZm9yIGRlcG9zaXQtcGF5aW5nIG1pbnRzLgBUSW5zdGFuY2VNZXRhZGF0YUNvdW50AQEEBSg4EAAAAAAQ8CBOdW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBmb3IgZWFjaCBsaXZlIGluc3RhbmNlLgBJASBUaGlzIGVudHJ5IGV4aXN0cyBldmVuIHdoZW4gdGhlIGNvdW50IGlzIHplcm8gc28gYnVybiBjbGVhbnVwIHJlbWFpbnMgYm91bmRlZCBhbmRJASBgdHJ5X3N0YXRlYCBjYW4gdmVyaWZ5IHRoYXQgZXZlcnkgbGl2ZSBpbnN0YW5jZSBoYXMgZXhwbGljaXQgbWV0YWRhdGEgYWNjb3VudGluZy4AQEluc3RhbmNlTWV0YWRhdGEAAQgFAhkOEQ4EAARNASBQZXItaW5zdGFuY2UgZW50cmllcyB3aGljaCBvdmVycmlkZSBpdGVtIGFuZCBjb2xsZWN0aW9uIG1ldGFkYXRhIGZvciB0aGUgc2FtZSBrZXkuABhMb2NrZWQAAQQCBB0OBAAQvCBQb3N0LWZhaWx1cmUgYmFja29mZiBsb2NrcyBmb3IgTkZUIHB1cnNlIGtleXMuAFkBIEEgc2VwYXJhdGUgbG9jayBleHBsaWNpdGx5IHJlamVjdHMgdHJhbnNhY3Rpb25zIGR1cmluZyBiYWNrb2ZmLiBVcGRhdGluZyBgbGFzdF9tb3ZlZGAVASB3b3VsZCBvbmx5IGxvd2VyIHRyYW5zYWN0aW9uIHByaW9yaXR5IGFuZCB3b3VsZCBub3QgZW5mb3JjZSBhIGRlbGF5LgAB5QQAAZEJACAkTWF4S2V5TGVuOBAgAAAABKQgTWF4aW11bSBieXRlIGxlbmd0aCBvZiBvbmUgbWV0YWRhdGEga2V5LgAsTWF4VmFsdWVMZW44EAABAAAErCBNYXhpbXVtIGJ5dGUgbGVuZ3RoIG9mIG9uZSBtZXRhZGF0YSB2YWx1ZS4AVE1heENvbGxlY3Rpb25NZXRhZGF0YTgQZAAAAAz0IE1heGltdW0gbnVtYmVyIG9mIG1ldGFkYXRhIGVudHJpZXMgc3RvcmVkIG9uIG9uZSBjb2xsZWN0aW9uLgAxASBUaGlzIGJvdW5kcyB3aGF0IG9uZSBjb2xsZWN0aW9uIHF1ZXJ5IGluIHRoZSBtZXRhZGF0YSBydW50aW1lIEFQSSBjYW4gcmVhZC4APE1heEl0ZW1NZXRhZGF0YTgQZAAAAAwJASBNYXhpbXVtIG51bWJlciBvZiBtZXRhZGF0YSBlbnRyaWVzIHN0b3JlZCBvbiBvbmUgaXRlbSBkZWZpbml0aW9uLgAZASBUaGlzIGJvdW5kcyB3aGF0IG9uZSBpdGVtIHF1ZXJ5IGluIHRoZSBtZXRhZGF0YSBydW50aW1lIEFQSSBjYW4gcmVhZC4ATE1heEluc3RhbmNlTWV0YWRhdGE4EBAAAAAMCQEgTWF4aW11bSBudW1iZXIgb2YgbWV0YWRhdGEgb3ZlcnJpZGVzIHN0b3JlZCBvbiBvbmUgbGl2ZSBpbnN0YW5jZS4ARQEgVGhpcyBib3VuZHMgYnVybiBjbGVhbnVwIGluZGVwZW5kZW50bHkgb2YgaG93IG1hbnkgbXV0YXRpb24gY2FsbHMgYXJlIHN1Ym1pdHRlZC4AKExvY2tQZXJpb2QoIDwAAAAAAAAABAEBIEJhc2UgbG9jayBwZXJpb2QgYWZ0ZXIgYSBmYWlsZWQgcHVyc2Uta2V5IGRpc3BhdGNoLCBpbiBzZWNvbmRzLgBMTWF4VHJhbnNmZXJQcmlvcml0eSggQEIPAAAAAAAErCBQcmlvcml0eSBjZWlsaW5nIGZvciByZXN0ZWQgTkZUIHRyYW5zZmVycy4AME1heGltdW1Nb3Zlc+0DCBAAENAgRmVlbGVzcyBtb3ZlcyBvbmUgaW5zdGFuY2UgZ2V0cyBiZXR3ZWVuIHBhaWQgbW92ZXMuAFEBIFRoaXMgYm91bmRzIHRoZSBibG9jayBzcGFjZSBvbmUgbWludCBidXlzLCBzaW5jZSBub3RoaW5nIGVsc2UgY2hhcmdlcyBmb3IgYSBmZWVsZXNzGCBtb3ZlLgABIQ4AAAA6AAAMUHNtAQxQc20cDFBzbQABBAIZAiUOBAAE6CBSZWdpc3RlcmVkIFBTTSBpbnN0YW5jZXMsIGtleWVkIGJ5IHRoZSBpbnRlcm5hbCBhc3NldCBpZC4AIFBzbUFkbWluAAEEAhkCKQ4EAAw5ASBBZG1pbiBvcmlnaW5zIGFuZCBjcmVhdGlvbi1kZXBvc2l0IGJvb2trZWVwaW5nIHBlciBQU00sIGtleWVkIGJ5IHRoZSBpbnRlcm5hbEEBIGFzc2V0IGlkLiBIZWxkIHNlcGFyYXRlbHkgZnJvbSBbYFBzbWBdIHNvIHN3YXBzIG5ldmVyIGRlY29kZSB0aGUgYWRtaW4gb3JpZ2lucy4pASBBbHdheXMgd3JpdHRlbiBhbmQgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFtgUHNtYF0gZW50cnkuABxQc21EZWJ0AQEIAgJ9CTUBQAAAAAAAAAAAAAAAAAAAAAAEJQEgSW50ZXJuYWwtYXNzZXQgZGVidCBtaW50ZWQgdGhyb3VnaCBQU00sIHBlciBgKGludGVybmFsLCBleHRlcm5hbClgIHBhaXIuAChNaW50aW5nRmVlAQEIAgJ9Cf0EEIgTAAAIQQEgRmVlIGZvciBleHRlcm5hbCDihpIgaW50ZXJuYWwgc3dhcHMgKG1pbnRpbmcpLCBwZXIgYChpbnRlcm5hbCwgZXh0ZXJuYWwpYCBwYWlyLkggRGVmYXVsdHMgdG8gMC41JS4ANFJlZGVtcHRpb25GZWUBAQgCAn0J/QQQiBMAAAhNASBGZWUgZm9yIGludGVybmFsIOKGkiBleHRlcm5hbCBzd2FwcyAocmVkZW1wdGlvbiksIHBlciBgKGludGVybmFsLCBleHRlcm5hbClgIHBhaXIuSCBEZWZhdWx0cyB0byAwLjUlLgBIQXNzZXRDZWlsaW5nV2VpZ2h0AQEIAgJ9Cf0EEAAAAAAIQQEgUGVyLWV4dGVybmFsIGNlaWxpbmcgd2VpZ2h0IHdpdGhpbiBhIFBTTSwgbm9ybWFsaXNlZCBhZ2FpbnN0IHRoZSBzdW0gb2Ygd2VpZ2h0cwEBIGZvciB0aGUgc2FtZSBpbnN0YW5jZS4gWmVybyBkaXNhYmxlcyBtaW50aW5nIGZvciB0aGF0IGV4dGVybmFsLgA4RXh0ZXJuYWxBc3NldHMAAQgCAn0JOQ4EAASIIEFwcHJvdmVkIGV4dGVybmFsIGFzc2V0cyBwZXIgUFNNLgAB+QQAAZUJAAggUGFsbGV0SWThCyBweS9wZWdzbQT8IFBhbGxldElkIGZvciBkZXJpdmluZyBlYWNoIFBTTSBpbnN0YW5jZSdzIHJlc2VydmUgc3ViLWFjY291bnQuADBNYXhFeHRlcm5hbHM4EAUAAAAE9CBNYXhpbXVtIG51bWJlciBvZiBhcHByb3ZlZCBleHRlcm5hbCBhc3NldHMgcGVyIFBTTSBpbnN0YW5jZS4AAT0OAAg0UGFsbGV0c09yaWdpbvEDCD0BIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzJyBvcmlnaW5zLiBTdG9yZWQgYXMgYSBQU00ncx0BIGBmdWxsX2FkbWluYCAvIGBlbWVyZ2VuY3lfYWRtaW5gIGFuZCBtYXRjaGVkIGFnYWluc3QgaW5jb21pbmcgb3JpZ2lucy4cQXNzZXRJZBkCBFwgQXNzZXQgaWRlbnRpZmllciB0eXBlLgA7AAAgVHJlYXN1cnkBIFRyZWFzdXJ5HDRQcm9wb3NhbENvdW50AQA4EAAAAAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAkUHJvcG9zYWxzAAEEBThBDgQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgB8IFByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAsRGVhY3RpdmF0ZWQBADUBQAAAAAAAAAAAAAAAAAAAAAAE8CBUaGUgYW1vdW50IHdoaWNoIGhhcyBiZWVuIHJlcG9ydGVkIGFzIGluYWN0aXZlIHRvIEN1cnJlbmN5LgAkQXBwcm92YWxzAQBFDgQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgD4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4AKFNwZW5kQ291bnQBADgQAAAAAASkIFRoZSBjb3VudCBvZiBzcGVuZHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AGFNwZW5kcwABBAU4SQ4EAATQIFNwZW5kcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBhbmQgYmVpbmcgcHJvY2Vzc2VkLgA8TGFzdFNwZW5kUGVyaW9kAAA4BAAE1CBUaGUgYmxvY2tudW1iZXIgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzcGVuZCBwZXJpb2QuAAEFBQgDApUBVGhlIGBzcGVuZF9sb2NhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIE1pZ3JhdGUgdG8gdGhlIG5ldyBmbG93IGFuZCB1c2UgdGhlIGBzcGVuZGAgY2FsbC4ABAK1AVRoZSBgcmVtb3ZlX2FwcHJvdmFsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gSXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXByZWNhdGVkIGBzcGVuZF9sb2NhbGAgY2FsbC4AAZkJABgsU3BlbmRQZXJpb2Q4EMCoAAAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4AEEJ1cm79BBAAAAAABBEBIFBlcmNlbnRhZ2Ugb2Ygc3BhcmUgZnVuZHMgKGlmIGFueSkgdGhhdCBhcmUgYnVybnQgcGVyIHNwZW5kIHBlcmlvZC4AIFBhbGxldElk4QsgcHkvdHJzcnkEGQEgVGhlIHRyZWFzdXJ5J3MgcGFsbGV0IGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuADBNYXhBcHByb3ZhbHM4EGQAAAAYQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuABUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcHByb3ZhbHMgdGhhdCBjYW4gd2FpdCBpbiB0aGUgc3BlbmRpbmcgcXVldWUuAE0BIE5PVEU6IFRoaXMgcGFyYW1ldGVyIGlzIGFsc28gdXNlZCB3aXRoaW4gdGhlIEJvdW50aWVzIFBhbGxldCBleHRlbnNpb24gaWYgZW5hYmxlZC4AMFBheW91dFBlcmlvZDgQAOEAAAQZASBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCBhbiBhcHByb3ZlZCB0cmVhc3VyeSBzcGVuZCBoYXMgdG8gYmUgY2xhaW1lZC4ALHBvdF9hY2NvdW50BIBtb2RscHkvdHJzcnkAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABUQ4ACCRBc3NldEtpbmQJBQQtASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHRvIGJlIHNwZW50IGZyb20gdGhlIHRyZWFzdXJ5LixCZW5lZmljaWFyeQ0FBF0BIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSB0cmVhc3VyeSBzcGVuZHMuADwAAEBDb252aWN0aW9uVm90aW5nAUBDb252aWN0aW9uVm90aW5nCCRWb3RpbmdGb3IBAQgFBVUOWQ7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHUBIEFsbCB2b3RpbmcgZm9yIGEgcGFydGljdWxhciB2b3RlciBpbiBhIHBhcnRpY3VsYXIgdm90aW5nIGNsYXNzLiBXZSBzdG9yZSB0aGUgYmFsYW5jZSBmb3IgdGhlnCBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3ZSBoYXZlIHJlY29yZGVkLgA0Q2xhc3NMb2Nrc0ZvcgEBBAUEeQ4EAAxpASBUaGUgdm90aW5nIGNsYXNzZXMgd2hpY2ggaGF2ZSBhIG5vbi16ZXJvIGxvY2sgcmVxdWlyZW1lbnQgYW5kIHRoZSBsb2NrIGFtb3VudHMgd2hpY2ggdGhleW0BIHJlcXVpcmUuIFRoZSBhY3R1YWwgYW1vdW50IGxvY2tlZCBvbiBiZWhhbGYgb2YgdGhpcyBwYWxsZXQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbWF4aW11bSBvZiwgdGhpcyBsaXN0LgABEQUAAZ0JAAggTWF4Vm90ZXM4EAACAAAQ8CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB2b3RlcyBhbiBhY2NvdW50IG1heSBoYXZlLgBVASBBbHNvIHVzZWQgdG8gY29tcHV0ZSB3ZWlnaHQsIGFuIG92ZXJseSBsYXJnZSB2YWx1ZSBjYW4gbGVhZCB0byBleHRyaW5zaWNzIHdpdGggbGFyZ2XAIHdlaWdodCBlc3RpbWF0aW9uOiBzZWUgYGRlbGVnYXRlYCBmb3IgaW5zdGFuY2UuAERWb3RlTG9ja2luZ1BlcmlvZDgQwIkBABCQIFRoZSBtaW5pbXVtIHBlcmlvZCBvZiB2b3RlIGxvY2tpbmcuAGUBIEl0IHNob3VsZCBiZSBubyBzaG9ydGVyIHRoYW4gZW5hY3RtZW50IHBlcmlvZCB0byBlbnN1cmUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcHByb3ZhbCxJASB0aG9zZSBzdWNjZXNzZnVsIHZvdGVycyBhcmUgbG9ja2VkIGludG8gdGhlIGNvbnNlcXVlbmNlcyB0aGF0IHRoZWlyIHZvdGVzIGVudGFpbC4AAYUOAAAAPQAAJFJlZmVyZW5kYQEkUmVmZXJlbmRhFDxSZWZlcmVuZHVtQ291bnQBADgQAAAAAAQxASBUaGUgbmV4dCBmcmVlIHJlZmVyZW5kdW0gaW5kZXgsIGFrYSB0aGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBzdGFydGVkIHNvIGZhci4ARFJlZmVyZW5kdW1JbmZvRm9yAAEEAjiJDgQABLQgSW5mb3JtYXRpb24gY29uY2VybmluZyBhbnkgZ2l2ZW4gcmVmZXJlbmR1bS4AKFRyYWNrUXVldWUBAQQF7QOpDgQAEF0BIFRoZSBzb3J0ZWQgbGlzdCBvZiByZWZlcmVuZGEgcmVhZHkgdG8gYmUgZGVjaWRlZCBidXQgbm90IHlldCBiZWluZyBkZWNpZGVkLCBvcmRlcmVkIGJ5fCBjb252aWN0aW9uLXdlaWdodGVkIGFwcHJvdmFscy4AQQEgVGhpcyBzaG91bGQgYmUgZW1wdHkgaWYgYERlY2lkaW5nQ291bnRgIGlzIGxlc3MgdGhhbiBgVHJhY2tJbmZvOjptYXhfZGVjaWRpbmdgLgA0RGVjaWRpbmdDb3VudAEBBAXtAzgQAAAAAATEIFRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIGJlaW5nIGRlY2lkZWQgY3VycmVudGx5LgAoTWV0YWRhdGFPZgABBAI4PAQAGAUBIFRoZSBtZXRhZGF0YSBpcyBhIGdlbmVyYWwgaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgcmVmZXJlbmR1bS5JASBUaGUgYEhhc2hgIHJlZmVycyB0byB0aGUgcHJlaW1hZ2Ugb2YgdGhlIGBQcmVpbWFnZXNgIHByb3ZpZGVyIHdoaWNoIGNhbiBiZSBhIEpTT06IIGR1bXAgb3IgSVBGUyBoYXNoIG9mIGEgSlNPTiBmaWxlLgB1ASBDb25zaWRlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiBmb3IgYSBtZXRhZGF0YSBvZiBmaW5pc2hlZCByZWZlcmVuZHVtcyB0byBgdW5yZXF1ZXN0YCAocmVtb3ZlKUQgbGFyZ2UgcHJlaW1hZ2VzLgABJQUAAaEJABREU3VibWlzc2lvbkRlcG9zaXQ1AUAA6HZIFwAAAAAAAAAAAAAABDUBIFRoZSBtaW5pbXVtIGFtb3VudCB0byBiZSB1c2VkIGFzIGEgZGVwb3NpdCBmb3IgYSBwdWJsaWMgcmVmZXJlbmR1bSBwcm9wb3NhbC4AJE1heFF1ZXVlZDgQZAAAAATkIE1heGltdW0gc2l6ZSBvZiB0aGUgcmVmZXJlbmR1bSBxdWV1ZSBmb3IgYSBzaW5nbGUgdHJhY2suAERVbmRlY2lkaW5nVGltZW91dDgQwKgAAAhVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBzdWJtaXNzaW9uIHRoYXQgYSByZWZlcmVuZHVtIG11c3QgYmVnaW4gYmVpbmcgZGVjaWRlZCBieS7kIE9uY2UgdGhpcyBwYXNzZXMsIHRoZW4gYW55b25lIG1heSBjYW5jZWwgdGhlIHJlZmVyZW5kdW0uADRBbGFybUludGVydmFsOBABAAAADF0BIFF1YW50aXphdGlvbiBsZXZlbCBmb3IgdGhlIHJlZmVyZW5kdW0gd2FrZXVwIHNjaGVkdWxlci4gQSBoaWdoZXIgbnVtYmVyIHdpbGwgcmVzdWx0IGluXQEgZmV3ZXIgc3RvcmFnZSByZWFkcy93cml0ZXMgbmVlZGVkIGZvciBzbWFsbGVyIHZvdGVycywgYnV0IGFsc28gcmVzdWx0IGluIGRlbGF5cyB0byB0aGVVASBhdXRvbWF0aWMgcmVmZXJlbmR1bSBzdGF0dXMgY2hhbmdlcy4gRXhwbGljaXQgc2VydmljaW5nIGluc3RydWN0aW9ucyBhcmUgdW5hZmZlY3RlZC4AGFRyYWNrc7UOFRpAAABkcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgMakfo0DAAAAAAAAAAAAsAQAAAAnBgBAOAAAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dAQBkd2hpdGVsaXN0ZWRfY2FsbGVyAAAAAAAAAGQAAAAAQHoQ81oAAAAAAAAAAAAALAEAAAAnBgBkAAAAZAAAAALslyUQAAAAAHtXPBcAAAAAQjkvEgAAAAACDgCEAAAAAADW5h8BAAAAADlieQIAAAAAAgBkd2lzaF9mb3JfY2hhbmdlAAAAAAAAAAAAAAoAAAAAgPQg5rUAAAAAAAAAAAAAsAQAAAAnBgBAOAAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dCgBkc3Rha2luZ19hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////CwBkdHJlYXN1cmVyAAAAAAAAAAAAAAAAAAAAAAIAAAAAoDGpX+MAAAAAAAAAAAAAsAQAAAAnBgDAiQEAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaO4CWmAAAZc0dDABkbGVhc2VfYWRtaW4AAAAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DQBkZmVsbG93c2hpcF9hZG1pbgAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DgBkZ2VuZXJhbF9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////DwBkYXVjdGlvbl9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////FABkcmVmZXJlbmR1bV9jYW5jZWxsZXIAAAAAAPQBAAAAID2IeS0AAAAAAAAAAAAAsAQAAMCJAQAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////FQBkcmVmZXJlbmR1bV9raWxsZXIAAAAAAAAAAOgDAAAAQGNSv8YBAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////HgBkc21hbGxfdGlwcGVyAAAAAAAAAAAAAAAAAMgAAAAA5AtUAgAAAAAAAAAAAAAACgAAAMCJAQBkAAAACgAAAABJkUkVAGXNHQDKmjsC+boYAAAAAAAqTTEAAAAAAGtZ5///////HwBkYmlnX3RpcHBlcgAAAAAAAAAAAAAAAAAAAGQAAAAA6HZIFwAAAAAAAAAAAAAAZAAAAMCJAQBYAgAAZAAAAABJkUkVAGXNHQDKmjsCaU8/AAAAAAA1ln0AAAAAAOU0wf//////IABkc21hbGxfc3BlbmRlcgAAAAAAAAAAAAAAAAUAAAAAoHJOGAkAAAAAAAAAAAAAYAkAAAAnBgCAcAAAQDgAAADJQzAkAGXNHQDKmjsCCrM6AAAAAABTrXUAAAAAADcLEgAAAAAAIQBkbWVkaXVtX3NwZW5kZXIAAAAAAAAAAAAAADIAAAAAIEqp0QEAAAAAAAAAAAAAYAkAAAAnBgAA4QAAQDgAAABbAfYwAGXNHQDKmjsCIJ5pAAAAAABPd9IAAAAAAP4c5P//////IgBkYmlnX3NwZW5kZXIAAAAAAAAAAAAAAAAAAAMAAAAAID2IeS0AAAAAAAAAAAAAYAkAAAAnBgDAiQEAQDgAAAAAypo7AGXNHQDKmjsCzVhiAAAAAABbJMUAAAAAADVZEQAAAAAADEggQSBsaXN0IG9mIHRyYWNrcy4AXQEgTm90ZTogaWYgdGhlIHRyYWNrcyBhcmUgZHluYW1pYywgdGhlIHZhbHVlIGluIHRoZSBzdGF0aWMgbWV0YWRhdGEgbWlnaHQgYmUgaW5hY2N1cmF0ZS4AAc0OAAwsUnVudGltZUNhbGwgABRWb3RlczUBBMwgVGhlIGNvdW50aW5nIHR5cGUgZm9yIHZvdGVzLiBVc3VhbGx5IGp1c3QgYmFsYW5jZS4UVGFsbHmlCQRMIFRoZSB0YWxseWluZyB0eXBlLgA+AAAcT3JpZ2lucwAAAAAAAAA/AAAkV2hpdGVsaXN0ASRXaGl0ZWxpc3QEPFdoaXRlbGlzdGVkQ2FsbAABBAU8EAQAAAABOQUAAakJAAAB0Q4ABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBAAAAgQm91bnRpZXMBIEJvdW50aWVzECxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTjVDgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ASEJvdW50eURlc2NyaXB0aW9ucwABBAU43Q4EAASAIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGJvdW50eS4APEJvdW50eUFwcHJvdmFscwEARQ4EAATsIEJvdW50eSBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGZ1bmRlZC4AAT0FAAG5CQAkREJvdW50eURlcG9zaXRCYXNlNQFAAI4MAQAAAAAAAAAAAAAAAAToIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBwbGFjaW5nIGEgYm91bnR5IHByb3Bvc2FsLgBgQm91bnR5RGVwb3NpdFBheW91dERlbGF5OBAAAAAABFkBIFRoZSBkZWxheSBwZXJpb2QgZm9yIHdoaWNoIGEgYm91bnR5IGJlbmVmaWNpYXJ5IG5lZWQgdG8gd2FpdCBiZWZvcmUgY2xhaW0gdGhlIHBheW91dC4ASEJvdW50eVVwZGF0ZVBlcmlvZDgQAAQXAxj0IFRoZSB0aW1lIGxpbWl0IGZvciBhIGN1cmF0b3IgdG8gYWN0IGJlZm9yZSBhIGJvdW50eSBleHBpcmVzLgBVASBUaGUgcGVyaW9kIHRoYXQgc3RhcnRzIHdoZW4gYSBjdXJhdG9yIGlzIGFwcHJvdmVkLCBkdXJpbmcgd2hpY2ggdGhleSBtdXN0IGV4ZWN1dGUgb3JVASB1cGRhdGUgdGhlIGJvdW50eSB2aWEgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4gSWYgbWlzc2VkLCB0aGUgYm91bnR5IGV4cGlyZXMsIGFuZCB0aGVVASBjdXJhdG9yIG1heSBiZSBzbGFzaGVkLiBJZiBgQmxvY2tOdW1iZXJGb3I6Ok1BWGAsIGJvdW50aWVzIHN0YXkgYWN0aXZlIGluZGVmaW5pdGVseSy4IHJlbW92aW5nIHRoZSBuZWVkIGZvciBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLgBgQ3VyYXRvckRlcG9zaXRNdWx0aXBsaWVy/QQQIKEHABAZASBUaGUgY3VyYXRvciBkZXBvc2l0IGlzIGNhbGN1bGF0ZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjdXJhdG9yIGZlZS4AOQEgVGhpcyBkZXBvc2l0IGhhcyBvcHRpb25hbCB1cHBlciBhbmQgbG93ZXIgYm91bmRzIHdpdGggYEN1cmF0b3JEZXBvc2l0TWF4YCBhbmRUIGBDdXJhdG9yRGVwb3NpdE1pbmAuAERDdXJhdG9yRGVwb3NpdE1heDEBRAEAIEqp0QEAAAAAAAAAAAAABEkBIE1heGltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBEQ3VyYXRvckRlcG9zaXRNaW4xAUQBAOh2SBcAAAAAAAAAAAAAAARJASBNaW5pbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4ASEJvdW50eVZhbHVlTWluaW11bTUBQADodkgXAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4ASERhdGFEZXBvc2l0UGVyQnl0ZTUBQKCGAQAAAAAAAAAAAAAAAAAEYQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIGJ5dGUgd2l0aGluIHRoZSB0aXAgcmVwb3J0IHJlYXNvbiBvciBib3VudHkgZGVzY3JpcHRpb24uAExNYXhpbXVtUmVhc29uTGVuZ3RoOBAAQAAADIggTWF4aW11bSBhY2NlcHRhYmxlIHJlYXNvbiBsZW5ndGguAGUBIEJlbmNobWFya3MgZGVwZW5kIG9uIHRoaXMgdmFsdWUsIGJlIHN1cmUgdG8gdXBkYXRlIHdlaWdodHMgZmlsZSB3aGVuIGNoYW5naW5nIHRoaXMgdmFsdWUAAeEOAAAAQQAANENoaWxkQm91bnRpZXMBNENoaWxkQm91bnRpZXMcQENoaWxkQm91bnR5Q291bnQBADgQAAAAAAhtASBERVBSRUNBVEVEOiBSZXBsYWNlZCB3aXRoIGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgIHN0b3JhZ2UgaXRlbSBrZWVwaW5nIGRlZGljYXRlZCBjb3VudHNVASBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMuIFdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS4ATFBhcmVudENoaWxkQm91bnRpZXMBAQQFODgQAAAAAAjMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHku4CBNYXAgb2YgcGFyZW50IGJvdW50eSBpbmRleCB0byBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMuAGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXMBAQQFODgQAAAAAARBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuADRDaGlsZEJvdW50aWVzAAEIBQXM5Q4EAASUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgBkQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNWMQABCAUFzN0OBAAMKQEgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggY2hpbGQtYm91bnR5LiBJbmRleGVkIGJ5IGAocGFyZW50X2lkLCBjaGlsZF9pZClgLgBtASBUaGlzIGl0ZW0gcmVwbGFjZXMgdGhlIGBDaGlsZEJvdW50eURlc2NyaXB0aW9uc2Agc3RvcmFnZSBpdGVtIGZyb20gdGhlIFYwIHN0b3JhZ2UgdmVyc2lvbi4AUFYwVG9WMUNoaWxkQm91bnR5SWRzAAEEBTjMBAAUXQEgVGhlIG1hcHBpbmcgb2YgdGhlIGNoaWxkIGJvdW50eSBpZHMgZnJvbSBzdG9yYWdlIHZlcnNpb24gYFYwYCB0byB0aGUgbmV3IGBWMWAgdmVyc2lvbi4AbQEgVGhlIGBWMGAgaWRzIGJhc2VkIG9uIHRvdGFsIGNoaWxkIGJvdW50eSBjb3VudCBbYENoaWxkQm91bnR5Q291bnRgXWAuIFRoZSBgVjFgIHZlcnNpb24gaWRzQQEgYmFzZWQgb24gdGhlIGNoaWxkIGJvdW50eSBjb3VudCBwZXIgcGFyZW50IGJvdW50eSBbYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2BdLmUBIFRoZSBpdGVtIGludGVuZGVkIHNvbGVseSBmb3IgY2xpZW50IGNvbnZlbmllbmNlIGFuZCBub3QgdXNlZCBpbiB0aGUgcGFsbGV0J3MgY29yZSBsb2dpYy4ATENoaWxkcmVuQ3VyYXRvckZlZXMBAQQFODUBQAAAAAAAAAAAAAAAAAAAAAAEAQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZmVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuAAFBBQABvQkACGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtNQFAAOQLVAIAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgAB7Q4AAABCAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQCCQVJBQQADB0BIE1hcHMgYW4gYXNzZXQgdG8gaXRzIGZpeGVkIHBvaW50IHJlcHJlc2VudGF0aW9uIGluIHRoZSBuYXRpdmUgYmFsYW5jZS4ATQEgRS5nLiBgbmF0aXZlX2Ftb3VudCA9IGFzc2V0X2Ftb3VudCAqIENvbnZlcnNpb25SYXRlVG9OYXRpdmU6OjxUPjo6Z2V0KGFzc2V0X2tpbmQpYAABRQUAAcEJAAAB8Q4ABCRBc3NldEtpbmQJBQRFASBUaGUgdHlwZSBmb3IgYXNzZXQga2luZHMgZm9yIHdoaWNoIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgaXMgc2V0LgBDAABITXVsdGlBc3NldEJvdW50aWVzAUhNdWx0aUFzc2V0Qm91bnRpZXMcLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOPUOBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgA0Q2hpbGRCb3VudGllcwABCAUFzAEPBAAMlCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAFhDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsVG90YWxDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsQ2hpbGRCb3VudGllc1ZhbHVlUGVyUGFyZW50AQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAAEG0BIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSB2YWx1ZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBUbyBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHBhcmVudJAgYm91bnR5IHBheW91dCB3aGVuIGF3YXJkaW5nIGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AOEN1cmF0b3JEZXBvc2l0AAEIBQUFDwkPBAAsZQEgVGhlIGNvbnNpZGVyYXRpb24gY29zdCBpbmN1cnJlZCBieSB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yIGZvciBjb21taXR0aW5nIHRvIHRoZSByb2xlLgBxASBEZXRlcm1pbmVkIGJ5IFtgcGFsbGV0OjpDb25maWc6OkNvbnNpZGVyYXRpb25gXS4gSXQgaXMgY3JlYXRlZCB3aGVuIHRoZSBjdXJhdG9yIGFjY2VwdHMgdGhlRQEgcm9sZSwgYW5kIGlzIGVpdGhlciBidXJuZWQgaWYgdGhlIGN1cmF0b3IgbWlzYmVoYXZlcyBvciBjb25zdW1lZCB1cG9uIHN1Y2Nlc3NmdWyEIGNvbXBsZXRpb24gb2YgdGhlIGNoaWxkLS9ib3VudHkuABEBIE5vdGU6IElmIHRoZSBwYXJlbnQgY3VyYXRvciBpcyBhbHNvIGFzc2lnbmVkIHRvIHRoZSBjaGlsZC1ib3VudHksICANASB0aGUgY29uc2lkZXJhdGlvbiBjb3N0IGlzIGNoYXJnZWQgb25seSBvbmNlIOKAlCB3aGVuIHRoZSBjdXJhdG9yICCgIGFjY2VwdHMgdGhlIHJvbGUgZm9yIHRoZSBwYXJlbnQgYm91bnR5LgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AAU0FAAHFCQAMSEJvdW50eVZhbHVlTWluaW11bTUBQADIF6gEAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtNQFAAJQ1dwAAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgBkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAAENDwAIJEFzc2V0S2luZAkFCEEBIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdXNlZCB0byBmdW5kLCByZWZ1bmQgYW5kIHNwZW5kIGZyb20oIGJvdW50aWVzLixCZW5lZmljaWFyeQ0FBEEBIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSBwYXltZW50cy4ARAAADERhcAEMRGFwCEBCdWRnZXRBbGxvY2F0aW9uAQBVBQQAELwgQnVkZ2V0IGFsbG9jYXRpb24gbWFwOiBgQnVkZ2V0S2V5IC0+IFBlcmJpbGxgLgA1ASBLZXlzIG11c3QgY29ycmVzcG9uZCB0byByZWdpc3RlcmVkIGBCdWRnZXRSZWNpcGllbnRzYC4gU3VtIG9mIHZhbHVlcyBtdXN0IGJlKQEgZXhhY3RseSBgUGVyYmlsbDo6b25lKClgICgxMDAlKS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgcmVjZWl2ZSBub3RoaW5nLgBUTGFzdElzc3VhbmNlVGltZXN0YW1wAQAoIAAAAAAAAAAAEKggVGltZXN0YW1wIChtcykgb2YgdGhlIGxhc3QgaXNzdWFuY2UgZHJpcC4AsCBPbiBleGlzdGluZyBjaGFpbnMsIHRoaXMgbXVzdCBiZSBzZWVkZWQgdmlhOQEgW2BtaWdyYXRpb25zOjpNaWdyYXRlVjFUb1YyYF0gdG8gcHJldmVudCBpbmNvcnJlY3QgbWludGluZyBvbiB0aGUgZmlyc3QgZHJpcC4AAVEFAAHJCQAMIFBhbGxldElk4QsgZGFwL2J1ZmYExCBUaGUgcGFsbGV0IElEIHVzZWQgdG8gZGVyaXZlIHRoZSBidWZmZXIgYWNjb3VudC4APElzc3VhbmNlQ2FkZW5jZSggYOoAAAAAAAAYyCBNaW5pbXVtIGVsYXBzZWQgdGltZSAobXMpIGJldHdlZW4gaXNzdWFuY2UgZHJpcHMuAGQgLSBgMGAgPSBkcmlwIGV2ZXJ5IGJsb2NrtCAtIGA2MF8wMDBgID0gZHJpcCBldmVyeSBtaW51dGUgKFJlY29tbWVuZGVkKQCgIFNob3VsZCBiZSBzbWFsbCByZWxhdGl2ZSB0byBlcmEgbGVuZ3RoLgBETWF4RWxhcHNlZFBlckRyaXAoIMAnCQAAAAAAFB0BIFNhZmV0eSBjZWlsaW5nOiBtYXhpbXVtIGVsYXBzZWQgdGltZSAobXMpIGNvbnNpZGVyZWQgaW4gYSBzaW5nbGUgZHJpcC4AFQEgSWYgbW9yZSB0aW1lIGhhcyBwYXNzZWQgdGhhbiB0aGlzLCBlbGFwc2VkIGlzIGNsYW1wZWQgdG8gdGhpcyB2YWx1ZS4ZASBQcmV2ZW50cyBhY2NpZGVudGFsIG92ZXItbWludGluZyBmcm9tIGJ1Z3MsIG1pc2NvbmZpZ3VyYXRpb24sIG9yIGxvbmdgIHBlcmlvZHMgd2l0aG91dCBibG9ja3MuAAERDwAACM0UMQ+FJvUE242YVI2L7jaGWvtI3s12RwMsNPBRNHlFRGJ1ZGdldF9yZWNpcGllbnRzABUPEB0BIEFsbCByZWdpc3RlcmVkIGJ1ZGdldCByZWNpcGllbnRzIHdpdGggdGhlaXIgY3VycmVudCBhbGxvY2F0aW9uIHNoYXJlcy4AHQEgVGhlIGBQZXJiaWxsYCBpcyB0YWtlbiBmcm9tIGBCdWRnZXRBbGxvY2F0aW9uYDsgcmVjaXBpZW50cyBhYnNlbnQgZnJvbZwgdGhlIG1hcCBhcHBlYXIgd2l0aCBgUGVyYmlsbDo6emVybygpYC4AzRQxD4Um9QTbjZhUjYvuNqlnawb9+BLEv3FJDsztnT0cc3RhZ2luZwAEDBUBIEFjY291bnQgdGhhdCBob2xkcyBidXJuZWQvc2xhc2hlZCBmdW5kcyBiZWZvcmUgdGhleSBhcmUgZHJhaW5lZCBpbnRvGQEgdGhlIERBUCBidWZmZXIgYnkgYG9uX2lkbGVgLiBFeHBvc2VkIHRvIGNsaWVudHMgc28gdGhleSBkb24ndCBoYXZlIHRvmCByZS1kZXJpdmUgdGhlIHN1Yi1hY2NvdW50IHRoZW1zZWx2ZXMuAEUAAEhTdGF0ZVRyaWVNaWdyYXRpb24BSFN0YXRlVHJpZU1pZ3JhdGlvbgxATWlncmF0aW9uUHJvY2VzcwEAdQU4AAAAAAAAAAAAAAAAAAAQUCBNaWdyYXRpb24gcHJvZ3Jlc3MuAF0BIFRoaXMgc3RvcmVzIHRoZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCBtaWdyYXRlZCBrZXlzLiBJdCBjYW4gYmUgc2V0IGludG8gbW90aW9uIGFuZCBtb3Zl1CBmb3J3YXJkIGJ5IGFueSBvZiB0aGUgbWVhbnMgcHJvdmlkZWQgYnkgdGhpcyBwYWxsZXQuAChBdXRvTGltaXRzAQBtBQQADNQgVGhlIGxpbWl0cyB0aGF0IGFyZSBpbXBvc2VkIG9uIGF1dG9tYXRpYyBtaWdyYXRpb25zLgDUIElmIHNldCB0byBOb25lLCB0aGVuIG5vIGF1dG9tYXRpYyBtaWdyYXRpb24gaGFwcGVucy4AYFNpZ25lZE1pZ3JhdGlvbk1heExpbWl0cwAAcQUEAAzgIFRoZSBtYXhpbXVtIGxpbWl0cyB0aGF0IHRoZSBzaWduZWQgbWlncmF0aW9uIGNvdWxkIHVzZS4AtCBJZiBub3Qgc2V0LCBubyBzaWduZWQgc3VibWlzc2lvbiBpcyBhbGxvd2VkLgABaQUAAdEJAAQkTWF4S2V5TGVuOBAAAgAAVLQgTWF4aW1hbCBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhIGtleSBjYW4gaGF2ZS4AsCBGUkFNRSBpdHNlbGYgZG9lcyBub3QgbGltaXQgdGhlIGtleSBsZW5ndGguAQEgVGhlIGNvbmNyZXRlIHZhbHVlIG11c3QgdGhlcmVmb3JlIGRlcGVuZCBvbiB5b3VyIHN0b3JhZ2UgdXNhZ2UuWQEgQSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VOTWFwYF0gZm9yIGV4YW1wbGUgY2FuIGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZkUBIGtleXMgd2hpY2ggYXJlIHRoZW4gaGFzaGVkIGFuZCBjb25jYXRlbmF0ZWQsIHJlc3VsdGluZyBpbiBhcmJpdHJhcmlseSBsb25nIGtleXMuAEEBIFVzZSB0aGUgKnN0YXRlIG1pZ3JhdGlvbiBSUEMqIHRvIHJldHJpZXZlIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qga2V5IGluIHlvdXIBASBzdG9yYWdlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL2lzc3Vlcy8xMTY0Mj4AKQEgVGhlIG1pZ3JhdGlvbiB3aWxsIGhhbHQgd2l0aCBhIGBIYWx0ZWRgIGV2ZW50IGlmIHRoaXMgdmFsdWUgaXMgdG9vIHNtYWxsLkkBIFNpbmNlIHRoZXJlIGlzIG5vIHJlYWwgcGVuYWx0eSBmcm9tIG92ZXItZXN0aW1hdGluZywgaXQgaXMgYWR2aXNlZCB0byB1c2UgYSBsYXJnZYAgdmFsdWUuIFRoZSBkZWZhdWx0IGlzIDUxMiBieXRlLgCAIFNvbWUga2V5IGxlbmd0aHMgZm9yIHJlZmVyZW5jZTrQIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlVmFsdWVgXTogMzIgYnl0ZcggLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VNYXBgXTogNjQgYnl0ZeAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VEb3VibGVNYXBgXTogOTYgYnl0ZQBIIEZvciBtb3JlIGluZm8gc2VlRQEgPGh0dHBzOi8vd3d3LnNoYXdudGFicml6aS5jb20vYmxvZy9pbnRlcmFjdGluZy13aXRoLXRoZS1zdWJzdHJhdGUtcnBjLWVuZHBvaW50Lz4AAdkJAAAARgAAPE5vbWluYXRpb25Qb29scwE8Tm9taW5hdGlvblBvb2xzVEBUb3RhbFZhbHVlTG9ja2VkAQA1AUAAAAAAAAAAAAAAAAAAAAAAFIwgVGhlIHN1bSBvZiBmdW5kcyBhY3Jvc3MgYWxsIHBvb2xzLgBxASBUaGlzIG1pZ2h0IGJlIGxvd2VyIGJ1dCBuZXZlciBoaWdoZXIgdGhhbiB0aGUgc3VtIG9mIGB0b3RhbF9iYWxhbmNlYCBvZiBhbGwgW2BQb29sTWVtYmVyc2BdWQEgYmVjYXVzZSBjYWxsaW5nIGBwb29sX3dpdGhkcmF3X3VuYm9uZGVkYCBtaWdodCBkZWNyZWFzZSB0aGUgdG90YWwgc3Rha2Ugb2YgdGhlIHBvb2wncykBIGBib25kZWRfYWNjb3VudGAgd2l0aG91dCBhZGp1c3RpbmcgdGhlIHBhbGxldC1pbnRlcm5hbCBgVW5ib25kaW5nUG9vbGAncy4ALE1pbkpvaW5Cb25kAQA1AUAAAAAAAAAAAAAAAAAAAAAABJwgTWluaW11bSBhbW91bnQgdG8gYm9uZCB0byBqb2luIGEgcG9vbC4ANE1pbkNyZWF0ZUJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAcoCBNaW5pbXVtIGJvbmQgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcG9vbC4AZQEgVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIGRlcG9zaXRvciBtdXN0IHB1dCBhcyB0aGVpciBpbml0aWFsIHN0YWtlIGluIHRoZSBwb29sLCBhcyBhboggaW5kaWNhdGlvbiBvZiAic2tpbiBpbiB0aGUgZ2FtZSIuAGkBIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgd2lsbCBhbHdheXMgZXhpc3QgaW4gdGhlIHN0YWtpbmcgbGVkZ2VyIG9mIHRoZSBwb29sIGJvbmRlZCBhY2NvdW50gCB3aGlsZSBhbGwgb3RoZXIgYWNjb3VudHMgbGVhdmUuACBNYXhQb29scwAAOAQACGkBIE1heGltdW0gbnVtYmVyIG9mIG5vbWluYXRpb24gcG9vbHMgdGhhdCBjYW4gZXhpc3QuIElmIGBOb25lYCwgdGhlbiBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mRCBwb29scyBjYW4gZXhpc3QuADhNYXhQb29sTWVtYmVycwAAOAQACEkBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gZXhpc3QgaW4gdGhlIHN5c3RlbS4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudLggbWVtYmVycyBhcmUgbm90IGJvdW5kIG9uIGEgc3lzdGVtIHdpZGUgYmFzaXMuAFRNYXhQb29sTWVtYmVyc1BlclBvb2wAADgEAAhBASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgbWF5IGJlbG9uZyB0byBwb29sLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50IG9mqCBtZW1iZXJzIGlzIG5vdCBib3VuZCBvbiBhIHBlciBwb29sIGJhc2lzLgBMR2xvYmFsTWF4Q29tbWlzc2lvbgAAWQUEAAxpASBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgY2FuIGJlIGNoYXJnZWQgYnkgYSBwb29sLiBVc2VkIG9uIGNvbW1pc3Npb24gcGF5b3V0cyB0byBib3VuZCUBIHBvb2wgY29tbWlzc2lvbnMgdGhhdCBhcmUgPiBgR2xvYmFsTWF4Q29tbWlzc2lvbmAsIG5lY2Vzc2FyeSBpZiBhIGZ1dHVyZQ0BIGBHbG9iYWxNYXhDb21taXNzaW9uYCBpcyBsb3dlciB0aGFuIHNvbWUgY3VycmVudCBwb29sIGNvbW1pc3Npb25zLgAsUG9vbE1lbWJlcnMAAQQFBB0PBAAMQCBBY3RpdmUgbWVtYmVycy4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AVENvdW50ZXJGb3JQb29sTWVtYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACxCb25kZWRQb29scwABBAU4KQ8EAARoIFN0b3JhZ2UgZm9yIGJvbmRlZCBwb29scy4AVENvdW50ZXJGb3JCb25kZWRQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACxSZXdhcmRQb29scwABBAU4OQ8EAAh1ASBSZXdhcmQgcG9vbHMuIFRoaXMgaXMgd2hlcmUgdGhlcmUgcmV3YXJkcyBmb3IgZWFjaCBwb29sIGFjY3VtdWxhdGUuIFdoZW4gYSBtZW1iZXJzIHBheW91dCBpc1kBIGNsYWltZWQsIHRoZSBiYWxhbmNlIGNvbWVzIG91dCBvZiB0aGUgcmV3YXJkIHBvb2wuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AVENvdW50ZXJGb3JSZXdhcmRQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADxTdWJQb29sc1N0b3JhZ2UAAQQFOD0PBAAIGQEgR3JvdXBzIG9mIHVuYm9uZGluZyBwb29scy4gRWFjaCBncm91cCBvZiB1bmJvbmRpbmcgcG9vbHMgYmVsb25ncyB0byBhKQEgYm9uZGVkIHBvb2wsIGhlbmNlIHRoZSBuYW1lIHN1Yi1wb29scy4gS2V5ZWQgYnkgdGhlIGJvbmRlZCBwb29scyBhY2NvdW50LgBkQ291bnRlckZvclN1YlBvb2xzU3RvcmFnZQEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACBNZXRhZGF0YQEBBAU4WQEEAARcIE1ldGFkYXRhIGZvciB0aGUgcG9vbC4ASENvdW50ZXJGb3JNZXRhZGF0YQEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAChMYXN0UG9vbElkAQA4EAAAAAAE0CBFdmVyIGluY3JlYXNpbmcgbnVtYmVyIG9mIGFsbCBwb29scyBjcmVhdGVkIHNvIGZhci4ATFJldmVyc2VQb29sSWRMb29rdXAAAQQFBDgEABDcIEEgcmV2ZXJzZSBsb29rdXAgZnJvbSB0aGUgcG9vbCdzIGFjY291bnQgaWQgdG8gaXRzIGlkLgB1ASBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igc2xhc2hpbmcgYW5kIG9uIGF1dG9tYXRpYyB3aXRoZHJhdyB1cGRhdGUuIEluIGFsbCBvdGhlciBpbnN0YW5jZXMsIHRoZSUBIHBvb2wgaWQgaXMgdXNlZCwgYW5kIHRoZSBhY2NvdW50cyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgZGVyaXZlZCBmcm9tIGl0LgB0Q291bnRlckZvclJldmVyc2VQb29sSWRMb29rdXABADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABAQ2xhaW1QZXJtaXNzaW9ucwEBBAUEnQUEAgQBASBNYXAgZnJvbSBhIHBvb2wgbWVtYmVyIGFjY291bnQgdG8gdGhlaXIgb3B0ZWQgY2xhaW0gcGVybWlzc2lvbi4AAYEFAAHdCQAMIFBhbGxldElk4QsgcHkvbm9wbHMEhCBUaGUgbm9taW5hdGlvbiBwb29sJ3MgcGFsbGV0IGlkLgBITWF4UG9pbnRzVG9CYWxhbmNlDAQKMB0BIFRoZSBtYXhpbXVtIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gdGhhdCBhbiBgb3BlbmAgcG9vbCBjYW4gaGF2ZS4AVQEgVGhpcyBpcyBpbXBvcnRhbnQgaW4gdGhlIGV2ZW50IHNsYXNoaW5nIHRha2VzIHBsYWNlIGFuZCB0aGUgcG9vbCdzIHBvaW50cy10by1iYWxhbmNlfCByYXRpbyBiZWNvbWVzIGRpc3Byb3BvcnRpb25hbC4AZQEgTW9yZW92ZXIsIHRoaXMgcmVsYXRlcyB0byB0aGUgYFJld2FyZENvdW50ZXJgIHR5cGUgYXMgd2VsbCwgYXMgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9uc1UBIGFyZSBhIGZ1bmN0aW9uIG9mIG51bWJlciBvZiBwb2ludHMsIGFuZCBieSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gZS5nLiAxMCwgeW91IGVuc3VyZWUBIHRoYXQgdGhlIHRvdGFsIG51bWJlciBvZiBwb2ludHMgaW4gdGhlIHN5c3RlbSBhcmUgYXQgbW9zdCAxMCB0aW1lcyB0aGUgdG90YWxfaXNzdWFuY2Ugb2acIHRoZSBjaGFpbiwgaW4gdGhlIGFic29sdXRlIHdvcnNlIGNhc2UuAEkBIEZvciBhIHZhbHVlIG9mIDEwLCB0aGUgdGhyZXNob2xkIHdvdWxkIGJlIGEgcG9vbCBwb2ludHMtdG8tYmFsYW5jZSByYXRpbyBvZiAxMDoxLjEBIFN1Y2ggYSBzY2VuYXJpbyB3b3VsZCBhbHNvIGJlIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBwb29sIGJlaW5nIDkwJSBzbGFzaGVkLgAwTWF4VW5ib25kaW5nOBAgAAAABD0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgdW5ib25kaW5nIGNodW5rcyB0aGF0IGNhbiBleGlzdCBwZXIgbWVtYmVyLgABVQ8ABDRSZXdhcmRDb3VudGVySQUwqCBUaGUgdHlwZSB0aGF0IGlzIHVzZWQgZm9yIHJld2FyZCBjb3VudGVyLgA1ASBUaGUgYXJpdGhtZXRpYyBvZiB0aGUgcmV3YXJkIGNvdW50ZXIgbWlnaHQgc2F0dXJhdGUgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlZQEgYEN1cnJlbmN5OjpCYWxhbmNlYC4gSWYgdGhpcyBoYXBwZW5zLCBvcGVyYXRpb25zIGZhaWxzLiBOb25ldGhlbGVzcywgdGhpcyB0eXBlIHNob3VsZCBiZWUBIGNob3NlbiBzdWNoIHRoYXQgdGhpcyBmYWlsdXJlIGFsbW9zdCBuZXZlciBoYXBwZW5zLCBhcyBpZiBpdCBoYXBwZW5zLCB0aGUgcG9vbCBiYXNpY2FsbHllASBuZWVkcyB0byBiZSBkaXNtYW50bGVkIChvciBhbGwgcG9vbHMgbWlncmF0ZWQgdG8gYSBsYXJnZXIgYFJld2FyZENvdW50ZXJgIHR5cGUsIHdoaWNoIGlzPCBhIFBJVEEgdG8gZG8pLgBhASBTZWUgdGhlIGlubGluZSBjb2RlIGRvY3Mgb2YgYE1lbWJlcjo6cGVuZGluZ19yZXdhcmRzYCBhbmQgYFJld2FyZFBvb2w6OnVwZGF0ZV9yZWNvcmRlZGBlASBmb3IgZXhhbXBsZSBhbmFseXNpcy4gQSBbYHNwX3J1bnRpbWU6OkZpeGVkVTEyOGBdIHNob3VsZCBiZSBmaW5lIGZvciBjaGFpbnMgd2l0aCBiYWxhbmNlUQEgdHlwZXMgc2ltaWxhciB0byB0aGF0IG9mIFBvbGthZG90IGFuZCBLdXNhbWEsIGluIHRoZSBhYnNlbmNlIG9mIHNldmVyZSBzbGFzaGluZyAob3I9ASBwcmV2ZW50ZWQgdmlhIGEgcmVhc29uYWJsZSBgTWF4UG9pbnRzVG9CYWxhbmNlYCksIGZvciBtYW55IG1hbnkgeWVhcnMgdG8gY29tZS4AUAAAJFZvdGVyTGlzdAEkVm90ZXJMaXN0HCRMaXN0Tm9kZXMAAQQFBF0PBAAMgCBBIHNpbmdsZSBub2RlLCB3aXRoaW4gc29tZSBiYWcuAAUBIE5vZGVzIHN0b3JlIGxpbmtzIGZvcndhcmQgYW5kIGJhY2sgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgYmFncy4ATENvdW50ZXJGb3JMaXN0Tm9kZXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTGlzdEJhZ3MAAQQFKGEPBAAMZCBBIGJhZyBzdG9yZWQgaW4gc3RvcmFnZS4AGQEgU3RvcmVzIGEgYEJhZ2Agc3RydWN0LCB3aGljaCBzdG9yZXMgaGVhZCBhbmQgdGFpbCBwb2ludGVycyB0byBpdHNlbGYuAFBOZXh0Tm9kZUF1dG9SZWJhZ2dlZAAABAQACAUBIFBvaW50ZXIgdGhhdCByZW1lbWJlcnMgdGhlIG5leHQgbm9kZSB0aGF0IHdpbGwgYmUgYXV0by1yZWJhZ2dlZC4BASBXaGVuIGBOb25lYCwgdGhlIG5leHQgc2NhbiB3aWxsIHN0YXJ0IGZyb20gdGhlIGxpc3QgaGVhZCBhZ2Fpbi4AEExvY2sAABAEABCEIExvY2sgYWxsIHVwZGF0ZXMgdG8gdGhpcyBwYWxsZXQuADkBIElmIGFueSBub2RlcyBuZWVkcyB1cGRhdGluZywgcmVtb3ZhbCBvciBhZGRpdGlvbiBkdWUgdG8gYSB0ZW1wb3JhcnkgbG9jaywgdGhldCBbYENhbGw6OnJlYmFnYF0gY2FuIGJlIHVzZWQuADBQZW5kaW5nUmViYWcAAQQFBBAEADgdASBBY2NvdW50cyB0aGF0IGZhaWxlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBiYWdzLWxpc3QgZHVlIHRvIGxvY2tpbmcuWQEgVGhlc2UgYWNjb3VudHMgd2lsbCBiZSBwcm9jZXNzZWQgd2l0aCBwcmlvcml0eSBpbiBgb25faWRsZWAgb3IgdmlhIGByZWJhZ2AgZXh0cmluc2ljLgBNASBOb3RlOiBUaGlzIHN0b3JhZ2UgaXMgaW50ZW50aW9uYWxseSB1bmJvdW5kZWQuIFRoZSBmb2xsb3dpbmcgZmFjdG9ycyBtYWtlIGJvdW5kaW5nNCB1bm5lY2Vzc2FyeTpRASAxLiBUaGUgc3RvcmFnZSB1c2FnZSBpcyB0ZW1wb3JhcnkgLSBhY2NvdW50cyBhcmUgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGluIGBvbl9pZGxlYEUBIDIuIFRoZSBwYWxsZXQgaXMgb25seSBsb2NrZWQgZHVyaW5nIHNuYXBzaG90IGdlbmVyYXRpb24sIHdoaWNoIGlzIHdlaWdodC1saW1pdGVkbQEgMy4gUHJvY2Vzc2luZyBoYXBwZW5zIGF0IG11bHRpcGxlIGFjY291bnRzIHBlciBibG9jaywgY2xlYXJpbmcgZXZlbiBsYXJnZSBiYWNrbG9ncyBxdWlja2x5QQEgNC4gQW4gYXJ0aWZpY2lhbCBsaW1pdCBjb3VsZCBiZSBleGhhdXN0ZWQgYnkgYW4gYXR0YWNrZXIsIHByZXZlbnRpbmcgbGVnaXRpbWF0ZQEBICAgIGF1dG8tcmViYWdnaW5nIGZyb20gcHV0dGluZyBhY2NvdW50cyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbgBpASBXZSBkb24ndCBzdG9yZSB0aGUgc2NvcmUgaGVyZSAtIGl0J3MgYWx3YXlzIGZldGNoZWQgZnJvbSBgU2NvcmVQcm92aWRlcmAgd2hlbiBwcm9jZXNzaW5nLGkBIGVuc3VyaW5nIHdlIHVzZSB0aGUgbW9zdCB1cC10by1kYXRlIHNjb3JlIChhY2NvdW50cyBtYXkgaGF2ZSBiZWVuIHNsYXNoZWQsIHJld2FyZGVkLCBldGMudCB3aGlsZSB3YWl0aW5nIGluIHRoZSBxdWV1ZSkuAFhDb3VudGVyRm9yUGVuZGluZ1JlYmFnAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAAbUFAAHlCQAINEJhZ1RocmVzaG9sZHNlDwkZIQMA5AtUAgAAAPOegJcCAAAAqLGX4gIAAACUSS42AwAAACecOpMDAAAAA7zO+gMAAABCwBtuBAAAABtHde4EAAAAOF5VfQUAAABG3GAcBgAAAIk4bM0GAAAAtu6AkgcAAAD+fuNtCAAAAOgbGmIJAAAAsBn0cQoAAAAQNZKgCwAAAM/Jb/EMAAAAQRRtaA4AAADnm9oJEAAAAM7ohdoRAAAAKKnH3xMAAAC7cJMfFgAAAI5AiaAYAAAAgQoJahsAAAA2akiEHgAAAFvTavghAAAAgHyc0CUAAADJVTAYKgAAAL1jwdsuAAAAceBXKTQAAABokJIQOgAAAO3E1KJAAAAAaZN580cAAACP2AwYUAAAAEuviihZAAAAahamP2MAAAAJlRd7bgAAAHjF9Pt6AAAAYsgR54gAAABRv21lmAAAAASOq6SpAAAAVEaY17wAAACRysA20gAAABdfGAHqAAAAvRWyfAQBAABDNY/3IQEAALj8hMhCAQAAmWc8UGcBAAAH5E76jwEAALNBgz69AQAAAn8uou8BAACYg7y5JwIAABZNZSpmAgAAtJUTrKsCAAAtjoIL+QIAAKHmmCxPAwAAphYIDa8DAADMnTfHGQQAAKDVhJWQBAAAQufg1RQFAAACjNcNqAUAAA91Cu9LBgAA6o0uXAIHAADDy5luzQcAALHlcXyvCAAAqiuOH6sJAAC1wSA9wwoAACbQPQ77CwAAcMdZKVYNAADrrdqM2A4AAPeX26qGEAAAz/BEdmUSAAAfJmBxehQAAAmmEb7LFgAAHfvoL2AZAACUOjxgPxwAAIr+icRxHwAAztljxwAjAAADqSrk9iYAAP5y7sVfKwAANsnMaUgwAADa4zJFvzUAAAYqdHDUOwAAfJcy1plCAACEoyRoI0oAAFca1FmHUgAA5/ECYt5bAAANuHYDRGYAAK4EAd7WcQAAfZ6zCLl+AAAeBEp2EI0AADod8GQHnQAA4E+v2syuAABWefAvlcIAAJXDqqma2AAAlnwFJR7xAAAXembWZwwBACjLHx7IKgEA+igvdZhMAQDVfch0PHIBAH3Es/sinAEANlzedMfKAQCeuOFCs/4BAAwxrlR/OAIAX+EB6NV4AgBjc9p+dMACAFHRpg0uEAMAx+mkaO1oAwBhwJH3t8sDAL8nobewOQQAexSZlBu0BACFI+0iYTwFAGml1MUS1AUA7IyTTe98BgD1qpAb6DgHAIy+XdsmCggAApeM4RPzCAD64xRDXfYJAN3xLbr+FgsALrrcb0pYDAAMVRjE8r0NAPC7VDEVTA8ASY6Ga0YHEQCywVPen/QSACeKL7LOGRUAsjmfhCR9FwDhmecEqiUaALoT9aszGx0AJkeFzHhmIACIv4A/LREkAByYI/gdJigAzMQi1FCxLADwiIIFKMAxADZ8bX6JYTcAbpMp0wqmPQCMvGwTIqBEAABw8ypcZEwAtDuEaZkJVQCAtKvkUKleAKDNqXnbX2kATMJ/TMdMdQDQrA66NJOCAEg+DM89WpEAaMaOdGnNoQAoHm+lKx20AJipIyZ0f8gA8Jp0Y00w3wCAzfxLjXL4AJAUYC2akBQB8LQT2UXdMwEglzWWwbRWAVDc+66tfX0B4BGYuUeqqAEwx+4Wu7nYASBuSIaXOQ4CoPpLHXLHSQLAEXFwtRKMAoCKFkOm3tUCwPgjsaIEKAOAr1lwonaDA8BvLYf/QekDQJN/rI+SWgQAkQlxF7bYBEAP31shIGUFAEnBSURuAQYAjrym5WyvBgBZVoaFHHEHgGiqNKS3SAiAoeKeUrk4CQC9q+iA5EMKACpytCBMbQuA8cATM1y4DACgPMvc4ygOgLhimp4gww8A3laT0sqLEQBdf0yTI4gTABqH3zUEvhUAp85LhO8zGAABEPvqJPEaAIAq5dG1/R0AIqE0YJ1iIQBEIWvw2iklAAJh8YKPXikAZiDPhR4NLgCEEBlSUkMzAKDBj8qEEDkAJq0Uk8yFPwDQzSRmL7ZGAJzhmhzatk4AWMzCDF+fVwAgCnV4+4lhADC7u9bkk2wAYMun3J7deAC4O8BCW4uGALiGI2FkxZUA+PFf3JO4pgAgapHA1pa5ANjv4o/Al84AaCmb9S755f//////////rNAgVGhlIGxpc3Qgb2YgdGhyZXNob2xkcyBzZXBhcmF0aW5nIHRoZSB2YXJpb3VzIGJhZ3MuAEkBIElkcyBhcmUgc2VwYXJhdGVkIGludG8gdW5zb3J0ZWQgYmFncyBhY2NvcmRpbmcgdG8gdGhlaXIgc2NvcmUuIFRoaXMgc3BlY2lmaWVzIHRoZWEBIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgYmFncy4gQW4gaWQncyBiYWcgaXMgdGhlIGxhcmdlc3QgYmFnIGZvciB3aGljaCB0aGUgaWQncyBzY29yZbggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGl0cyB1cHBlciB0aHJlc2hvbGQuAGUBIFdoZW4gaWRzIGFyZSBpdGVyYXRlZCwgaGlnaGVyIGJhZ3MgYXJlIGl0ZXJhdGVkIGNvbXBsZXRlbHkgYmVmb3JlIGxvd2VyIGJhZ3MuIFRoaXMgbWVhbnNZASB0aGF0IGl0ZXJhdGlvbiBpcyBfc2VtaS1zb3J0ZWRfOiBpZHMgb2YgaGlnaGVyIHNjb3JlIHRlbmQgdG8gY29tZSBiZWZvcmUgaWRzIG9mIGxvd2VyLQEgc2NvcmUsIGJ1dCBwZWVyIGlkcyB3aXRoaW4gYSBwYXJ0aWN1bGFyIGJhZyBhcmUgc29ydGVkIGluIGluc2VydGlvbiBvcmRlci4AaCAjIEV4cHJlc3NpbmcgdGhlIGNvbnN0YW50AE0BIFRoaXMgY29uc3RhbnQgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgaW5jcmVhc2luZyBvcmRlci4gRHVwbGljYXRlIGl0ZW1zIGFyZSBub3QsIHBlcm1pdHRlZC4AQQEgVGhlcmUgaXMgYW4gaW1wbGllZCB1cHBlciBsaW1pdCBvZiBgU2NvcmU6Ok1BWGA7IHRoYXQgdmFsdWUgZG9lcyBub3QgbmVlZCB0byBiZSEBIHNwZWNpZmllZCB3aXRoaW4gdGhlIGJhZy4gRm9yIGFueSB0d28gdGhyZXNob2xkIGxpc3RzLCBpZiBvbmUgZW5kcyB3aXRoMQEgYFNjb3JlOjpNQVhgLCB0aGUgb3RoZXIgb25lIGRvZXMgbm90LCBhbmQgdGhleSBhcmUgb3RoZXJ3aXNlIGVxdWFsLCB0aGUgdHdvfCBsaXN0cyB3aWxsIGJlaGF2ZSBpZGVudGljYWxseS4AOCAjIENhbGN1bGF0aW9uAFUBIEl0IGlzIHJlY29tbWVuZGVkIHRvIGdlbmVyYXRlIHRoZSBzZXQgb2YgdGhyZXNob2xkcyBpbiBhIGdlb21ldHJpYyBzZXJpZXMsIHN1Y2ggdGhhdEEBIHRoZXJlIGV4aXN0cyBzb21lIGNvbnN0YW50IHJhdGlvIHN1Y2ggdGhhdCBgdGhyZXNob2xkW2sgKyAxXSA9PSAodGhyZXNob2xkW2tdICrQIGNvbnN0YW50X3JhdGlvKS5tYXgodGhyZXNob2xkW2tdICsgMSlgIGZvciBhbGwgYGtgLgBZASBUaGUgaGVscGVycyBpbiB0aGUgYC91dGlscy9mcmFtZS9nZW5lcmF0ZS1iYWdzYCBtb2R1bGUgY2FuIHNpbXBsaWZ5IHRoaXMgY2FsY3VsYXRpb24uACwgIyBFeGFtcGxlcwBRASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5pc19lbXB0eSgpYCwgdGhlbiBhbGwgaWRzIGFyZSBwdXQgaW50byB0aGUgc2FtZSBiYWcsIGFuZLAgICBpdGVyYXRpb24gaXMgc3RyaWN0bHkgaW4gaW5zZXJ0aW9uIG9yZGVyLmEBIC0gSWYgYEJhZ1RocmVzaG9sZHM6OmdldCgpLmxlbigpID09IDY0YCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0bxEBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgZXF1YWwgdG8gMi5lASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSAyMDBgLCBhbmQgdGhlIHRocmVzaG9sZHMgYXJlIGRldGVybWluZWQgYWNjb3JkaW5nIHRvWQEgICB0aGUgcHJvY2VkdXJlIGdpdmVuIGFib3ZlLCB0aGVuIHRoZSBjb25zdGFudCByYXRpbyBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIDEuMjQ4LmEBIC0gSWYgdGhlIHRocmVzaG9sZCBsaXN0IGJlZ2lucyBgWzEsIDIsIDMsIC4uLl1gLCB0aGVuIGFuIGlkIHdpdGggc2NvcmUgMCBvciAxIHdpbGwgZmFsbPAgICBpbnRvIGJhZyAwLCBhbiBpZCB3aXRoIHNjb3JlIDIgd2lsbCBmYWxsIGludG8gYmFnIDEsIGV0Yy4AMCAjIE1pZ3JhdGlvbgBhASBJbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGxpc3QgZXZlciBjaGFuZ2VzLCBhIGNvcHkgb2YgdGhlIG9sZCBiYWdzIGxpc3QgbXVzdCBiZSByZXRhaW5lZC5dASBXaXRoIHRoYXQgYExpc3Q6Om1pZ3JhdGVgIGNhbiBiZSBjYWxsZWQsIHdoaWNoIHdpbGwgcGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgbWlncmF0aW9uLgBQTWF4QXV0b1JlYmFnUGVyQmxvY2s4EAoAAAAQNQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBtYXkgYmUgcmUtYmFnZ2VkIGF1dG9tYXRpY2FsbHkgaW4gYG9uX2lkbGVgLgBRASBBIHZhbHVlIG9mIGAwYCAob2J0YWluZWQgYnkgY29uZmlndXJpbmcgYHR5cGUgTWF4QXV0b1JlYmFnUGVyQmxvY2sgPSAoKTtgKSBkaXNhYmxlczQgdGhlIGZlYXR1cmUuAAFpDwAEFFNjb3JlKAQJASBUaGUgdHlwZSB1c2VkIHRvIGRpY3RhdGUgYSBub2RlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIG90aGVyIG5vZGVzLgR03XAtpG9316z3f1pI1K99EkZQnSHNsSbousVoE8SinhhzY29yZXMEDHdobwRxDxiwIEdldCB0aGUgY3VycmVudCBgc2NvcmVgIG9mIGEgZ2l2ZW4gYWNjb3VudC4AYQEgUmV0dXJucyBgKGN1cnJlbnQsIHJlYWxfc2NvcmUpYCwgdGhlIGZvcm1lciBiZWluZyB0aGUgY3VycmVudCBzY29yZSB0aGF0IHRoaXMgcGFsbGV0IGlzWQEgYXdhcmUgb2YsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHVwIHRvIGRhdGUsIGFuZCB0aGUgbGF0dGVyIGJlaW5nIHRoZSByZWFsIHNjb3JlLCBhczAgcHJvdmlkZWQgYnkdASBJZiB0aGUgdHdvIGRpZmZlciwgaXQgbWVhbnMgdGhpcyBub2RlIGlzIGVsaWdpYmxlIGZvciBbYENhbGw6OnJlYmFnYF0uAFIAAEBEZWxlZ2F0ZWRTdGFraW5nAUBEZWxlZ2F0ZWRTdGFraW5nEChEZWxlZ2F0b3JzAAEEBQR1DwQAEKQgTWFwIG9mIERlbGVnYXRvcnMgdG8gdGhlaXIgYERlbGVnYXRpb25gLgBhASBJbXBsZW1lbnRhdGlvbiBub3RlOiBXZSBhcmUgbm90IHVzaW5nIGEgZG91YmxlIG1hcCB3aXRoIGBkZWxlZ2F0b3JgIGFuZCBgYWdlbnRgIGFjY291bnRhASBhcyBrZXlzIHNpbmNlIHdlIHdhbnQgdG8gcmVzdHJpY3QgZGVsZWdhdG9ycyB0byBkZWxlZ2F0ZSBvbmx5IHRvIG9uZSBhY2NvdW50IGF0IGEgdGltZS4AUENvdW50ZXJGb3JEZWxlZ2F0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAGEFnZW50cwABBAUEeQ8EAASIIE1hcCBvZiBgQWdlbnRgIHRvIHRoZWlyIGBMZWRnZXJgLgBAQ291bnRlckZvckFnZW50cwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAAB6QkACCBQYWxsZXRJZOELIHB5L2Rsc3RrBJAgSW5qZWN0ZWQgaWRlbnRpZmllciBmb3IgdGhlIHBhbGxldC4ATFNsYXNoUmV3YXJkRnJhY3Rpb25ZBRCAlpgABFEBIEZyYWN0aW9uIG9mIHRoZSBzbGFzaCB0aGF0IGlzIHJld2FyZGVkIHRvIHRoZSBjYWxsZXIgb2YgcGVuZGluZyBzbGFzaCB0byB0aGUgYWdlbnQuAAF9DwAAAFMAADxTdGFraW5nUmNDbGllbnQBPFN0YWtpbmdSY0NsaWVudAxcSW5jb21wbGV0ZVNlc3Npb25SZXBvcnQAAL0FBAAEHQEgQW4gaW5jb21wbGV0ZSBpbmNvbWluZyBzZXNzaW9uIHJlcG9ydCB0aGF0IHdlIGhhdmUgbm90IGFjdGVkIHVwb24geWV0LgBwTGFzdFNlc3Npb25SZXBvcnRFbmRpbmdJbmRleAAAOAQAIPwgVGhlIGxhc3Qgc2Vzc2lvbiByZXBvcnQncyBgZW5kX2luZGV4YCB0aGF0IHdlIGhhdmUgYWN0ZWQgdXBvbi4AYQEgVGhpcyBhbGxvd3MgdGhpcyBwYWxsZXQgdG8gZW5zdXJlIGEgc2VxdWVudGlhbGx5IGluY3JlYXNpbmcgc2VxdWVuY2Ugb2Ygc2Vzc2lvbiByZXBvcnRzTCBwYXNzZWQgdG8gc3Rha2luZy4AXQEgTm90ZSB0aGF0IHdpdGggdGhlIFhDTSBiZWluZyB0aGUgYmFja2JvbmUgb2YgY29tbXVuaWNhdGlvbiwgd2UgaGF2ZSBhIGd1YXJhbnRlZSBvbiB0aGVhASBvcmRlcmluZyBvZiBtZXNzYWdlcy4gQXMgbG9uZyBhcyB0aGUgUkMgc2VuZHMgc2Vzc2lvbiByZXBvcnRzIGluIG9yZGVyLCB3ZSBfZXZlbnR1YWxseV/AIHJlY2VpdmUgdGhlbSBpbiB0aGUgc2FtZSBjb3JyZWN0IG9yZGVyIGFzIHdlbGwuAFBPdXRnb2luZ1ZhbGlkYXRvclNldAAAgQ8EABDYIEEgdmFsaWRhdG9yIHNldCB0aGF0IGlzIG91dGdvaW5nLCBhbmQgc2hvdWxkIGJlIHNlbnQuAHUBIFRoaXMgd2lsbCBiZSBhdHRlbXB0ZWQgdG8gYmUgc2VudCwgcG9zc2libHkgb24gZXZlcnkgYG9uX2luaXRpYWxpemVgIGNhbGwsIHVudGlsIGl0IGlzIHNlbnQs9CBvciB0aGUgc2Vjb25kIHZhbHVlIHJlYWNoZXMgemVybywgYXQgd2hpY2ggcG9pbnQgd2UgZHJvcCBpdC4AAbkFAAHtCQAEKEtleURlcG9zaXQ1AUAA6HZIFwAAAAAAAAAAAAAABC0BIERlcG9zaXQgaGVsZCB3aGVuIGEgdmFsaWRhdG9yIHNldHMgc2Vzc2lvbiBrZXlzLiBSZWxlYXNlZCBvbiBgcHVyZ2Vfa2V5c2AuAAGJDwAAAFQAAEhNdWx0aUJsb2NrRWxlY3Rpb24BSE11bHRpQmxvY2tFbGVjdGlvbhwUUm91bmQBADgQAAAAABisIEludGVybmFsIGNvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2Ygcm91bmRzLgBVASBUaGlzIGlzIHVzZWZ1bCBmb3IgZGUtZHVwbGljYXRpb24gb2YgdHJhbnNhY3Rpb25zIHN1Ym1pdHRlZCB0byB0aGUgcG9vbCwgYW5kIGdlbmVyYWxsIGRpYWdub3N0aWNzIG9mIHRoZSBwYWxsZXQuAE0BIFRoaXMgaXMgbWVyZWx5IGluY3JlbWVudGVkIG9uY2UgcGVyIGV2ZXJ5IHRpbWUgdGhhdCBhbiB1cHN0cmVhbSBgZWxlY3RgIGlzIGNhbGxlZC4AMEN1cnJlbnRQaGFzZQEA5QUEAAQ8IEN1cnJlbnQgcGhhc2UuADhEZXNpcmVkVGFyZ2V0cwABBAU4OAQABMwgRGVzaXJlZCBudW1iZXIgb2YgdGFyZ2V0cyB0byBlbGVjdCBmb3IgdGhpcyByb3VuZC4ASFBhZ2VkVm90ZXJTbmFwc2hvdAABCAUFzI0PBAAEAQEgUGFnaW5hdGVkIHZvdGVyIHNuYXBzaG90LiBBdCBtb3N0IFtgVDo6UGFnZXNgXSBrZXlzIHdpbGwgZXhpc3QuAFhQYWdlZFZvdGVyU25hcHNob3RIYXNoAAEIBQXMPAQADDEBIFNhbWUgYXMgW2BQYWdlZFZvdGVyU25hcHNob3RgXSwgYnV0IGl0IHdpbGwgc3RvcmUgdGhlIGhhc2ggb2YgdGhlIHNuYXBzaG90LgD8IFRoZSBoYXNoIGlzIGdlbmVyYXRlZCB1c2luZyBbYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpIYXNoaW5nYF0uAExQYWdlZFRhcmdldFNuYXBzaG90AAEIBQXMnQ8EAAxsIFBhZ2luYXRlZCB0YXJnZXQgc25hcHNob3QuAFkBIEZvciB0aGUgdGltZSBiZWluZywgc2luY2Ugd2UgYXNzdW1lIG9uZSBwYWdlcyBvZiB0YXJnZXRzLCBhdCBtb3N0IE9ORSBrZXkgd2lsbCBleGlzdC4AXFBhZ2VkVGFyZ2V0U25hcHNob3RIYXNoAAEIBQXMPAQADDUBIFNhbWUgYXMgW2BQYWdlZFRhcmdldFNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgAB3QUAAfUJABg0VW5zaWduZWRQaGFzZTgQlgAAAASAIER1cmF0aW9uIG9mIHRoZSB1bnNpZ25lZCBwaGFzZS4ALFNpZ25lZFBoYXNlOBAsAQAABHggRHVyYXRpb24gb2YgdGhlIHNpZ25lZCBwaGFzZS4AVFNpZ25lZFZhbGlkYXRpb25QaGFzZTgQAAIAABCkIER1cmF0aW9uIG9mIHRoZSBzaW5nZWQgdmFsaWRhdGlvbiBwaGFzZS4AVQEgVGhlIGR1cmF0aW9uIG9mIHRoaXMgc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gYFQ6OlBhZ2VzYCwgYW5kIHRoZXJlIGlzIG5vIHBvaW50IGluIGl0AQEgYmVpbmcgbW9yZSB0aGFuIGBTaWduZWRQaGFzZTo6TWF4U3VibWlzc2lvbjo6Z2V0KCkgKiBUOjpQYWdlc2AuAFRWb3RlclNuYXBzaG90UGVyQmxvY2s4EMACAAAEyCBUaGUgbnVtYmVyIG9mIHNuYXBzaG90IHZvdGVycyB0byBmZXRjaCBwZXIgYmxvY2suAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrOBDQBwAABMwgVGhlIG51bWJlciBvZiBzbmFwc2hvdCB0YXJnZXRzIHRvIGZldGNoIHBlciBibG9jay4AFFBhZ2VzOBAgAAAAGFQgVGhlIG51bWJlciBvZiBwYWdlcy4AAQEgVGhlIHNuYXBzaG90IGlzIGNyZWF0ZWQgd2l0aCB0aGlzIG1hbnkga2V5cyBpbiB0aGUgc3RvcmFnZSBtYXAuAFEBIFRoZSBzb2x1dGlvbnMgbWF5IGNvbnRhaW4gYXQgTU9TVCB0aGlzIG1hbnkgcGFnZXMsIGJ1dCBsZXNzIHBhZ2VzIGFyZSBhY2NlcHRhYmxlIGFzGCB3ZWxsLgABoQ8AAABVAABoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIBaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyHDxRdWV1ZWRTb2x1dGlvblgAAQgFBcztBQQAHD0BIFRoZSBgWGAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBpASBUaGUgdHdvIHZhcmlhbnRzIG9mIHRoaXMgc3RvcmFnZSBpdGVtIGlzIHRvIGF2b2lkIHRoZSBuZWVkIG9mIGNvcHlpbmcuIFJlY2FsbCB0aGF0IG9uY2UgYXEBIGBWZXJpZnlpbmdTb2x1dGlvbmAgaXMgYmVpbmcgcHJvY2Vzc2VkLCBpdCBuZWVkcyB0byB3cml0ZSBpdHMgcGFydGlhbCBzdXBwb3J0cyAqc29tZXdoZXJlKi5pASBXcml0aW5nIHRoZXNlcyBzdXBwb3J0cyBvbiB0b3Agb2YgYSAqZ29vZCogcXVldWVkIHN1cHBvcnRzIGlzIHdyb25nLCBzaW5jZSB3ZSBtaWdodCBiYWlsLnUBIFdyaXRpbmcgdGhlbSB0byBhIGJ1Z2dlciBhbmQgY29weWluZyBhdCB0aGUgbmVkIGlzIHNsaWdodGx5IGJldHRlciwgYnV0IGV4cGVuc2l2ZS4gVGhpcyBmbGFnfCBzeXN0ZW0gaXMgYmVzdCBvZiBib3RoIHdvcmxkcy4APFF1ZXVlZFNvbHV0aW9uWQABCAUFzO0FBAAEPQEgVGhlIGBZYCB2YXJpYW50IG9mIHRoZSBjdXJyZW50IHF1ZXVlZCBzb2x1dGlvbi4gTWlnaHQgYmUgdGhlIHZhbGlkIG9uZSBvciBub3QuAEhRdWV1ZWRWYWxpZFZhcmlhbnQBAQQFOKUPBAEIXQEgUG9pbnRlciB0byB0aGUgdmFyaWFudCBvZiBbYFF1ZXVlZFNvbHV0aW9uWGBdIG9yIFtgUXVldWVkU29sdXRpb25ZYF0gdGhhdCBpcyBjdXJyZW50bHkcIHZhbGlkLgBYUXVldWVkU29sdXRpb25CYWNraW5ncwABCAUFzKkPBAAg1CBUaGUgYChhbW91bnQsIGNvdW50KWAgb2YgYmFja2luZ3MsIGRpdmlkZWQgcGVyIHBhZ2UuAHEBIFRoaXMgaXMgc3RvcmVkIGJlY2F1c2UgaW4gdGhlIGxhc3QgYmxvY2sgb2YgdmVyaWZpY2F0aW9uIHdlIG5lZWQgdGhlbSB0byBjb21wdXRlIHRoZSBzY29yZSyYIGFuZCBjaGVjayBgTWF4QmFja2Vyc1Blcldpbm5lckZpbmFsYC4AcQEgVGhpcyBjYW4gb25seSBldmVyIGxpdmUgZm9yIHRoZSBpbnZhbGlkIHZhcmlhbnQgb2YgdGhlIHNvbHV0aW9uLiBPbmNlIGl0IGlzIHZhbGlkLCB3ZSBkb24ndBUBIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiBhbnltb3JlOyB0aGUgc2NvcmUgaXMgYWxyZWFkeSBjb21wdXRlZCBvbmNlIGlu9CBbYFF1ZXVlZFNvbHV0aW9uU2NvcmVgXSwgYW5kIHRoZSBiYWNraW5nIGNvdW50cyBhcmUgY2hlY2tlZC4ATFF1ZXVlZFNvbHV0aW9uU2NvcmUAAQQFOA0GBAAM2CBUaGUgc2NvcmUgb2YgdGhlIHZhbGlkIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvbmBdLgC4IFRoaXMgb25seSBldmVyIGxpdmVzIGZvciB0aGUgYHZhbGlkYCB2YXJpYW50LgAwTWluaW11bVNjb3JlAAANBgQABFUBIFRoZSBtaW5pbXVtIHNjb3JlIHRoYXQgZWFjaCBzb2x1dGlvbiBtdXN0IGF0dGFpbiBpbiBvcmRlciB0byBiZSBjb25zaWRlcmVkIGZlYXNpYmxlLgA0U3RhdHVzU3RvcmFnZQEAuQ8EAQR0IFN0b3JhZ2UgaXRlbSBmb3IgW2BTdGF0dXNgXS4AAREGAAH5CQAMYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbDgQ5FcAABQdASBNYXhpbXVtIG51bWJlciBvZiBiYWNrZXJzLCBwZXIgd2lubmVyLCBhbW9uZyBhbGwgcGFnZXMgb2YgYW4gZWxlY3Rpb24uAAUBIFRoaXMgY2FuIG9ubHkgYmUgY2hlY2tlZCBhdCB0aGUgdmVyeSBmaW5hbCBzdGVwIG9mIHZlcmlmaWNhdGlvbi4AXQEgTk9URTogYXQgdGhlIG1vbWVudCwgd2UgZG9uJ3QgY2hlY2sgdGhpcywgYW5kIGl0IGlzIGluIHBsYWNlIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4ATE1heEJhY2tlcnNQZXJXaW5uZXI4EMACAAAExCBNYXhpbXVtIG51bWJlciBvZiBiYWNrZXJzLCBwZXIgd2lubmVyLCBwZXIgcGFnZS4ARE1heFdpbm5lcnNQZXJQYWdlOBDoAwAACGEBIE1heGltdW0gbnVtYmVyIG9mIHN1cHBvcnRzIChha2EuIHdpbm5lcnMvdmFsaWRhdG9ycy90YXJnZXRzKSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbkwgYSBwYWdlIG9mIHJlc3VsdHMuAAAAAFYAAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAABFQYAAAAAAABXAABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkAWBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQQNEludnVsbmVyYWJsZXMBAJUPBAAkFQEgQWNjb3VudHMgd2hpdGVsaXN0ZWQgYnkgZ292ZXJuYW5jZSB0byBhbHdheXMgc3VibWl0IHRoZWlyIHNvbHV0aW9ucy4AcCBUaGV5IGFyZSBkaWZmZXJlbnQgaW4gdGhhdDoA/CAqIFRoZXkgYWx3YXlzIHBheSBhIGZpeGVkIGRlcG9zaXQgZm9yIHN1Ym1pc3Npb24sIHNwZWNpZmllZCBiefQgICBbYENvbmZpZzo6SW52dWxuZXJhYmxlRGVwb3NpdGBdLiBUaGV5IHBheSBubyBwYWdlIGRlcG9zaXQuaQEgKiBJZiBfZWplY3RlZF8gYnkgYmV0dGVyIHNvbHV0aW9uIGZyb20gW2BTb3J0ZWRTY29yZXNgXSwgdGhleSB3aWxsIGdldCB0aGVpciBmdWxsIGRlcG9zaXQgICAgYmFjay4JASAqIFRoZXkgYWx3YXlzIGdldCB0aGVpciB0eC1mZWUgYmFjayBldmVuIGlmIHRoZXkgYXJlIF9kaXNjYXJkZWRfLgAwU29ydGVkU2NvcmVzAQEEBTi9DwQAAABEU3VibWlzc2lvblN0b3JhZ2UAAQwFBQXJDyEGBAAE7CBUcmlwbGUgbWFwIGZyb20gKHJvdW5kLCBhY2NvdW50LCBwYWdlKSB0byBhIHNvbHV0aW9uIHBhZ2UuAGRTdWJtaXNzaW9uTWV0YWRhdGFTdG9yYWdlAAEIBQUdDc0PBAAQ2CBNYXAgZnJvbSBhY2NvdW50IHRvIHRoZSBtZXRhZGF0YSBvZiB0aGVpciBzdWJtaXNzaW9uLgBxASBpbnZhcmlhbnQ6IGZvciBhbnkgS2V5MSBvZiB0eXBlIGBBY2NvdW50SWRgIGluIFtgU3VibWlzc2lvbnNgXSwgdGhpcyBzdG9yYWdlIG1hcCBhbHNvIGhhcyBhHCB2YWx1ZS4AAe0GAAEJCgAAAdkPAAAEdwtlUEJoC88FOdIE31nTKImvpgvJyUyOJHbtm6qpMAUsZGVwb3NpdF9mb3IIDHdobwQUcGFnZXM4NQEUEQEgR2V0IHRoZSBkZXBvc2l0IGFtb3VudCB0aGF0IHdpbGwgYmUgaGVsZCBmb3IgYSBzb2x1dGlvbiBvZiBgcGFnZXNgLgBBASBUaGlzIGFsbG93cyBhbiBvZmZjaGFpbiBhcHBsaWNhdGlvbiB0byBrbm93IHdoYXQgW2BDb25maWc6OkRlcG9zaXRQZXJQYWdlYF0gYW5kZQEgW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYXJlIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJdCBhbHNvIHRha2VzIGludG8gYWNjb3VudCBpZiBgd2hvYCBpc2ggW2BJbnZ1bG5lcmFibGVzYF0gb3Igbm90LgBYAAAcU3Rha2luZwEcU3Rha2luZ9g4VmFsaWRhdG9yQ291bnQBADgQAAAAAAScIFRoZSBpZGVhbCBudW1iZXIgb2YgYWN0aXZlIHZhbGlkYXRvcnMuABhCb25kZWQAAQQFBAQEAAwBASBNYXAgZnJvbSBhbGwgbG9ja2VkICJzdGFzaCIgYWNjb3VudHMgdG8gdGhlIGNvbnRyb2xsZXIgYWNjb3VudC4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AQE1pbk5vbWluYXRvckJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIG5vbWluYXRvci4AQE1pblZhbGlkYXRvckJvbmQBADUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIHZhbGlkYXRvci4ASE1pbmltdW1BY3RpdmVTdGFrZQEANQFAAAAAAAAAAAAAAAAAAAAAAAQRASBUaGUgbWluaW11bSBhY3RpdmUgbm9taW5hdG9yIHN0YWtlIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgZWxlY3Rpb24uADRNaW5Db21taXNzaW9uAQBZBRAAAAAADOggVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuAIAgSWYgc2V0IHRvIGAwYCwgbm8gbGltaXQgZXhpc3RzLgA0TWF4Q29tbWlzc2lvbgEAWQUQAMqaOwzAIFRoZSBtYXhpbXVtIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuABkBIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIGBQZXJiaWxsOjpvbmUoKWAgKDEwMCUpLCBpLmUuIG5vIHVwcGVyIGxpbWl0LgBMRGlzYWJsZU1pbnRpbmdHdWFyZAAAOAQAHD0BIFNhZmV0eSBndWFyZDogdGhlIGVyYSBmcm9tIHdoaWNoIGxlZ2FjeSBtaW50aW5nIGlzIHBlcm1hbmVudGx5IGRpc2FibGVkIG9uIHRoZRUBIHBheW91dCBzaWRlLiAqKklycmV2ZXJzaWJsZSoqIOKAlCBvbmNlIHNldCwgc2hvdWxkIG5ldmVyIGJlIGNsZWFyZWQuADEBIFNlcGFyYXRlIGZyb20gW2BDb25maWc6OkRpc2FibGVNaW50aW5nYF0gd2hpY2ggY29udHJvbHMgdGhlIGBlbmRfZXJhYCBwYXRoLjUBIFRoaXMgc3RvcmFnZSBndWFyZHMgYWdhaW5zdCBtaW50aW5nIGR1cmluZyBwYXlvdXQgZm9yIGVyYXMgdGhhdCB3ZXJlIGNyZWF0ZWRJASBpbiBEQVAgbW9kZS4gU2V0IGF1dG9tYXRpY2FsbHkgYnkgYGVuZF9lcmFfZGFwYCBvbiBmaXJzdCBzdWNjZXNzZnVsIHBvdCBzbmFwc2hvdC4ZASBJbiBsZWdhY3kgbW9kZSAoS3VzYW1hKSwgdGhpcyBpcyBuZXZlciBzZXQgYW5kIHRoZSBndWFyZCBpcyBpbmFjdGl2ZS4AQE9wdGltdW1TZWxmU3Rha2UBADUBQAAAAAAAAAAAAAAAAAAAAAAQtCBPcHRpbXVtIHNlbGYtc3Rha2UgdGhyZXNob2xkIGZvciB2YWxpZGF0b3JzLgAhASBCZWxvdyB0aGlzIHRocmVzaG9sZCwgdGhlIGluY2VudGl2ZSB3ZWlnaHQgZ3Jvd3MgYXMgYHNxcnQoc2VsZl9zdGFrZSlgLuggQWJvdmUgaXQsIGdyb3d0aCBpcyBkYW1wZW5lZCBieSBbYFNlbGZTdGFrZVNsb3BlRmFjdG9yYF0uAEBIYXJkQ2FwU2VsZlN0YWtlAQA1AUAAAAAAAAAAAAAAAAAAAAAADLAgSGFyZCBjYXAgb24gZWZmZWN0aXZlIHZhbGlkYXRvciBzZWxmLXN0YWtlLgA1ASBTZWxmLXN0YWtlIGFib3ZlIHRoaXMgdmFsdWUgcmVjZWl2ZXMgbm8gYWRkaXRpb25hbCByZXdhcmQgYmVuZWZpdCAocGxhdGVhdSkuAFBTZWxmU3Rha2VTbG9wZUZhY3RvcgEAWQUQAAAAAAxlASBTbG9wZSBmYWN0b3IgY29udHJvbGxpbmcgdGhlIGRpc2NvdXJhZ2VtZW50IHJhdGUgZm9yIHNlbGYtc3Rha2UgYmV0d2VlbiBvcHRpbXVtIGFuZCBjYXAuAEUBIFZhbHVlIGJldHdlZW4gMCBhbmQgMTogaz0xIG1lYW5zIG5vIGRpc2NvdXJhZ2VtZW50LCBrPTAgbWVhbnMgaW1tZWRpYXRlIHBsYXRlYXUuAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlQnVkZ2V0AQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAADEEBIFRoZSB0b3RhbCB2YWxpZGF0b3IgaW5jZW50aXZlIGJ1ZGdldCBmb3IgdGhlIGdpdmVuIGVyYSwgc25hcHNob3R0ZWQgYXQgZXJhIGVuZC4AVQEgVGhpcyBpcyB0aGUgc2ltaWxhciB0byBbYEVyYXNWYWxpZGF0b3JSZXdhcmRgXSBidXQgZm9yIHRoZSBzZWxmLXN0YWtlIGluY2VudGl2ZSBwb3QuAHxFcmFzU3VtVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAADNggU3VtIG9mIGFsbCB2YWxpZGF0b3JzJyBpbmNlbnRpdmUgd2VpZ2h0cyBmb3IgdGhlIGVyYS4A1CBEaXJlY3RseSBsaW5rZWQgdG8gW2BFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0YF0uAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AAEIBQUdDTUBBAAIvCBJbmRpdmlkdWFsIHZhbGlkYXRvciBpbmNlbnRpdmUgd2VpZ2h0IHBlciBlcmEuLQEgRWFjaCB2YWxpZGF0b3IncyBzaGFyZSBvZiB0aGUgaW5jZW50aXZlIHBvdCA9IGB0aGVpcl93ZWlnaHQgLyBzdW1fd2VpZ2h0YC4AVEVyYXNTdW1XZWlnaHRlZFBvaW50cwEBBAU4NQFAAAAAAAAAAAAAAAAAAAAAABhBASBSdW5uaW5nIHN1bSBvZiBgdmFsaWRhdG9yX2luY2VudGl2ZV93ZWlnaHQgw5cgZXJhX3BvaW50c2AgYWNyb3NzIGFsbCB2YWxpZGF0b3JzmCB3aXRoIG5vbi16ZXJvIGVyYSBwb2ludHMgZm9yIHRoZSBlcmEuAFEBIE1haW50YWluZWQgaW5jcmVtZW50YWxseSBpbnNpZGUgW2BzZXNzaW9uX3JvdGF0aW9uOjpFcmFzOjpyZXdhcmRfYWN0aXZlX2VyYWBdIGV2ZXJ5TQEgdGltZSB2YWxpZGF0b3IgcG9pbnRzIGFyZSBjcmVkaXRlZC4gVXNlZCBhcyB0aGUgZGVub21pbmF0b3Igb2YgdGhlIHdlaWdodGVkLXBvaW50c0kBIHNoYXJlIHRoYXQgZGV0ZXJtaW5lcyBlYWNoIHZhbGlkYXRvcidzIHNsaWNlIG9mIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldGBdLgB0V2VpZ2h0ZWRQb2ludHNGb3JtdWxhU3RhcnRFcmEAADgEAEglASBDdXRvZmYgZXJhIGZyb20gd2hpY2ggdGhlIHZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBzd2l0Y2hlcyB0byB0aGVkIHdlaWdodGVkLXBvaW50cyBmb3JtdWxhLgBlASBgTm9uZWAgaXMgdGhlIHByZS1taWdyYXRpb24gc3RhdGUgZm9yIGNoYWlucyB3aG9zZSBzdG9yYWdlIHByZWRhdGVzIHRoaXMgaXRlbS4gVW50aWwgdGhlYQEgbWlncmF0aW9uIHJlY29yZHMgYSBjdXRvZmYsIFtgc2Vzc2lvbl9yb3RhdGlvbjo6RXJhczo6dXNlc193ZWlnaHRlZF9wb2ludHNgXSB0cmVhdHMgYWxsaQEgZXJhcyBhcyB3ZWlnaHRlZC1wb2ludHMgZXJhcy4gQ2hhaW5zIGluaXRpYWxpemVkIHdpdGggdGhpcyBzdG9yYWdlIGl0ZW0gc2V0IHRoZSBjdXRvZmYgdG9dASBgMGAgaW4gYGdlbmVzaXNfYnVpbGRgLCBhbmQgdGhlIHVwZ3JhZGUgbWlncmF0aW9uIGxlYXZlcyBhbnkgZXhpc3RpbmcgdmFsdWUgdW50b3VjaGVkLgBFASBTZWUgW2BzZXNzaW9uX3JvdGF0aW9uOjpFcmFzOjp1c2VzX3dlaWdodGVkX3BvaW50c2BdIGZvciB0aGUgZXhhY3Qgc2VtYW50aWNzIGFuZHggdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGN1dG9mZi4APQEgVE9ETyhzdGFraW5nLWFzeW5jKTogcmVtb3ZlIHRoaXMgc3RvcmFnZSBpdGVtLCB0aGUgbGVnYWN5IHN0YWtlLW9ubHkgYnJhbmNoIGlu/CBbYGNyYXRlOjpQYWxsZXQ6OmNhbGN1bGF0ZV92YWxpZGF0b3JfaW5jZW50aXZlX2Zvcl9wYWdlYF0sIHRoZSEBIFtgc2Vzc2lvbl9yb3RhdGlvbjo6RXJhczo6dXNlc193ZWlnaHRlZF9wb2ludHNgXSBjdXRvZmYgaGVscGVyLCBhbmQgdGhlHQEgW2BjcmF0ZTo6bWlncmF0aW9uczo6U2V0V2VpZ2h0ZWRQb2ludHNGb3JtdWxhU3RhcnRFcmFgXSBtaWdyYXRpb24gb25jZVkBIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgdXBncmFkZSDigJQgaS5lLiBvbmNlIHRoZSBjdXRvZmZJASBzYXRpc2ZpZXMgYGN1dG9mZiA8PSBhY3RpdmVfZXJhIC0gSGlzdG9yeURlcHRoYCwgYXQgd2hpY2ggcG9pbnQgbm8gcHJlLWN1dG9mZiBlcmEdASByZW1haW5zIGNsYWltYWJsZSBhbmQgZXZlcnkgbGl2ZSBlcmEgdXNlcyB0aGUgd2VpZ2h0ZWQtcG9pbnRzIGZvcm11bGEuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQB1AQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4dQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIE3Q8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUE+QYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQT9BggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUE4Q8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAA5Q8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBAOkPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFHQ3tDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQXJD/EPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBR0NARAEABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBR0N/QYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4NQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4BRAUAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBTg1AUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAEQoEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAAAJBwQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAFkFEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBADUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFHQ0REAQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAABUQBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAAAZEAQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBR0QIRAEAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4KRAEABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBR0NLRAEAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAACQcEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQAxEAQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBADUQBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4ORAEAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgAB9QYAAQ0KADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ3UBBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABPRAABDxDdXJyZW5jeUJhbGFuY2U1AQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3RBEAQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3RBEDUBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYThJEAwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAACROZnRDbGFpbXMBJE5mdENsYWltcxgsQ3JlZGl0VHJlZXMAAQQFOFEHBAAIYQEgVGhlIE1lcmtsZSBjb21taXRtZW50IHRvIHRoZSBORlQgY2xhaW0gY3JlZGl0cyBhd2FyZGVkIGluIG9uZSBQZW9wbGUtY2hhaW4gYmxvY2ssIGtleWVkPCBieSB0aGF0IGJsb2NrLgBQTmV4dEV4cGVjdGVkU2VxdWVuY2UBACggAAAAAAAAAAAMSQEgVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgbmV4dCB0cmVlIGV4cGVjdGVkIGZyb20gdGhlIGdhbWUgcGFsbGV0J3MgbGl2ZSBzdHJlYW0uAC0BIEEgYmF0Y2ggc3RhcnRpbmcgYWJvdmUgaXQgbWVhbnMgdGhlIHRyZWVzIGluIGJldHdlZW4gd2VyZSBsb3N0IG9uIHRoZSB3YXkuADRDbGFpbWVkTGVhdmVzAQEEBThNEAQAGE0BIFdoaWNoIG9mIGEgdHJlZSBibG9jaydzIGxlYXZlcyBoYXZlIGJlZW4gY2xhaW1lZCwgYml0IGBsZWFmX2luZGV4YCBwZXIgbGVhZiwgbGVhc3RcIHNpZ25pZmljYW50IGJpdCBmaXJzdC4AZQEgQSBwcm9vZiBiaW5kcyBhIGxlYWYgdG8gaXRzIGluZGV4LCBzbyB0aGUgaW5kZXggbmFtZXMgdGhlIGNsYWltIGFzIHRoZSBsZWFmIGl0c2VsZiBkb2VzLnEBIFRoZSBiaXRtYXAgb3V0bGl2ZXMgdGhlIHRyZWUsIGJlY2F1c2UgYSByZXBsYXkgb24gdGhlIGdhbWUgY2hhaW4gY2FuIGRlbGl2ZXIgdGhlIHRyZWUgYWdhaW45ASB1bnRpbCBpdHMgZGVhZGxpbmU7IHRoZSBzd2VlcCBvZiB0aGUgYmxvY2sncyBleHBpcnkgZW50cnkgaXMgd2hhdCByZW1vdmVzIGl0LgBEQ29sbGVjdGlvbk1pbnRlcnMAAQQFOFEQBAAIYQEgVGhlIGNvbGxlY3Rpb25zIHdob3NlIG93bmVycyBhY2NlcHQgY2xhaW1zLCBlYWNoIGJvdW5kIHRvIHRoZSByZWdpc3RlcmluZyBvd25lciBhbmQgdGhlYQEgW2BJdGVtU2VsZWN0aW9uYF0gZGVjaWRpbmcgdGhlIGl0ZW0uIEEgY29sbGVjdGlvbiB3aXRoIG5vIGVudHJ5IGNhbm5vdCBiZSBjbGFpbWVkIGludG8uADBUcmVlRXhwaXJpZXMAAQgGBVUQEAQAGHEBIEV2ZXJ5IHRyZWUgYmxvY2sgYSBzd2VlcCBzdGlsbCBoYXMgdG8gcmVhY2gsIGZpbGVkIHVuZGVyIHRoZSB0aW1lc3RhbXAgaXRzIHRyZWUgY29tbWl0cyB0by4AXQEgVGhlIGtleSBpcyBoYXNoZWQgd2l0aCBgSWRlbnRpdHlgIGFuZCBlbmNvZGVkIGJpZy1lbmRpYW4sIHNvIHRoZSBtYXAgaXRlcmF0ZXMgZnJvbSB0aGVxASBvbGRlc3QgZGVhZGxpbmUgdG8gdGhlIG5ld2VzdCwgd2hpY2ggW2BDcmVkaXRUcmVlc2BdIGRvZXMgbm90LiBBIHN3ZWVwIHRha2VzIHRoZSB0cmVlcyB0aGF0bQEgYXJlIGR1ZSBhbmQgc3RvcHMgYXQgdGhlIGZpcnN0IHRoYXQgaXMgbm90LiBPbmx5IGEgc3dlZXAgcmVtb3ZlcyBhbiBlbnRyeS4gQSBmdWxseSBjbGFpbWVkOQEgdHJlZSBsZWF2ZXMgaXRzIGVudHJ5IGJlaGluZCwgYW5kIHRoZSBzd2VlcCBvZiB0aGF0IGVudHJ5IHJlbW92ZXMgaXRzIGJpdG1hcC4AUFBlbmRpbmdUcmVlRGVsZXRpb25zAQBZEAQAGGEBIFRoZSB0cmVlIGJsb2NrcyB3aG9zZSBkZWxldGlvbiB0aGUgZ2FtZSBjaGFpbiBoYXMgbm90IGJlZW4gdG9sZCBhYm91dCB5ZXQsIGluIHRoZSBvcmRlcmQgdGhpcyBjaGFpbiByZW1vdmVkIHRoZW0uAHEBIEJvdGggcmVtb3ZhbCBwYXRocyBhZGQgdG8gaXQsIGFuZCBbYFBhbGxldDo6c2VuZF90cmVlX2RlbGV0aW9uc2BdIGRyYWlucyBpdCBmcm9tIHRoZSBmcm9udC5pASBBIGJsb2NrIHRoYXQgZG9lcyBub3QgZml0IGlzIGRyb3BwZWQsIGJlY2F1c2UgdGhlIGRlbGV0aW9uIG9ubHkgc2F2ZXMgdGhlIGdhbWUgY2hhaW4gZnJvbfAgd2FpdGluZyBvdXQgaXRzIG93biBUVEw7IHRoYXQgVFRMIGlzIHdoYXQgcmVtb3ZlcyBpdHMgY29weS4AAUEHAAEdCgAcHFRyZWVUdGwoIACndgAAAAAAFD0BIEhvdyBsb25nLCBpbiBzZWNvbmRzIGFmdGVyIHRoZSBgdGltZXN0YW1wYCBpdHMgdHJlZSBjb21taXRzIHRvLCBhIGNyZWRpdCBzdGF5cywgY2xhaW1hYmxlLgBVASBbYFBhbGxldDo6Y2xhaW1gXSBkb2VzIG5vdCBjaGVjayB0aGlzLCBzbyBhIGNsYWltIHN1Y2NlZWRzIHVudGlsIGEgc3dlZXAgcmVtb3ZlcyB0aGVBASB0cmVlLCB3aGljaCBoYXBwZW5zIGluIHRoZSBmaXJzdCBibG9jayBwYXN0IHRoZSBkZWFkbGluZSB0aGF0IGluY2x1ZGVzIGEgc3dlZXAuAFhNYXhRdWV1ZWRUcmVlRGVsZXRpb25zOBCAAAAAJCkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmVlIGJsb2NrcyB0aGF0IGNhbiB3YWl0IGZvciBhIGRlbGV0aW9uIG1lc3NhZ2UgaW5oIFtgUGVuZGluZ1RyZWVEZWxldGlvbnNgXS4AXQEgT25lIG1lc3NhZ2UgdGFrZXMgW2BDb25maWc6Ok1heFRyZWVEZWxldGlvbnNQZXJNZXNzYWdlYF0gYmxvY2tzIG9mZiB0aGUgZnJvbnQsIGFuZCB0aGVJASBvZmZjaGFpbiB3b3JrZXIgZ2V0cyBvbmUgbWVzc2FnZSBpbnRvIHRoZSBwb29sIHBlciBibG9jaywgc28gdGhlIHF1ZXVlIGhvbGRzIHdoYXRBASBjbGFpbXMgYW5kIHN3ZWVwcyBhZGQgYWJvdmUgdGhhdCByYXRlLiBBIGRlbGV0aW9uIHRoYXQgZG9lcyBub3QgZml0IGlzIGRyb3BwZWQsYQEgYmVjYXVzZSB0aGUgZ2FtZSBjaGFpbidzIFRUTCwgbm90IHRoaXMgcXVldWUsIHJlbW92ZXMgaXRzIGNvcHkuIFNldCBpdCBhdCBsZWFzdCBhcyBoaWdoWQEgYXMgW2BDb25maWc6Ok1heFRyZWVEZWxldGlvbnNQZXJNZXNzYWdlYF0sIG90aGVyd2lzZSBvbmUgc3dlZXAgZHJvcHMgZGVsZXRpb25zIG9mIGl0cxQgb3duLgBoTWF4VHJlZURlbGV0aW9uc1Blck1lc3NhZ2U4EEAAAAAgVQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRyZWUgYmxvY2tzIGNhcnJpZWQgYnkgb25lIGRlbGV0aW9uIG1lc3NhZ2UsIHdoaWNoIGlzIGFsc28gaG934CBtYW55IHRyZWVzIG9uZSBbYFBhbGxldDo6c3dlZXBfZXhwaXJlZF90cmVlc2BdIHJlbW92ZXMuAGUBIE9uZSBib3VuZCBzZXJ2ZXMgYm90aCwgc28gYSBzd2VlcCBxdWV1ZXMgZXhhY3RseSBvbmUgbWVzc2FnZSdzIHdvcnRoIGFuZCB0aG9zZSBkZWxldGlvbnNdASBnbyBvdXQgaW4gdGhlIGJsb2NrIGFmdGVyIGl0LiBJdCBhbHNvIGJvdW5kcyB0aGUgc3dlZXAncyB3ZWlnaHQgYWdhaW5zdCB0aGUgYmxvY2ssIGFuZBkBIHRoZSBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyBvbmUgc3dlZXAgcGVyIGJsb2NrIHVudGlsIG5vdGhpbmcgaXMgZHVlLlUBIFRoZSBnYW1lIHBhbGxldCdzIG93biBib3VuZCBtdXN0IGJlIGF0IGxlYXN0IHRoaXMgbGFyZ2UsIG90aGVyd2lzZSB0aGUgbWVzc2FnZSBmYWlsc8AgdG8gZGVjb2RlIHRoZXJlIGFuZCBpdHMgZGVsZXRpb25zIG5ldmVyIGFycml2ZS4AUEdhbWVDaGFpblBhbGxldEluZGV4DAQ5CE0BIFBhbGxldCBpbmRleCBvZiBpbmRpdi1wYWxsZXQtbmZ0LWNyZWRpdHMgb24gW2BDb25maWc6OkdhbWVDaGFpbkxvY2F0aW9uYF0sIHVzZWQgdG/YIGVuY29kZSB0aGUgYFRyYW5zYWN0YCB0aGUgZGVsZXRpb25zIGFyZSBkZWxpdmVyZWQgaW4uAEhNYXhUcmVlc1Blck1lc3NhZ2U4ECAAAAAQ2CBNYXhpbXVtIG51bWJlciBvZiBjcmVkaXQgdHJlZXMgYWNjZXB0ZWQgaW4gb25lIGJhdGNoLgBVASBNdXN0IGJlIGF0IGxlYXN0IHRoZSBnYW1lIHBhbGxldCdzIGBNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2VgLCBvdGhlcndpc2UgdGhlIGJhdGNoZXPgIGl0IHNlbmRzIGZhaWwgdG8gZGVjb2RlIGFuZCB0aGUgdHJlZXMgaW4gdGhlbSBhcmUgbG9zdC4ANE1heFByb29mTm9kZXM4EBAAAAAQ/CBNYXhpbXVtIG51bWJlciBvZiBzaWJsaW5nIGhhc2hlcyBhbiBpbmNsdXNpb24gcHJvb2YgbWF5IGNhcnJ5LgBZASBBIHRyZWUgb2YgYG5gIGxlYXZlcyBuZWVkcyBgY2VpbChsb2cyKG4pKWAgb2YgdGhlbSwgc28gdGhpcyBtdXN0IGNvdmVyIHRoZSBsZWF2ZXMgdGhlYQEgZ2FtZSBjaGFpbiBwdXRzIGluIG9uZSB0cmVlOiBhIGxvd2VyIGJvdW5kIGxlYXZlcyB0aGUgdGFpbCBvZiBhIGxhcmdlIHRyZWUgdW5jbGFpbWFibGUuAERNYXhDcmVkaXRzUGVyVHJlZTgQAAgAABhNASBUaGUgbW9zdCBjcmVkaXRzIG9uZSB0cmVlIGNvbW1pdHMgdG8sIHdoaWNoIGlzIHRoZSBnYW1lIGNoYWluJ3MgYEFXQVJEU19QRVJfVFJFRWAuAF0BIFtgQ2xhaW1lZExlYXZlc2BdIGhvbGRzIG9uZSBiaXQgcGVyIGxlYWYsIHNvIHRoaXMgc2l6ZXMgdGhhdCBiaXRtYXAuIEEgdHJlZSBjb21taXR0aW5nSQEgdG8gbW9yZSBsZWF2ZXMgaXMgbm90IHN0b3JlZCwgYmVjYXVzZSB0aGUgbGVhdmVzIHBhc3QgdGhlIGJpdG1hcCBjb3VsZCBiZSBjbGFpbWVkTQEgdHdpY2UuIFNldCBpdCB0byB0aGUgZ2FtZSBjaGFpbidzIG93biBib3VuZCwgd2hpY2ggYSBsb3dlciB2YWx1ZSBtYWtlcyBsYXJnZSB0cmVlczwgdW5kZWxpdmVyYWJsZS4AAV0QAAAAYAAARE1lbWJlcnNTdWJzY3JpYmVyAURNZW1iZXJzU3Vic2NyaWJlchwkUmluZ1Jvb3RzAAEMBQICYRBlEAQAJLggUmVjZW50IHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIuWQEgTWFwcyAoZ2VuZXJhdGlvbiwgaWRlbnRpZmllciwgcmluZ19pbmRleCkgdG8gYSBzbGlkaW5nIHdpbmRvdyBvZiByaW5nIHJvb3RzOyBvbmx5IHRoZU0BIFtgQ3VycmVudEdlbmVyYXRpb25gXSBwcmVmaXggaXMgbGl2ZSwgc28gYSBsb2dpY2FsIGNsZWFyIGxlYXZlcyB0aGUgb2xkZXIgcHJlZml4ZXPMIHVucmVhY2hhYmxlIHVudGlsIHRoZSBvZmZjaGFpbiBwdXJnZSByZW1vdmVzIHRoZW0uLQEgUHJvb2ZzIGFyZSBhY2NlcHRlZCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgdGhhdCBoYXMgbm90IGV4cGlyZWQ6IGE1ASBzdXBlcnNlZGVkIHJvb3QgZXhwaXJlcyBvbmNlIGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb25gIGhhcyBwYXNzZWQgc2luY2UgaXRzMQEgc3VjY2Vzc29yJ3Mgc291cmNlIHRpbWUuIFRoZSBvbGRlc3Qgcm9vdCBpcyBldmljdGVkIHdoZW4gdGhlIHdpbmRvdyByZWFjaGVzPQEgYE1heFJlY2VudFJvb3RzUGVyUmluZ2AsIHNvIGV4cGlyZWQgcm9vdHMgbWF5IHJlbWFpbiBzdG9yZWQgdW50aWwgdGhlbiBidXQgYXJleCByZWplY3RlZCBkdXJpbmcgdmVyaWZpY2F0aW9uLgBEQ3VycmVudEdlbmVyYXRpb24BADgQAAAAAAwVASBHZW5lcmF0aW9uIHByZWZpeCBob2xkaW5nIHRoZSBsaXZlIGBSaW5nUm9vdHNgIGVudHJpZXMuIEluY3JlYXNlZCBvbmEBIGBjbGVhcl9hbGxfcmluZ19kYXRhYCBjYWxsLiBBIHNhdHVyYXRlZCBjb3VudGVyIHN0b3BzIGRpc3Rpbmd1aXNoaW5nIGdlbmVyYXRpb25zLCB3aGljaNwgaXMgdW5yZWFjaGFibGUgZm9yIG5vdGlmaWVyLWRyaXZlbiByZS1pbml0aWFsaXphdGlvbnMuADxRdWV1ZWRSaW5nUHVyZ2UAAHEQBAAIYQEgUG9zaXRpb24gb2YgdGhlIHB1cmdlIHRoYXQgcmVtb3ZlcyB0aGUgc3RhbGUgYFJpbmdSb290c2AgcHJlZml4ZXMuIEFic2VudCB3aGVuIG5vIHN0YWxlTCByaW5nIGRhdGEgcmVtYWlucy4AUFJpbmdDb2xsZWN0aW9uU3RhdGVzAQEEAgh1EFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEEBIFN0YXRlIG9mIGVhY2ggcmluZyBjb2xsZWN0aW9uIGluY2x1ZGluZyByaW5ncyBjb3VudCBhbmQgbWlzc2luZyByaW5ncyB0cmFja2luZy4AXFJpbmdDb2xsZWN0aW9uRXhwb25lbnRzAAEEAgh5BwQAGOQgUmluZyBleHBvbmVudCByZWNvcmRlZCBwZXIgY29sbGVjdGlvbiBhdCBpbml0aWFsaXphdGlvbi4ARQEgVGhlIHN1YnNjcmliZXIgbmVlZHMgdGhlIGV4cG9uZW50IHRvIGRlcml2ZSB0aGUgY3J5cHRvJ3MgYENvbmZpZ2Agd2hlbiB2ZXJpZnlpbmdJASBwcm9vZnMsIHNpbmNlIHJpbmcgcm9vdHMgb24gdGhlaXIgb3duIGRvIG5vdCBjYXJyeSB0aGF0IGluZm9ybWF0aW9uLiBUaGUgZW50cnkgaXNFASB3cml0dGVuIGJ5IGBpbml0aWFsaXplX3Jpbmdfcm9vdHNgIGFuZCBpcyByZWFkIGR1cmluZyBwcm9vZiB2ZXJpZmljYXRpb24gdmlhIHRoZWQgYE1lbWJlcnNoaXBQcm92ZXJgIGltcGwuADBTdWJzY3JpcHRpb24BAIkQBAAEdCBDdXJyZW50IHN1YnNjcmlwdGlvbiBzdGF0dXMuADxQcm9jZXNzaW5nU3RhdGUBAI0QQAAAAAAAAAAAAAAAAAAAAAAEHQEgU3RhdGUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgcHJvY2Vzc2luZyB0aW1lc3RhbXBzIGFuZCBzZXF1ZW5jZSBudW1iZXJzLgABdQcAASkKADxEUmluZ1Jvb3RzTm90aWZpZXKREBgBAQB5F0UIpCBFbmRwb2ludCBjb25maWd1cmF0aW9uIGZvciB0aGUgbm90aWZpZXIusCBJbmNsdWRlcyB0aGUgWENNIGxvY2F0aW9uIGFuZCBwYWxsZXQgaW5kZXguAChTZWxmUGFyYUlkOBDcBQAABCEBIFRoaXMgY2hhaW4ncyBwYXJhY2hhaW4gSUQsIGluY2x1ZGVkIGluIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIuAHBNYXhNaXNzaW5nUm9vdHNQZXJDb2xsZWN0aW9uOBD/AAAABNQgTWF4aW11bSBudW1iZXIgb2YgbWlzc2luZyByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLgBwTWF4RGVsZXRlZFJpbmdzUGVyQ29sbGVjdGlvbjgQZAAAAAj8IE1heGltdW0gbnVtYmVyIG9mIGRlbGV0ZWQgcmluZyBpbmRpY2VzIHRyYWNrZWQgcGVyIGNvbGxlY3Rpb24uzCBQcmV2ZW50cyBmYWxzZWx5IG1hcmtpbmcgZGVsZXRlZCByaW5ncyBhcyBtaXNzaW5nLgBETWF4R2FwU2NhblBlckNhbGw4ECAAAAAMOQEgTnVtYmVyIG9mIHJpbmcgaW5kaWNlcyB0aGUgZ2FwIHNjYW4gZXhhbWluZXMgcGVyIGBkZXRlY3RfbWlzc2luZ19yaW5nc2AgY2FsbC5NASBNdXN0IGV4Y2VlZCBgTWF4VXBkYXRlc1BlckJhdGNoYCwgc28gYSBsYWdnaW5nIGNvbGxlY3Rpb24ncyBjdXJzb3IgYWR2YW5jZXMgZmFzdGVyqCB0aGFuIGl0cyBmcm9udGllciBjYW4gZ3JvdyBiZXR3ZWVuIHNjYW5zLgBYR2FwU2NhbkNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAMUQEgQ29vbGRvd24gKGluIHNlY29uZHMpIGFmdGVyIGEgY29sbGVjdGlvbiByZWNlaXZlcyBhIGJhdGNoIGJlZm9yZSBpdHMgZ2FwIHNjYW4gcnVucy5NASBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSwgc28gdGhhdCBpbmRpY2VzIHN0aWxsIG9uIHRoZSB3YXkgYXJlZCBub3QgcmVjb3JkZWQgYXMgbWlzc2luZy4ANFB1cmdlUGFnZVNpemU4EGQAAAAMRQEgTWF4aW11bSBudW1iZXIgb2YgYFJpbmdSb290c2AgZW50cmllcyByZW1vdmVkIHBlciBgcHVyZ2Vfc3RhbGVfcmluZ19yb290c2AgY2FsbC4xASBCb3VuZHMgdGhlIHdlaWdodCBvZiBhIHNpbmdsZSBwdXJnZSBwYWdlOyB0aGUgb2ZmY2hhaW4gd29ya2VyIHN1Ym1pdHMgcGFnZXOUIHVudGlsIGFsbCBzdGFsZSBlbnRyaWVzIGFyZSByZW1vdmVkLgA4TWF4Q29sbGVjdGlvbnM4EAoAAAAE4CBNYXhpbXVtIG51bWJlciBvZiByaW5nIGNvbGxlY3Rpb25zIHRoYXQgY2FuIGJlIHRyYWNrZWQuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAADGEBIENvb2xkb3duIHBlcmlvZCAoaW4gc2Vjb25kcykgYWZ0ZXIgYSBjb2xsZWN0aW9uIHJlY2VpdmVzIGEgYmF0Y2ggYmVmb3JlIHJlcGxheSByZXF1ZXN0c1UBIGZvciBpdCBhcmUgc2VudCwgYW5kIGJldHdlZW4gY29uc2VjdXRpdmUgcmVwbGF5IHJlcXVlc3RzLiBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCUBIGJhdGNoZXMgdG8gYXJyaXZlIHZpYSBYQ00uIFRoZSBiYXRjaCBjb29sZG93biBpcyBjb3VudGVkIHBlciBjb2xsZWN0aW9uLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb24oIBAOAAAAAAAAEC0BIER1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBhIHN1cGVyc2VkZWQgcmluZyByb290IHJlbWFpbnMgYWNjZXB0ZWQgZm9yIHByb29mTQEgdmVyaWZpY2F0aW9uLCBtZWFzdXJlZCBmcm9tIGl0cyBzdWNjZXNzb3IncyBzb3VyY2UgdGltZS4gVGhlIG5ld2VzdCByb290IG9mIGEgcmluZzUBIG5ldmVyIGV4cGlyZXMuIEJvdW5kcyBob3cgbG9uZyBhIG1lbWJlciByZW1vdmVkIGZyb20gYSByaW5nIGNhbiBrZWVwIHByb3ZpbmecIG1lbWJlcnNoaXAgYWdhaW5zdCBhIHByZS1yZW1vdmFsIHJvb3QuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAZUQAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgKZEAQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgShEAQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAoU3RhbGVTaW5jZQABBAIEKAQAIF0BIFdoZW4gYSBtYXBwaW5nIHdhcyBmaXJzdCByZXBvcnRlZCBzdGFsZSwgd2hpY2ggaXMgd2hhdCBbYENvbmZpZzo6TWFwcGluZ1JldGVudGlvbmBdIGlzOCBjb3VudGVkIGZyb20uAFUBIFRoZSBmaXJzdCBbYFBhbGxldDo6cmVwb3J0X3N0YWxlX2FsaWFzZXNgXSBmb3IgYSBzdGFsZSBtYXBwaW5nIHN0YW1wcyBpdCBhbmQgcmVtb3Zlc3EBIG5vdGhpbmc7IGEgbGF0ZXIgY2FsbCBkb2VzIHRoZSByZW1vdmFsLiBUaGUgc3RhbXAgaXMgdGhlIHJpbmcncyBuZXdlc3Qgcm9vdCB0aW1lIHdoZXJlIHRoYXRNASBpcyBzdGlsbCBrbm93biBhbmQgdGhlIGNhbGwncyBvd24gdGltZSBvdGhlcndpc2UsIHNvIGEgZGVsZXRlZCByaW5nIGtlZXBzIHRoZSBmdWxsaQEgcmV0ZW50aW9uLiBFdmVyeSBwYXRoIHRoYXQgd3JpdGVzIFtgQWNjb3VudFRvQWxpYXNgXSBjbGVhcnMgaXQsIGFzIGRvZXMgYSBjYWxsIHRoYXQgZmluZHMtASB0aGUgcmV2aXNpb24gdmVyaWZ5aW5nIGFnYWluLCBzbyBhIG1hcHBpbmcga25vd24gdG8gYmUgdmFsaWQgaGFzIG5vIHN0YW1wLgABmQcAAS0KABxMUHJvb2ZWYWxpZGl0eVdpbmRvdyggLAEAAAAAAAAM6CBUaW1lIHRvbGVyYW5jZSAoaW4gc2Vjb25kcykgZm9yIHByb29mLWJhc2VkIHRyYW5zYWN0aW9ucy5JASBQcm9vZnMgYXJlIHZhbGlkIGZyb20gYHByb29mX3ZhbGlkX2F0YCB0byBgcHJvb2ZfdmFsaWRfYXQgKyBQcm9vZlZhbGlkaXR5V2luZG93YC5sIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAEBNYXBwaW5nUmV0ZW50aW9uKCAAp3YAAAAAABBJASBIb3cgbG9uZyAoaW4gc2Vjb25kcykgYSBtYXBwaW5nIGlzIGtlcHQsIGNvdW50ZWQgZnJvbSBbYFN0YWxlU2luY2VgXSwgYWZ0ZXIgd2hpY2hhASBbYFBhbGxldDo6cmV0aXJlX3N0YWxlX2FsaWFzZXNgXSBtYXkgcmVtb3ZlIGl0LiBBIHJlYnVpbHQgcmluZyBzdGFtcHMgdGhlIG5ld2VzdCByb290J3NZASBzb3VyY2UgdGltZSwgd2hpY2ggW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXSBhbHNvIG1lYXN1cmVzIGl0cyBvd24gcmV0ZW50aW9uIGZyb20sIHNvWQEgdGhlIG1hcHBpbmcgb3V0bGl2ZXMgdGhlIHJldmlzaW9uIG9ubHkgYnkgdGhlIGRpZmZlcmVuY2UuIE11c3QgZXhjZWVkIHRoYXQgcmV0ZW50aW9uLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudHkHBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudHkHBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAEhNYXhTdGFsZUFsaWFzQmF0Y2g4ECAAAAAUMQEgVGhlIG1vc3QgbWFwcGluZ3Mgb25lIHN3ZWVwIHRyYW5zYWN0aW9uIGNhcnJpZXMuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAF0BIEEgc3dlZXAgc3VibWl0cyBvbmUgdHJhbnNhY3Rpb24gcGVyIGFjdGlvbiwgc28gdGhpcyBib3VuZHMgZWFjaCBvZiB0aGVtLiBFdmVyeSBtYXBwaW5nQQEgaW4gYSBiYXRjaCBpcyB2ZXJpZmllZCB0d2ljZSwgb25jZSBpbiBgYXV0aG9yaXplYCBhbmQgb25jZSBpbiB0aGUgY2FsbCwgYW5kIHRoZbggYGludGVncml0eV90ZXN0YCBob2xkcyB0aGUgcGFpciB0byB0aGUgYmxvY2suAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABpRAAAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGAqkQEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABpQcAATEKABgsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnQ1AUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgBUTWF4UGdhc0NsYWltc1BlckJhdGNoOBAFAAAAGDUBIE1heGltdW0gbnVtYmVyIG9mIGNsYWltIHNsb3RzIGEgc2luZ2xlIFtgQ2FsbDo6YmF0Y2hfY2xhaW1fcGdhc2BdIG1heSBjYXJyeS4AZQEgVGhpcyB2YWx1ZSBtdXN0IG5vdCBleGNlZWQgW2BNQVhfUEdBU19CQVRDSF9DTEFJTVNgXSBvciB0aGUgbGFyZ2VzdCBwZXItY29sbGVjdGlvbiBjbGFpbVUBIGNvdW50LiBUaGlzIHZhbHVlIGNhbm5vdCBiZSBjaGFuZ2VkIGR5bmFtaWNhbGx5IHdpdGhvdXQgYSBydW50aW1lIHVwZ3JhZGUgYmVjYXVzZSBpdEEBIGRldGVybWluZXMgdGhlIHdlaWdodCBvZiB0aGUgYmF0Y2ggY2xhaW0gY2FsbCwgc28gaW5jcmVhc2luZyB0aGlzIHZhbHVlIHdpdGhvdXQtASByZS1iZW5jaG1hcmtpbmcgd2lsbCBtYWtlIHRoYXQgY2FsbCBjb25zdW1lIG1vcmUgYmxvY2tzcGFjZSB0aGFuIGV4cGVjdGVkLgABrRAAAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAY8GAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAY8sRAEAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGcQe5EAQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYGxRA1AUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGcQfJEAQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTjNEAQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEA0RAgAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAZxBwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBANUQEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEAQREEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAEkREQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABCl1OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQBVEQQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAFkREAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAGtBwABNQoALDhEZXBvc2l0UGVyQnl0ZTUBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbTUBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbTUBQADC6wsAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50WQUQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RldQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHRJBUAAANpJO3F9DAAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWR1AQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwdQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABXREABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAAAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkYREFsaWFzUmVnaXN0cmF0aW9uAAEEAghhEQQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCwQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuADBBY2NvdW50TmFtZXMAAQQCBGkRBAA49CBUaGUgZG90TlMgbGFiZWxzIGVhY2ggYWNjb3VudCBhY3F1aXJlZCB0aHJvdWdoIHRoaXMgZ2F0ZXdheS4AJQEgS2V5ZWQgYnkgYWNjb3VudCBzbyBjbGllbnRzIGNhbiB3YXRjaCBhIHNldCBvZiBhY2NvdW50cyB3aXRoIG9uZSBzdG9yYWdlOCBzdWJzY3JpcHRpb24uACkBIFdhcm5pbmc6IHRoaXMgbWFwIGlzIG5vdCB0aGUgc291cmNlIG9mIHRydXRoOyB0aGUgZG90TlMgY29udHJhY3RzIGFyZS4gSXQtASBpcyB3cml0dGVuIG9uIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBhbmQgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBvbmx5LCUBIHNvIGEgbGFiZWwgdGhhdCBjaGFuZ2VzIHB1cmVseSBjb250cmFjdC1zaWRlIChmb3IgZXhhbXBsZSBhIHRyYW5zZmVyKSBpcykBIG5vdCByZWZsZWN0ZWQgaGVyZSBhbmQgY2xpZW50cyBtdXN0IHJlLXZlcmlmeSBvbiByZWFkIHZpYSBjb250cmFjdCB2aWV3cy4lASBOYW1lcyByZWdpc3RlcmVkIG91dHNpZGUgdGhlc2UgcGF0aHMgbmV2ZXIgYXBwZWFyIGhlcmUgYXQgYWxsLCBpbmNsdWRpbmcxASBwcmUtbGF1bmNoIHdoaXRlbGlzdCBhbGxvY2F0aW9ucywgd2hpY2ggY2xhaW1hbnRzIHJlZ2lzdGVyIGRpcmVjdGx5IGFnYWluc3SAIHRoZSBkb3ROUyByZWdpc3RyYXIgY29udHJvbGxlci4pASBUaGUgbWFwIGlzIHRlbXBvcmFyeSBhbmQgZ29lcyBhd2F5IG9uY2UgYXBwcyBjYW4gb2JzZXJ2ZSBjb250cmFjdCBzdG9yYWdlNQEgZGlyZWN0bHk6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9pbmRpdmlkdWFsaXR5LWNvbW11bml0eS9pc3N1ZXMvNTI+LgBERGlzcGF0Y2hlckFkZHJlc3MAAHEHBAAMNQEgQWRkcmVzcyBvZiB0aGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QuIE11c3QgYmUgc2V0ICh2aWEgZ2VuZXNpcyBvch0BIFtgUGFsbGV0OjpzZXRfZGlzcGF0Y2hlcl9hZGRyZXNzYF0pIGJlZm9yZSBbYFBhbGxldDo6cmVzZXJ2ZV9uYW1lYF0gb3KcIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHN1Y2NlZWQuAAG9BwABOQoADFRNYXhDb250cmFjdENhbGxXZWlnaHQRASgHAOh2SBcCAIAADDEBIE1heGltdW0gd2VpZ2h0IGJ1ZGdldCBmb3IgYSBzaW5nbGUgY29udHJhY3QgY2FsbC4gVGhlIGV4dHJpbnNpYyBwcmUtY2hhcmdlczEBIHBhbGxldCBvdmVyaGVhZCArIHRoaXMgYnVkZ2V0IGFuZCByZWZ1bmRzIHVudXNlZCB3ZWlnaHQgYmFzZWQgb24gdGhlIGFjdHVhbKAgd2VpZ2h0IHJlcG9ydGVkIGJ5IHRoZSBjb250cmFjdCBjYWxsZXIuAEhNYXhWYWxpZGl0eVNlY29uZHMoIID0AwAAAAAACJwgU2lnbmF0dXJlIHZhbGlkaXR5IHdpbmRvdywgaW4gc2Vjb25kcy4lASBBIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBub3cgPD0gc2lnbmVkX2F0ICsgTWF4VmFsaWRpdHlTZWNvbmRzYC4AUE1heEZ1dHVyZVNrZXdTZWNvbmRzKCAeAAAAAAAAAAjIIENsb2NrLXNrZXcgdG9sZXJhbmNlIGZvciBgc2lnbmVkX2F0YCwgaW4gc2Vjb25kcy4tASBBIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgLgABeREABFBBdHRlc3RhdGlvblNpZ25hdHVyZb0EBA0BIFNpZ25hdHVyZSB0eXBlIHVzZWQgYnkgY2FuZGlkYXRlcyB0byBjb25zZW50IHRvIG5hbWUgcmVzZXJ2YXRpb25zLgCYAABET3JpZ2luUmVzdHJpY3Rpb24BRE9yaWdpblJlc3RyaWN0aW9uBBhVc2FnZXMAAQQC1QeBEQQABIwgVGhlIGN1cnJlbnQgdXNhZ2UgZm9yIGVhY2ggZW50aXR5LgAB0QcAAT0KAAABhREABEBSZXN0cmljdGVkRW50aXR51QckUQEgVGhlIHR5cGUgdGhhdCByZXByZXNlbnQgdGhlIGVudGl0aWVzIHRyYWNrZWQsIGl0cyBhbGxvd2FuY2UgYW5kIHRoZSBjb252ZXJzaW9uIGZyb22sIG9yaWdpbiBpcyBib3VuZGVkIGluIFtgUmVzdHJpY3RlZEVudGl0eWBdLgAdASBUaGlzIGlzIHRoZSBjYW5vbmljYWwgb3JpZ2luIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdXNhZ2UgdHJhY2tpbmcujCBFYWNoIGVudGl0eSBpcyB0cmFja2VkIHNlcGFyYXRlbHkuAEkBIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gb3JpZ2luIGFzIGEgbXVsdGlwbGUgb3JpZ2luIGNhbiByZXByZXNlbnQgYSBzaW5nbGUgZW50aXR5LmEBIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgREFPIG9yaWdpbiB3aXRoIGEgcGVyY2VudGFnZSBvZiB2b3RlcnMsIHdlIHdhbnQgdG8gdHJhY2sgdGhlIERBT6wgZW50aXR5IHJlZ2FyZGxlc3Mgb2YgdGhlIHZvdGVyIHBlcmNlbnRhZ2UuAJkAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJlvQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AmwAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAdkHAAFBCgAAAYkRAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4A+wAANFBnYXNBbGxvd2FuY2UAAAFFCgAAAAAA/AAACAQFACC9BAgANAAECAwQFBgcICQoLDABTDQ4PABAREgECAwQFBgcICQoLDBMNEF1dGhvcml6ZUNhbGzdBxBIQ2hlY2tOb25aZXJvU2VuZGVy4QcQQENoZWNrU3BlY1ZlcnNpb27lBzg4Q2hlY2tUeFZlcnNpb27pBzgwQ2hlY2tHZW5lc2lz7Qc8OENoZWNrTW9ydGFsaXR58Qc8KENoZWNrTm9uY2X5BxAsQ2hlY2tXZWlnaHT9BxBQQ2hhcmdlQXNzZXRUeFBheW1lbnQBCBBIUHJldmFsaWRhdGVBdHRlc3RzBQgQRENoZWNrTWV0YWRhdGFIYXNoCQixBzBFdGhTZXRPcmlnaW4RCBBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEGBVbml0VHJhbnNhY3Rpb25FeHRlbnNpb24QEFBWZXJpZnlNdWx0aVNpZ25hdHVyZRUIEChBc1NjYXJjaXR5GQgQGEFzUGdhcyUIEDhBc0RvdG5zR2F0ZXdheTEIEDxSZXN0cmljdE9yaWdpbnM9CBB4HEF1cmFBcGkINHNsb3RfZHVyYXRpb24AjREMkCBSZXR1cm5zIHRoZSBzbG90IGR1cmF0aW9uIGZvciBBdXJhLgAlASBDdXJyZW50bHksIG9ubHkgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoaXMgdHlwZSBhdCBnZW5lc2lzIHdpbGwgYmUgdXNlZC4ALGF1dGhvcml0aWVzAA0MBJwgUmV0dXJuIHRoZSBjdXJyZW50IHNldCBvZiBhdXRob3JpdGllcy4ABLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuBABQUmVsYXlQYXJlbnRPZmZzZXRBcGkITHJlbGF5X3BhcmVudF9vZmZzZXQAOAwVASBGZXRjaCB0aGUgcmVsYXkgcGFyZW50IG9mZnNldCB0aGF0IGlzIGV4cGVjdGVkIGZyb20gdGhlIHJlbGF5IGNoYWluLgBdASBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXkgY2hhaW4gdGlwIHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlLgBYbWF4X2NsYWltX3F1ZXVlX29mZnNldAAMiOggTWF4aW11bSBjbGFpbSBxdWV1ZSBvZmZzZXQgZm9yIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkuADkBIEJvdW5kcyBob3cgZmFyICJpbnRvIHRoZSBmdXR1cmUiIGEgY2FuZGlkYXRlIG1heSBsb29rIGluIHRoZSBjbGFpbSBxdWV1ZSB3aGVuUQEgc2VsZWN0aW5nIGEgY29yZS4gVGhlIGVmZmVjdGl2ZSBjbGFpbSBxdWV1ZSBkZXB0aCBkZXBlbmRzIG9uIHRoZSBjYW5kaWRhdGUgdmVyc2lvbjoAYQEgLSAqKlYxL1YyIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3MgYHJlbGF5X3BhcmVudGAsSQEgICB3aGljaCBpcyBgcmVsYXlfcGFyZW50X29mZnNldGAgYmxvY2tzIGJlaGluZCB0aGUgcmVsYXktY2hhaW4gdGlwLiBUaGUgZWZmZWN0aXZl7CAgIGRlcHRoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0ICsgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuABUBIC0gKipWMyBjYW5kaWRhdGVzKio6IHRoZSBjbGFpbSBxdWV1ZSBpcyBsb29rZWQgdXAgYXQgdGhlIGNhbmRpZGF0ZSdzXQEgICBgc2NoZWR1bGluZ19wYXJlbnRgIOKAlCB0aGUgcmVsYXktY2hhaW4gYmxvY2sgb2YgdGhlICpsYXN0IGZpbmlzaGVkKiBzbG90LCBkZWNvdXBsZWQlASAgIGZyb20gdGhlIGV4ZWN1dGlvbi1jb250ZXh0IGByZWxheV9wYXJlbnRgLiBUaGUgZWZmZWN0aXZlIGRlcHRoIGlzIGp1c3RwICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgLgAhASBDb2xsYXRvcnMgc2VsZWN0IGEgY29yZSB2aWEgYW4gb2Zmc2V0IGluIGBbMCwgbWF4X2NsYWltX3F1ZXVlX29mZnNldF1gLgBRASAtICoqVjIgY2FuZGlkYXRlcyoqOiBgbWF4X2NsYWltX3F1ZXVlX29mZnNldCA9IDFgIGlzIHN1ZmZpY2llbnQuIFRoZSBjbGFpbSBxdWV1ZSBpc1kBICAgbG9va2VkIHVwIGF0IGByZWxheV9wYXJlbnRgLCB3aGljaCBzaXRzIGJlaGluZCB0aGUgdGlwLiBPZmZzZXQgMCBjb3ZlcnMgc3luY2hyb25vdXNVASAgIGJhY2tpbmcgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2s7IG9mZnNldCAxIGNvdmVycyBhc3luY2hyb25vdXMgYmFja2luZyBpbiB0aGUgcmVsYXlQICAgYmxvY2sgYWZ0ZXIgdGhhdC4ALQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogb2Zmc2V0IDAgaXMgbm90IHJlYWNoYWJsZSDigJQgdGhlIGBzY2hlZHVsaW5nX3BhcmVudGBVASAgIGlzIHVzdWFsbHkgdGhlIGxlYWYgd2hlbiBwaWNrZWQsIGJ1dCBpdHMgY2hpbGQgaXMgYWxyZWFkeSBiZWluZyBidWlsdCwgc28gdGhlcmUgaXM5ASAgIG5vIG9wcG9ydHVuaXR5IHRvIGxhbmQgaW4gdGhlIG5leHQgcmVsYXkgYmxvY2suIE9mZnNldCAxIGlzIHJlYWNoYWJsZSB1bmRlclUBICAgc3luY2hyb25vdXMtYmFja2luZyBzZW1hbnRpY3MuIEZvciBlbGFzdGljIHNjYWxpbmcgdGhlIGxhc3QgYmxvY2sgaW4gdGhlIGJ1bmRsZSBpczUBICAgYnVpbHQgbmVhciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNsb3QsIHdoaWNoIG1ha2VzIG9mZnNldCAxIHRvbyB0aWdodCDigJRVASAgIGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMmAgaXMgdGhlIG1pbmltdW0gY2FwIHRoYXQga2VlcHMgZWxhc3RpYyBzY2FsaW5nIHZpYWJsZS4AVQEgTm90ZTogdGhpcyBtZXRob2Qgd2FzIGFkZGVkIGluIGBhcGlfdmVyc2lvbiA9IDJgLiBDb2xsYXRvcnMgY2FsbGluZyBvbiBydW50aW1lcyB0aGF0TQEgb25seSBpbXBsZW1lbnQgYGFwaV92ZXJzaW9uID0gMWAgb2YgW2BSZWxheVBhcmVudE9mZnNldEFwaWBdIHdpbGwgcmVjZWl2ZSBhbiBlcnJvckkBIGFuZCBzaG91bGQgZmFsbCBiYWNrIHRvIGEgc2Vuc2libGUgZGVmYXVsdCAoY3VycmVudCBjb2xsYXRvciBkZWZhdWx0czogYDFgIG9uIHRoZYQgVjMgcGF0aCwgYDBgIG9uIHRoZSBWMS9WMiBwYXRoKS4A+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+ADxRASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4gYW5kIGhvdyBjbGFpbSBxdWV1ZWAgb2Zmc2V0cyBhcmUgZGV0ZXJtaW5lZC4AWQEgQSBsYXJnZXIgcmVsYXkgcGFyZW50IG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZlEBIHRoZSByZWxheSBjaGFpbiwgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlJCBydW50aW1lLgBZASBUaGUgbWF4IGNsYWltIHF1ZXVlIG9mZnNldCBkZXRlcm1pbmVzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgY29sbGF0b3JzIHRhcmdldCB3aGVuUQEgc2VsZWN0aW5nIGNvcmVzIGZyb20gdGhlIGNsYWltIHF1ZXVlLiBUaGlzIHByb3ZpZGVzIGFzeW5jIGJhY2tpbmcgZmxleGliaWxpdHkgd2hpbGWoIHByZXZlbnRpbmcgY29sbGF0b3JzIGZyb20gc2tpcHBpbmcgc2xvdHMu+CBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvaXNzdWVzLzg4OTM+AEQgVmVyc2lvbiBoaXN0b3J5OvQgLSBWZXJzaW9uIDE6IEluaXRpYWwgdmVyc2lvbiB3aXRoIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBvbmx5zCAtIFZlcnNpb24gMjogQWRkZWQgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXRgIG1ldGhvZAgAWFNjaGVkdWxpbmdWM0VuYWJsZWRBcGkEVHNjaGVkdWxpbmdfdjNfZW5hYmxlZAB1AQT0IFJldHVybnMgdHJ1ZSBpZiBWMyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQgZm9yIHRoaXMgcGFyYWNoYWluLgAk8CBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIHdoZXRoZXIgVjMgc2NoZWR1bGluZyBpcyBlbmFibGVkLgDkIFdoZW4gZW5hYmxlZCwgY29sbGF0b3JzIG11c3QgcHJvZHVjZSBWMyBjYW5kaWRhdGVzIHdpdGg65CAtIFBhcmFjaGFpbkJsb2NrRGF0YTo6VjIgY29udGFpbmluZyB0aGUgc2NoZWR1bGluZyBwcm9vZrwgLSBDYW5kaWRhdGVEZXNjcmlwdG9yVjMgd2l0aCBzY2hlZHVsaW5nX3BhcmVudAAdASBUaGlzIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIHJlbGF5IHBhcmVudCBvZmZzZXQgKGJ1aWxkaW5nIG9uIG9sZGVyHQEgcmVsYXkgcGFyZW50cykuIEEgcGFyYWNoYWluIGVuYWJsZXMgVjMgd2hlbiBpdCB3YW50cyBsb3ctbGF0ZW5jeSBibG9ja5wgcHJvZHVjdGlvbiB3aXRoIHRoZSBkdWFsLXBhcmVudCBtb2RlbC4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90EQx1ASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AeQoEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2uRERAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclydEQRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQChEQSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244pREQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAYQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWORCqkREGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAXARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50uRGdCgQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2uRERBkYXRhuRHJEQRVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNlzREIdHiRCihibG9ja19oYXNoPNERJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJcEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRhAdkRHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBjdEQyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWTpERRpbnB1dBjtEQR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSRCgxsZW449REAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0kQoMbGVuOPkRAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0EQE1AQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDg1AQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOPURBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOPkRBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBNQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4NQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjgFEhS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlTQIREhSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQRARRhc3NldL0DFRIY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbsUBHG1lc3NhZ2VNAiBhc3NldF9pZL0DGRIoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu8QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjgdEgREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27FAQx4Y22NAz0SBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uxQFFEgSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXRNEiBsb2NhdGlvbsUBURIU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0TRIgbG9jYXRpb27FAVESFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldMUBWRIE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbsUBGHRhcmdldMUBYRIEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEZRIE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCAAsU2NhcmNpdHlBcGkEOG1ldGFkYXRhX2JhdGNoBBxxdWVyaWVzbRJ5EgxZASBSZXR1cm5zIG9uZSBwb3NpdGlvbmFsbHkgYWxpZ25lZCByZXN1bHQgcGVyIHF1ZXJ5IHdpdGhvdXQgZmFpbGluZyBvbiBtaXNzaW5nIHRhcmdldHMuVQEgVGhlIGJvdW5kZWQgYXJndW1lbnQgZW5mb3JjZXMgdGhlIGJhdGNoIGNlaWxpbmcgYXQgZGVjb2RlLCBzbyBhbiBhY2NlcHRlZCByZXF1ZXN0IGlzRCBuZXZlciB0cnVuY2F0ZWQuAAT8IFJlYWQtb25seSBiYXRjaGVkIGFjY2VzcyB0byBTY2FyY2l0eSdzIHN0b3JlZCBtZXRhZGF0YSBsYXllcnMuBAAwTmZ0Q2xhaW1zQXBpBDRwcmV2aWV3X21pbnRzBBxxdWVyaWVziRKVEhBZASBFeGVjdXRlcyB0aGUgY2xhaW0gc2VsZWN0b3Igb25jZSBwZXIgcXVlcnkgYW5kIHJldHVybnMgcG9zaXRpb25hbGx5IGFsaWduZWQgb3V0Y29tZXMuOQEgRXZlcnkgcXVlcnkgcnVucyBpbiBpdHMgb3duIGRpc2NhcmRlZCBzdG9yYWdlIGxheWVyLCBzbyBlYWNoIG9uZSBpcyBwcmV2aWV3ZWRVASBpbmRlcGVuZGVudGx5IGFnYWluc3QgdGhlIGJsb2NrJ3Mgc3RhdGUgYW5kIG5vbmUgb2JzZXJ2ZXMgYW5vdGhlcidzIGNvbnRyYWN0IHdyaXRlcy5hASBBIHByZXZpZXcgY2Fubm90IGJpbmQgYSBsYXRlciBjbGFpbSwgd2hpY2ggcnVucyBhZ2FpbnN0IHdoYXRldmVyIHN0YXRlIGl0cyBibG9jayBob2xkcy4ABPggUmVhZC1vbmx5IHByZXZpZXdzIG9mIHRoZSBpdGVtIGVhY2ggTkZUIGNsYWltIGNyZWRpdCBzZWxlY3RzLgQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcpRIQnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhixEihlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlktRJhAThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzALkSEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQASEFzc2V0Q29udmVyc2lvbkFwaQyMcXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MRkCGGFzc2V0MhkCGGFtb3VudDUBLGluY2x1ZGVfZmVldQExARD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLikAjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEZAhhhc3NldDIZAhhhbW91bnQ1ASxpbmNsdWRlX2ZlZXUBMQEQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQAwZ2V0X3Jlc2VydmVzCBhhc3NldDEZAhhhc3NldDIZAr0SBAUBIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sIGZvciB0aGUgZ2l2ZW4gYXNzZXQgcGFpci4ACCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy4EAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAnASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8ENQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50czUBNQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHM1ATUBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDg1AQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIENQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOHUBIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgR1ARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBDUBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDg1AQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOMUQBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZTUBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BHUBBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8AwRIQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlsJGV0aF9ibG9jawDVEAx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlcrUHNQUE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEAQREUEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdAC1BwR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AbG1heF9leHRyaW5zaWNfd2VpZ2h0X2luX2dhcwC1BwTwIFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIHdlaWdodHMuABxiYWxhbmNlBBxhZGRyZXNzcQe1BwQxASBSZXR1cm5zIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MsIHVzaW5nIEVWTSBkZWNpbWFscy4AJGdhc19wcmljZQC1BwRcIFJldHVybnMgdGhlIGdhcyBwcmljZS4AFG5vbmNlBBxhZGRyZXNzcQc4BMQgUmV0dXJucyB0aGUgbm9uY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MuABBjYWxsGBhvcmlnaW4EEGRlc3RxBxR2YWx1ZTUBJGdhc19saW1pdA0BVHN0b3JhZ2VfZGVwb3NpdF9saW1pdDEBKGlucHV0X2RhdGEYyRIM9CBQZXJmb3JtIGEgY2FsbCBmcm9tIGEgc3BlY2lmaWVkIGFjY291bnQgdG8gYSBnaXZlbiBjb250cmFjdC4AiCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX2NhbGxgXS4ALGluc3RhbnRpYXRlHBhvcmlnaW4EFHZhbHVlNQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0MQEQY29kZd0SEGRhdGEYEHNhbHSxB+ESDHAgSW5zdGFudGlhdGUgYSBuZXcgY29udHJhY3QuAKQgU2VlIGBbY3JhdGU6OlBhbGxldDo6YmFyZV9pbnN0YW50aWF0ZV1gLgAwZXRoX3RyYW5zYWN0BAh0eO0SCRMQaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuAJQgRGVwcmVjYXRlZCB1c2UgYHYyYCB2ZXJzaW9uIGluc3RlYWQusCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAGBldGhfdHJhbnNhY3Rfd2l0aF9jb25maWcICHR47RIYY29uZmlnFRMJEwxoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AsCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAEBldGhfZXN0aW1hdGVfZ2FzCAh0eO0SGGNvbmZpZxUTSRMU6CBFc3RpbWF0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBhIHRyYW5zYWN0aW9ucyByZXF1aXJlcy4AXQEgVGhpcyBmdW5jdGlvbiBlc3RpbWF0ZXMgdGhlIGdhcyBvZiB0aGUgdHJhbnNhY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGJpbmFyeSBzZWFyY2hZASBhbGdvcml0aG0gdGhhdCdzIGltcGxlbWVudGVkIGluIEdldGguIEl0IHN0b3BzIHdoZW4gd2l0aCBhbiBhY2NlcHRhYmxlIGVycm9yIHJhdGlvIG9mtCAxLjUlIHNvIHRoYXQgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGVhcmx5LgBcZXRoX3ByZV9kaXNwYXRjaF93ZWlnaHQECHR4GE0TBE0BIFJldHVybiB0aGUgcHJlLWRpc3BhdGNoIHdlaWdodCBib29rZWQgZm9yIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24gcGF5bG9hZC4ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdDEBURMM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzc3EHDGtleQhZExS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNzcQcMa2V5GFkTFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9ja40KGGNvbmZpZ2ETfRMYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrjQogdHhfaW5kZXg4GGNvbmZpZ2ET3RMY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR47RIYY29uZmlnYRPhEwzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgBYdHJhY2VfY2FsbF93aXRoX2NvbmZpZwwIdHjtEix0cmFjZXJfdHlwZWETGGNvbmZpZ+UT4RMUOQEgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4AQQEgTGlrZSBbYFNlbGY6OnRyYWNlX2NhbGxgXSwgYnV0IGFjY2VwdHMgYSBbYFRyYWNpbmdDb25maWdgXSB0aGF0IGNhbiBjYXJyeSBzdGF0ZUUBIG92ZXJyaWRlcyBhbmQgZnV0dXJlIGV4dGVuc2liaWxpdHkuIFRoZSBjb25maWcgbXVzdCBiZSB0aGUgKipsYXN0IGFyZ3VtZW50KiogZm9yBQEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg4oCUIHNlZSBbYFRyYWNpbmdDb25maWdgXSBkb2N1bWVudGF0aW9uLgAwYmxvY2tfYXV0aG9yAHEHBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZARxBwTMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNzcQcEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwBxBwT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzc3EHGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2W1B+kTBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAgWQj1EwA=";
2
+
3
+ export { binMeta as default };