@parity/product-sdk-descriptors 0.11.0 → 0.13.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 (88) hide show
  1. package/README.md +3 -0
  2. package/chains/devnet-asset-hub/.papi/polkadot-api.json +1 -1
  3. package/chains/devnet-asset-hub/generated/dist/{devnet_asset_hub_metadata-DPRqW8eH.js → devnet_asset_hub_metadata-Ds1HrdOV.js} +1 -1
  4. package/chains/devnet-asset-hub/generated/dist/index.js +2 -2
  5. package/chains/devnet-individuality/.papi/polkadot-api.json +1 -1
  6. package/chains/devnet-individuality/generated/dist/{devnet_individuality_metadata-Bn9N9BNx.js → devnet_individuality_metadata-CPDaT0X3.js} +1 -1
  7. package/chains/devnet-individuality/generated/dist/index.js +2 -2
  8. package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
  9. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +114 -68
  10. package/chains/kusama-asset-hub/generated/dist/descriptors-DNAEasqY.js +25 -0
  11. package/chains/kusama-asset-hub/generated/dist/index.js +4 -4
  12. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +69 -32
  13. package/chains/kusama-asset-hub/generated/dist/{kusama_asset_hub_metadata-DXHUHPNj.js → kusama_asset_hub_metadata-BNhO8Mqj.js} +1 -1
  14. package/chains/kusama-asset-hub/generated/dist/metadataTypes-Cz8jP05k.js +3 -0
  15. package/chains/kusama-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  16. package/chains/paseo-asset-hub/.papi/polkadot-api.json +2 -2
  17. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +1344 -360
  18. package/chains/paseo-asset-hub/generated/dist/descriptors-BAWSQ1Bl.js +25 -0
  19. package/chains/paseo-asset-hub/generated/dist/index.d.ts +1 -1
  20. package/chains/paseo-asset-hub/generated/dist/index.js +6 -6
  21. package/chains/paseo-asset-hub/generated/dist/metadataTypes-DQUR_0DF.js +3 -0
  22. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  23. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +1250 -196
  24. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CASqP59m.js +3 -0
  25. package/chains/paseo-bulletin/.papi/polkadot-api.json +1 -1
  26. package/chains/paseo-bulletin/generated/dist/common-types.d.ts +58 -54
  27. package/chains/paseo-bulletin/generated/dist/descriptors-B1VRTRQv.js +25 -0
  28. package/chains/paseo-bulletin/generated/dist/index.js +4 -4
  29. package/chains/paseo-bulletin/generated/dist/metadataTypes-DIFn96VK.js +3 -0
  30. package/chains/paseo-bulletin/generated/dist/metadataTypes.d.ts +1 -1
  31. package/chains/paseo-bulletin/generated/dist/paseo_bulletin.d.ts +111 -47
  32. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-BXuTEONY.js +3 -0
  33. package/chains/paseo-individuality/.papi/polkadot-api.json +2 -2
  34. package/chains/paseo-individuality/generated/dist/common-types.d.ts +5487 -3342
  35. package/chains/paseo-individuality/generated/dist/descriptors-BjGIP9nH.js +25 -0
  36. package/chains/paseo-individuality/generated/dist/index.js +5 -5
  37. package/chains/paseo-individuality/generated/dist/metadataTypes-B2aDvcHG.js +3 -0
  38. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  39. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +2553 -644
  40. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CA3FRb1i.js +3 -0
  41. package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
  42. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +875 -178
  43. package/chains/polkadot-asset-hub/generated/dist/descriptors-B4K2pLTI.js +25 -0
  44. package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
  45. package/chains/polkadot-asset-hub/generated/dist/index.js +5 -5
  46. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-BgiH324c.js +3 -0
  47. package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  48. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +733 -62
  49. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-DkUzze1o.js +3 -0
  50. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +2 -2
  51. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +309 -182
  52. package/chains/previewnet-asset-hub/generated/dist/descriptors-CQcPA8uu.js +25 -0
  53. package/chains/previewnet-asset-hub/generated/dist/index.js +5 -5
  54. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CzaLmQWq.js +3 -0
  55. package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  56. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +293 -107
  57. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-DO5OICbZ.js +3 -0
  58. package/chains/previewnet-bulletin/.papi/polkadot-api.json +1 -1
  59. package/chains/previewnet-bulletin/generated/dist/index.js +1 -1
  60. package/chains/previewnet-individuality/.papi/polkadot-api.json +2 -2
  61. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +371 -179
  62. package/chains/previewnet-individuality/generated/dist/descriptors-BSwriMav.js +25 -0
  63. package/chains/previewnet-individuality/generated/dist/index.js +5 -5
  64. package/chains/previewnet-individuality/generated/dist/metadataTypes-B2aDvcHG.js +3 -0
  65. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +1 -1
  66. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +573 -289
  67. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-C8MsIfh4.js +3 -0
  68. package/package.json +1 -1
  69. package/chains/kusama-asset-hub/generated/dist/descriptors-DISR3KIi.js +0 -25
  70. package/chains/kusama-asset-hub/generated/dist/metadataTypes-D7CQu3b0.js +0 -3
  71. package/chains/paseo-asset-hub/generated/dist/descriptors-D_6q-TZg.js +0 -25
  72. package/chains/paseo-asset-hub/generated/dist/metadataTypes-uABbUf26.js +0 -3
  73. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BDERNxN0.js +0 -3
  74. package/chains/paseo-bulletin/generated/dist/descriptors-YjGUL06H.js +0 -25
  75. package/chains/paseo-bulletin/generated/dist/metadataTypes-BYRh30V_.js +0 -3
  76. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-CWv0bj9A.js +0 -3
  77. package/chains/paseo-individuality/generated/dist/descriptors-BV8FuMxu.js +0 -25
  78. package/chains/paseo-individuality/generated/dist/metadataTypes-4OzMJJMF.js +0 -3
  79. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Be34mrmF.js +0 -3
  80. package/chains/polkadot-asset-hub/generated/dist/descriptors-BwnkDiaI.js +0 -25
  81. package/chains/polkadot-asset-hub/generated/dist/metadataTypes--EQ8pxh1.js +0 -3
  82. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CN_MTTeF.js +0 -3
  83. package/chains/previewnet-asset-hub/generated/dist/descriptors-D499B54L.js +0 -25
  84. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-CKCAKys8.js +0 -3
  85. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-CPJf2_Ma.js +0 -3
  86. package/chains/previewnet-individuality/generated/dist/descriptors-BU9tL-VV.js +0 -25
  87. package/chains/previewnet-individuality/generated/dist/metadataTypes-D7WDCVlV.js +0 -3
  88. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-DEV5-BYY.js +0 -3
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRDJDgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGcGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAoUGFyYW1ldGVycwQAvAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhbWV0ZXJzLCBSdW50aW1lPgBJADROZXR3b3JrU3VmZml4BABJAQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZXR3b3JrU3VmZml4LCBSdW50aW1lPgBKACBCYWxhbmNlcwQAUQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBABlAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4ADQAYQXNzZXRzBABtAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+AA4AJEFzc2V0UmF0ZQQAuQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgAQADxBc3NldENvbnZlcnNpb24EAMEBAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0Q29udmVyc2lvbiwgUnVudGltZT4AEgAoUG9vbEFzc2V0cwQAyQEBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EANUBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBADZAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAOUBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAOkBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAC5AwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAL0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAxQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEADEEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBAA9BAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAQQQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAGFBlb3BsZQQATQQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlLCBSdW50aW1lPgAzABxNb2JSdWxlBABdBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNb2JSdWxlLCBSdW50aW1lPgA0AChQcm9vZk9mSW5rBABtBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm9vZk9mSW5rLCBSdW50aW1lPgA1ABBHYW1lBACVBAGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHYW1lLCBSdW50aW1lPgA3ABRTY29yZQQA5QQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NvcmUsIFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAA0FAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdENyZWRpdHMsIFJ1bnRpbWU+ADkAIER1bW15RGltBAAZBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEdW1teURpbSwgUnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAMQUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGVvcGxlTGl0ZSwgUnVudGltZT4APgAkUmVzb3VyY2VzBABFBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXNvdXJjZXMsIFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEAFEFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENodW5rc01hbmFnZXIsIFJ1bnRpbWU+AEAAHE1lbWJlcnMEAGEFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnMsIFJ1bnRpbWU+AEMAHENvaW5hZ2UEAGkFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvaW5hZ2UsIFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAxQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVyc05vdGlmaWVyLCBSdW50aW1lPgBFABxBaXJkcm9wBADdBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgBGABhIb25vdXIEAOUFAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhvbm91ciwgUnVudGltZT4ARwA4UGVvcGxlQWlyZHJvcHMEAPEFAc0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBlb3BsZUFpcmRyb3BzLCBSdW50aW1lPgBIAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAAQYB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZcABUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyc0RSdW50aW1lUGFyYW1ldGVycwABEEBTdGF0ZW1lbnRTdG9yYWdlBADEAbRkeW5hbWljX3BhcmFtczo6c3RhdGVtZW50X3N0b3JhZ2U6OlBhcmFtZXRlcnMAAAA8QnVsbGV0aW5TdG9yYWdlBAAJAQGwZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMAAQA4UGVvcGxlQWlyZHJvcHMEAC0BAaxkeW5hbWljX3BhcmFtczo6cGVvcGxlX2FpcmRyb3BzOjpQYXJhbWV0ZXJzAAIAOExpdGVQZXJzb25ob29kBAA5AQGsZHluYW1pY19wYXJhbXM6OmxpdGVfcGVyc29uaG9vZDo6UGFyYW1ldGVycwADAADEFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2UoUGFyYW1ldGVycwABMFBBY2NvdW50c0FwaUFsbG93YW5jZQgAyAFQQWNjb3VudHNBcGlBbGxvd2FuY2UAAMwBjE9wdGlvbjxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXI+AAAAVE5vdGlmaWNhdGlvbkFsbG93YW5jZQgA1AFUTm90aWZpY2F0aW9uQWxsb3dhbmNlAADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQIANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAzAGMT3B0aW9uPFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcj4ACgBQUGVyc29uU3RhdGVtZW50TGltaXQIANwBUFBlcnNvblN0YXRlbWVudExpbWl0AADMAYxPcHRpb248U3RhdGVtZW50QWxsb3dhbmNlUGFyYW1ldGVyPgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA4AFcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QAAOQBLE9wdGlvbjx1MzI+AAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAgA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAADkASxPcHRpb248dTMyPgACAFRTdG10U3RvcmVDbGVhbnVwTGltaXQIAOwBVFN0bXRTdG9yZUNsZWFudXBMaW1pdAAA5AEsT3B0aW9uPHUzMj4AAwBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bggA8AFwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bgAA5AEsT3B0aW9uPHUzMj4ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cIAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgAFAGhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAgA+AFoTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4ABwB4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kCAABAQF4TGl0ZU5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kAAD8AShPcHRpb248dTg+AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uCAAFAQFoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24AAOQBLE9wdGlvbjx1MzI+AAkAAMgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAADMBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0Aw0aW5kaXZfc3VwcG9ydChwYXJhbWV0ZXJzbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgAACAEgbWF4X3NpemU4AQx1MzIAASRtYXhfY291bnQ4AQx1MzIAANQUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVROb3RpZmljYXRpb25BbGxvd2FuY2UAAAAA2BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAAAADcFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VQUGVyc29uU3RhdGVtZW50TGltaXQAAAAA4BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOQEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADoFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2VsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAAAAOwUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZVRTdG10U3RvcmVDbGVhbnVwTGltaXQAAAAA8BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24AAAAA9BRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zRHN0YXRlbWVudF9zdG9yYWdlUFN0bXRTdG9yZUdyYWNlV2luZG93AAAAAPgUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAAAAD8BBhPcHRpb24EBFQBDAEIEE5vbmUAAAAQU29tZQQADAAAAQAAAQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QAAAAABQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAAAAAJARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2UoUGFyYW1ldGVycwABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbggADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAADkASxPcHRpb248dTMyPgAAAGhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwgAEQEBaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93AADkASxPcHRpb248dTMyPgABAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QIABUBAXhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QAAPwBKE9wdGlvbjx1OD4AAgBsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0CAAZAQFsTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0AADkASxPcHRpb248dTMyPgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUIAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQgAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUAACEBAYRPcHRpb248TG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbj4ABQAADQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdldExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAABEBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWhMb25nVGVybVN0b3JhZ2VHcmFjZVdpbmRvdwAAAAAVARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2V4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAAAABkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZWxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQAAAAAHQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlhExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvclBlb3BsZQAAAAAhAQQYT3B0aW9uBARUASUBAQgQTm9uZQAAABBTb21lBAAlAQAAAQAAJQEMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNkTG9uZ1Rlcm1TdG9yYWdlQWxsb2NhdGlvbgAACAEwdHJhbnNhY3Rpb25zOAEMdTMyAAEUYnl0ZXMoAQx1NjQAACkBFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNAYnVsbGV0aW5fc3RvcmFnZZRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JMaXRlUGVvcGxlAAAAAC0BFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzKFBhcmFtZXRlcnMAAQQsUHJpemVTb3VyY2UIADEBASxQcml6ZVNvdXJjZQAANQEBfE9wdGlvbjxzcF9ydW50aW1lOjpBY2NvdW50SWQzMj4AAAAAMQEUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHMsUHJpemVTb3VyY2UAAAAANQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAAA5ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZChQYXJhbWV0ZXJzAAEEPFJlZ2lzdHJhdGlvbkZlZQgAPQEBPFJlZ2lzdHJhdGlvbkZlZQAAQQEBPE9wdGlvbjxCYWxhbmNlPgAAAAA9ARRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zPGxpdGVfcGVyc29uaG9vZDxSZWdpc3RyYXRpb25GZWUAAAAAQQEEGE9wdGlvbgQEVAFFAQEIEE5vbmUAAAAQU29tZQQARQEAAAEAAEUBAAAFBwBJAQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBBDYWxsBARUAAEESHNldF9uZXR3b3JrX3N1ZmZpeAQBOG5ldHdvcmtfc3VmZml4TQEBbFByb2R1Y3RDb250ZXh0TmV0d29ya1N1ZmZpeAAABPxTZXQgdGhlIG5ldHdvcmsgc3VmZml4IHVzZWQgYnkgYWxsIHByb2R1Y3QtY29udGV4dCBkZXJpdmF0aW9ucy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABRAQw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQAAHNRUcmFuc2ZlciBzb21lIGxpcXVpZCBmcmVlIGJhbGFuY2UgdG8gYW5vdGhlciBhY2NvdW50LgA1AWB0cmFuc2Zlcl9hbGxvd19kZWF0aGAgd2lsbCBzZXQgdGhlIGBGcmVlQmFsYW5jZWAgb2YgdGhlIHNlbmRlciBhbmQgcmVjZWl2ZXIuEQFJZiB0aGUgc2VuZGVyJ3MgYWNjb3VudCBpcyBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdLBvZiB0aGUgdHJhbnNmZXIsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSB0cmFuc2FjdG9yLjhmb3JjZV90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWVVAQEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hvXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlVQEBKFQ6OkJhbGFuY2UACAysU2V0IHRoZSByZWd1bGFyIGJhbGFuY2Ugb2YgYSBnaXZlbiBhY2NvdW50LgCwVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIGlzIGByb290YC5sZm9yY2VfYWRqdXN0X3RvdGFsX2lzc3VhbmNlCAEkZGlyZWN0aW9uYQEBTEFkanVzdG1lbnREaXJlY3Rpb24AARRkZWx0YVUBAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZVkBARBib29sAAoc/EJ1cm4gdGhlIHNwZWNpZmllZCBsaXF1aWQgZnJlZSBiYWxhbmNlIGZyb20gdGhlIG9yaWdpbiBhY2NvdW50LgAlAUlmIHRoZSBvcmlnaW4ncyBhY2NvdW50IGVuZHMgdXAgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHQJAW9mIHRoZSBidXJuIGFuZCBga2VlcF9hbGl2ZWAgaXMgZmFsc2UsIHRoZSBhY2NvdW50IHdpbGwgYmUgcmVhcGVkLgBRAVVubGlrZSBzZW5kaW5nIGZ1bmRzIHRvIGEgX2J1cm5fIGFkZHJlc3MsIHdoaWNoIG1lcmVseSBtYWtlcyB0aGUgZnVuZHMgaW5hY2Nlc3NpYmxlLCEBdGhpcyBgYnVybmAgb3BlcmF0aW9uIHdpbGwgcmVkdWNlIHRvdGFsIGlzc3VhbmNlIGJ5IHRoZSBhbW91bnQgX2J1cm5lZF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUBAAAGRQEAWQEAAAUAAF0BAAACBABhAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAZQEMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVAUmVzdHJpY3RlZEVudGl0eQABHDRQZXJzb25hbEFsaWFzBAAIARRBbGlhcwAAAEBQZXJzb25hbElkZW50aXR5BAAoAQx1NjQAAQBEUmVmZXJyZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAACAEhBY2NvdW50UGFydGljaXBhbnQEAAQBJEFjY291bnRJZAADAEBJbnZpdGVkQ2FuZGlkYXRlBAAEASRBY2NvdW50SWQABAAoTGl0ZVBlcnNvbgQABAEkQWNjb3VudElkAAUAJExpdGVBbGlhcwQACAEUQWxpYXMABgAAbQEMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlAABQ6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeVEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0gcmVxdWlyZXMgYSBzcGVjaWZpYyBpZCwgdGhpcyBtdXN0JGVxdWFsIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABdPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAAUBVW5saWtlIGBjcmVhdGVgLCB0aGUgYGlkYCBkb2VzIG5vdCBoYXZlIHRvIGJlIHRoZSBvbmUgcmVxdWlyZWQgYnlJAVtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF06IGEgcHJpdmlsZWdlZCBvcmlnaW4gbWF5IHBpY2sgYW55IGBpZGAsIHdoaWNoIGlzIHRoZW5QbWFya2VkIGFzIGFsbG9jYXRlZC4AJCMgV2FybmluZwA9AUZvcmNpbmcgYW4gYXJiaXRyYXJ5IGBpZGAgaXMgZGFuZ2Vyb3VzOiB0aGUgcGFsbGV0IG9ubHkgY2hlY2tzIHRoYXQgYGlkYCBpcyBub3RdASpjdXJyZW50bHkqIGluIHVzZSwgbm90IHRoYXQgaXQgd2FzIG5ldmVyIHVzZWQgYmVmb3JlLiBSZXVzaW5nIGFuIGlkIGNhbiBjb3JydXB0IHN0YXRlLFEBbW9zdCBzZXZlcmVseSBmb3IgYnJpZGdlZCBhc3NldHMsIHdoZXJlIGEgY29sbGlzaW9uIGJyZWFrcyB0aGUgbG9jYWwvcmVtb3RlIG1hcHBpbmcuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlJAWFuIGV4aXN0aW5nIGFzc2V0LCBhbmQgbXVzdCBuZXZlciBoYXZlIGJlZW4gaW4gdXNlIHByZXZpb3VzbHkgKHNlZSB3YXJuaW5nIGFib3ZlKS5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRxAQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkcQEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlWQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZHEBAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXOtAQHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3J1AQEkSnVuY3Rpb25zAAB1ARAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAB5AQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBACRAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBACVAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BACZAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BACdAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAChAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAClAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BACpAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAHkBAAADAQAAAH0BAH0BECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya4EBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmuBAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBACFAQEkTmV0d29ya0lkAAkAAIEBBBhPcHRpb24EBFQBhQEBCBBOb25lAAAAEFNvbWUEAIUBAAABAACFARAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAiQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAI0BEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAACRAQAAAwIAAAB9AQCVAQAAAwMAAAB9AQCZAQAAAwQAAAB9AQCdAQAAAwUAAAB9AQChAQAAAwYAAAB9AQClAQAAAwcAAAB9AQCpAQAAAwgAAAB9AQCtAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEBBFMAAAQAtQEBGFZlYzxUPgAAsQEMNGFzc2V0c19jb21tb25gbG9jYWxfYW5kX2ZvcmVpZ25fYXNzZXRzXEZvcmVpZ25Bc3NldFJlc2VydmVEYXRhAAAIARxyZXNlcnZlcQEBIExvY2F0aW9uAAEwdGVsZXBvcnRhYmxlWQEBEGJvb2wAALUBAAACsQEAuQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRxAQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlvQEBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGW9AQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZHEBAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAEUBARB1MTI4AADBAQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDFxAQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDJxAQFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVkRQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWRFAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWluRQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbkUBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MXEBAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MnEBAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm5FAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmVFAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aMUBAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbkUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGjFAQFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXRFAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXhFAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlWQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxcQEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQycQEBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMuxQEAAAJxAQDJAQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAAUOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlRAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIHJlcXVpcmVzIGEgc3BlY2lmaWMgaWQsIHRoaXMgbXVzdCRlcXVhbCBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudFkBARBib29sAAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABdPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAAUBVW5saWtlIGBjcmVhdGVgLCB0aGUgYGlkYCBkb2VzIG5vdCBoYXZlIHRvIGJlIHRoZSBvbmUgcmVxdWlyZWQgYnlJAVtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF06IGEgcHJpdmlsZWdlZCBvcmlnaW4gbWF5IHBpY2sgYW55IGBpZGAsIHdoaWNoIGlzIHRoZW5QbWFya2VkIGFzIGFsbG9jYXRlZC4AJCMgV2FybmluZwA9AUZvcmNpbmcgYW4gYXJiaXRyYXJ5IGBpZGAgaXMgZGFuZ2Vyb3VzOiB0aGUgcGFsbGV0IG9ubHkgY2hlY2tzIHRoYXQgYGlkYCBpcyBub3RdASpjdXJyZW50bHkqIGluIHVzZSwgbm90IHRoYXQgaXQgd2FzIG5ldmVyIHVzZWQgYmVmb3JlLiBSZXVzaW5nIGFuIGlkIGNhbiBjb3JydXB0IHN0YXRlLFEBbW9zdCBzZXZlcmVseSBmb3IgYnJpZGdlZCBhc3NldHMsIHdoZXJlIGEgY29sbGlzaW9uIGJyZWFrcyB0aGUgbG9jYWwvcmVtb3RlIG1hcHBpbmcuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnlJAWFuIGV4aXN0aW5nIGFzc2V0LCBhbmQgbXVzdCBuZXZlciBoYXZlIGJlZW4gaW4gdXNlIHByZXZpb3VzbHkgKHNlZSB3YXJuaW5nIGFib3ZlKS5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASRpc19mcm96ZW5ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVyblkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzzQEByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABADRAQEYVmVjPFQ+AADRAQAAAhAA1QEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXddAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kRQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPdAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmHhAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAA4QEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAA5QEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2U5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHN9AwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2WBAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodHkCARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbnEBATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u5AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbu0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27tAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnntAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZFkBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN07QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyee0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c30DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ57QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADCBVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQuAAkBVGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgYXNzZXRzIGNsYWltZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdO0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzfQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZLEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGWtAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3Q5AgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXO1AwEsT3B0aW9uPHU2ND4ADixdAUF1dGhvcml6ZSBhbm90aGVyIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLikBVGhlIGBhbGlhc2VyYCBpcyBvbmx5IGF1dGhvcml6ZWQgdW50aWwgdGhlIHByb3ZpZGVkIGBleHBpcnlgIGJsb2NrIG51bWJlci5JAVRoZSBjYWxsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGFsaWFzIGluIG9yZGVyIHRvIHVwZGF0ZSBpdHNYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLgBRAVVzdWFsbHkgdXNlZnVsIHRvIGFsbG93IHlvdXIgbG9jYWwgYWNjb3VudCB0byBiZSBhbGlhc2VkIGludG8gZnJvbSBhIHJlbW90ZSBsb2NhdGlvbvRhbHNvIHVuZGVyIHlvdXIgY29udHJvbCAobGlrZSB5b3VyIGFjY291bnQgb24gYW5vdGhlciBjaGFpbikuAFEBV0FSTklORzogbWFrZSBzdXJlIHRoZSBjYWxsZXIgYG9yaWdpbmAgKHlvdSkgdHJ1c3RzIHRoZSBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWN0IGluWQF0aGVpci95b3VyIG5hbWUuIE9uY2UgYXV0aG9yaXplZCB1c2luZyB0aGlzIGNhbGwsIHRoZSBgYWxpYXNlcmAgY2FuIGZyZWVseSBpbXBlcnNvbmF0ZdRgb3JpZ2luYCBpbiBYQ00gcHJvZ3JhbXMgZXhlY3V0ZWQgb24gdGhlIGxvY2FsIGNoYWluLlxyZW1vdmVfYXV0aG9yaXplZF9hbGlhcwQBHGFsaWFzZXLtAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAPCF0BUmVtb3ZlIGEgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYCBmcm9tIHRoZSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IGNhbiBhbGlhcyBpbnRvkHRoZSBsb2NhbCBgb3JpZ2luYCBtYWtpbmcgdGhpcyBjYWxsLnRyZW1vdmVfYWxsX2F1dGhvcml6ZWRfYWxpYXNlcwAQCEkBUmVtb3ZlIGFsbCBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgcyB0aGF0IGNhbiBhbGlhcyBpbnRvIHRoZSBsb2NhbCBgb3JpZ2luYERtYWtpbmcgdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYzBADxAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAAUCATB2NDo6TG9jYXRpb24ABAAIVjUEAHEBATB2NTo6TG9jYXRpb24ABQAA8QEQLHN0YWdpbmdfeGNtCHYzNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3L1AQEkSnVuY3Rpb25zAAD1ARAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA+QEBIEp1bmN0aW9uAAEACFgyCAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgACAAhYMwwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgADAAhYNBAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAQACFg1FAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAFAAhYNhgA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAGAAhYNxwA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAcACFg4IAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAA+QEBIEp1bmN0aW9uAAD5AQEgSnVuY3Rpb24AAPkBASBKdW5jdGlvbgAIAAD5ARAMeGNtCHYzIGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3Jr/QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/0BAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAFUBARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSJAQEYQm9keUlkAAEQcGFydI0BASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAAECASROZXR3b3JrSWQACQAA/QEEGE9wdGlvbgQEVAEBAgEIEE5vbmUAAAAQU29tZQQAAQIAAAEAAAECEAx4Y20IdjMganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAAUCECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IJAgEkSnVuY3Rpb25zAAAJAhAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAANAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAdAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAhAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAlAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAApAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAtAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAxAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAA1AgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAA0CAAADAQAAABECABECECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaxUCAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkiQEBGEJvZHlJZAABEHBhcnSNAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAZAgEkTmV0d29ya0lkAAkAABUCBBhPcHRpb24EBFQBGQIBCBBOb25lAAAAEFNvbWUEABkCAAABAAAZAhAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAB0CAAADAgAAABECACECAAADAwAAABECACUCAAADBAAAABECACkCAAADBQAAABECAC0CAAADBgAAABECADECAAADBwAAABECADUCAAADCAAAABECADkCCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAPQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAC1AgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAAEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAA9AgwMeGNtCHYzDFhjbQQQQ2FsbAAABABBAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAQQIAAAJFAgBFAgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEkCASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEkCASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABJAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlaQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVylQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzSQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnxAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3R5AgEYV2VpZ2h0AAEQY2FsbJ0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAPUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAKECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdPEBATRNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWlAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRJAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc1ECAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA9AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA9AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABGHRpY2tldPEBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkCARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQASQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABJAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACVAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABtAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAI0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+hAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAChAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yawECASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbvUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLxAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARh0YXJnZXTxAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0UQIBKE11bHRpQXNzZXQAARRvd25lcvEBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldFECAShNdWx0aUFzc2V0AAEYbG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA8QEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lulQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABJAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQATQIBPFZlYzxNdWx0aUFzc2V0PgAATQIAAAJRAgBRAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRVAgEcQXNzZXRJZAABDGZ1blkCASxGdW5naWJpbGl0eQAAVQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAPEBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABZAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFUBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABdAgE0QXNzZXRJbnN0YW5jZQABAABdAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFUBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAGECARxbdTg7IDhdAAMAHEFycmF5MTYEAGUCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABhAgAAAwgAAAAMAGUCAAADEAAAAAwAaQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQASQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAB9AgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAABtAgQYT3B0aW9uBARUAXECAQgQTm9uZQAAABBTb21lBABxAgAAAQAAcQIAAAQIOHUCAHUCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAeQIMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAB9AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYECBFMAAAQAiQIBGFZlYzxUPgAAgQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWFAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZYUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAhQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJAgAAAoECAI0CDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAkQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACRAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAkQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACVAgQYT3B0aW9uBARUAfEBAQgQTm9uZQAAABBTb21lBADxAQAAAQAAmQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAnQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAoQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27xAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAClAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQASQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAKkCAThXaWxkTXVsdGlBc3NldAABAACpAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRVAgEcQXNzZXRJZAABDGZ1bq0CATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkVQIBHEFzc2V0SWQAAQxmdW6tAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAArQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAACxAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAB5AgEYV2VpZ2h0AAEAALUCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAuQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALkCAAACvQIAvQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAMECARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADBAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMECARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNl2QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVy7QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8ECARhBc3NldHMAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c8ECARhBc3NldHMAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdHkCARhXZWlnaHQAARBjYWxsnQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQACQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeQUCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl9QIBLEFzc2V0RmlsdGVyAAEQd2FudMECARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlBQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c/UCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzyQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAC1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAC1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c8ECARhBc3NldHMAARh0aWNrZXQFAgEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADBAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADBAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA7QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAG0CAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb/ECAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAPECAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAEQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrGQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uCQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABIHVubG9ja2VyBQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTJAgEUQXNzZXQAARh0YXJnZXQFAgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldMkCARRBc3NldAABFG93bmVyBQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldMkCARRBc3NldAABGGxvY2tlcgUCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAAFAgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu7QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAwQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADFAgEoVmVjPEFzc2V0PgAAxQIAAALJAgDJAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkzQIBHEFzc2V0SWQAAQxmdW7RAgEsRnVuZ2liaWxpdHkAAM0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAAUCASBMb2NhdGlvbgAA0QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQA1QIBNEFzc2V0SW5zdGFuY2UAAQAA1QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABhAgEcW3U4OyA4XQADABxBcnJheTE2BABlAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA2QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADBAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADdAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAI0CAThNYXliZUVycm9yQ29kZQAFAADdAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeECBFMAAAQA6QIBGFZlYzxUPgAA4QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZeUCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l5QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADlAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAOkCAAAC4QIA7QIEGE9wdGlvbgQEVAEFAgEIEE5vbmUAAAAQU29tZQQABQIAAAEAAPECDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb24FAgEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAAA9QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADBAgEYQXNzZXRzAAAAEFdpbGQEAPkCASRXaWxkQXNzZXQAAQAA+QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZM0CARxBc3NldElkAAEMZnVu/QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTNAgEcQXNzZXRJZAABDGZ1bv0CATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAAD9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAAEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQABQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAAUDAAACCQMACQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAA0DARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAANAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAA0DARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlJQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkCARhXZWlnaHQAARxxdWVyaWVyRQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cw0DARhBc3NldHMAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cw0DARhBc3NldHMAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZJkCAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodEkDAThPcHRpb248V2VpZ2h0PgABEGNhbGydAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAB1AQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5cQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVRAwEsQXNzZXRGaWx0ZXIAARB3YW50DQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABHHJlc2VydmVxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMVAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzDQMBGEFzc2V0cwABGHRpY2tldHEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAA0DARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAA0DARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABFAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAKQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAB9AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuFAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb251AQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbQEDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0FQMBFEFzc2V0AAEgdW5sb2NrZXJxAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABGHRhcmdldHEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0FQMBFEFzc2V0AAEUb3duZXJxAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0FQMBFEFzc2V0AAEYbG9ja2VycQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHEBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5FAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQVAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNdAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNlAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtAQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbm0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20BAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNxAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAA0DECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAEQMBKFZlYzxBc3NldD4AABEDAAACFQMAFQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZBkDARxBc3NldElkAAEMZnVuHQMBLEZ1bmdpYmlsaXR5AAAZAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABABxAQEgTG9jYXRpb24AAB0DECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEACEDATRBc3NldEluc3RhbmNlAAEAACEDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAYQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAZQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAACUDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQADQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQANQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACNAgE4TWF5YmVFcnJvckNvZGUABQAAKQMEGE9wdGlvbgQEVAEtAwEIEE5vbmUAAAAQU29tZQQALQMAAAEAAC0DAAAECDgxAwAxAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAeQIBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAANQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE5AwRTAAAEAEEDARhWZWM8VD4AADkDDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWU9AwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZT0DAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAPQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABBAwAAAjkDAEUDBBhPcHRpb24EBFQBcQEBCBBOb25lAAAAEFNvbWUEAHEBAAABAABJAwQYT3B0aW9uBARUAXkCAQgQTm9uZQAAABBTb21lBAB5AgAAAQAATQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AABRAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAA0DARhBc3NldHMAAAAQV2lsZAQAVQMBJFdpbGRBc3NldAABAABVAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkGQMBHEFzc2V0SWQAAQxmdW5ZAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZBkDARxBc3NldElkAAEMZnVuWQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFkDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAXQMEGE9wdGlvbgQEVAFhAwEIEE5vbmUAAAAQU29tZQQAYQMAAAEAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABRAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAFEDASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAFEDASxBc3NldEZpbHRlcgACAABlAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWEDBFMAAAQAaQMBGFZlYzxUPgAAaQMAAAJhAwBtAwQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAcQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1AwRTAAAEAHkDARhWZWM8VD4AAHUDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAAAAHkDAAACdQMAfQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAEkCATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAMECASh2NDo6QXNzZXRzAAQACFY1BAANAwEodjU6OkFzc2V0cwAFAACBAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAIUDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAlQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAChAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAhQMMDHhjbQh2MwxYY20EEENhbGwAAAQAiQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAIkDAAACjQMAjQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABJAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABJAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQASQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZWkCASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllcpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c0kCASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ58QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAD1AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAChAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyefEBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOlAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TxAQE0TXVsdGlMb2NhdGlvbgABDHhjbT0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlpQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50SQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl8QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzpQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN08QEBNE11bHRpTG9jYXRpb24AAQx4Y209AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c6UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNRAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAhQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAhQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNJAgEsTXVsdGlBc3NldHMAARh0aWNrZXTxAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAEkCASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQASQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAlQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAoQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAD5AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsBAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb271AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtPQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRRAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy8QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldFECAShNdWx0aUFzc2V0AAEYdGFyZ2V08QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldFECAShNdWx0aUFzc2V0AAEUb3duZXLxAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRRAgEoTXVsdGlBc3NldAABGGxvY2tlcvEBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAPEBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdLECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbpUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAkQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAlQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAmQMAAAKdAwCdAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAwQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAMECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAwQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XZAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABHHF1ZXJpZXLtAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzwQIBGEFzc2V0cwABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kmQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQIBGFdlaWdodAABEGNhbGyRAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAJAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHP1AgEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNttQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmX1AgEsQXNzZXRGaWx0ZXIAARB3YW50wQIBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c/UCASxBc3NldEZpbHRlcgABHHJlc2VydmUFAgEgTG9jYXRpb24AAQx4Y221AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz9QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPJAgEUQXNzZXQAATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzwQIBGEFzc2V0cwABGHRpY2tldAUCASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADtAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAbQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACNAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA8QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbbUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0yQIBFEFzc2V0AAEgdW5sb2NrZXIFAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMkCARRBc3NldAABGHRhcmdldAUCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0yQIBFEFzc2V0AAEUb3duZXIFAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0yQIBFEFzc2V0AAEYbG9ja2VyBQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSxAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7tAgFAT3B0aW9uPExvY2F0aW9uPgAvAAChAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAKUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAClAwAAAqkDAKkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAANAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQADQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAANAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZSUDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAEccXVlcmllckUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMNAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnlxAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMNAwEYQXNzZXRzAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSZAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHRJAwE4T3B0aW9uPFdlaWdodD4AARBjYWxskQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAdQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQMBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbQEDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQMBLEFzc2V0RmlsdGVyAAEQd2FudA0DARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNRAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlcQEBIExvY2F0aW9uAAEMeGNtAQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c1EDASxBc3NldEZpbHRlcgABEGRlc3RxAQEgTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1EDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzFQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAChAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAChAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cw0DARhBc3NldHMAARh0aWNrZXRxAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAANAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAANAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQARQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEACkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAjQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb00DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAE0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAfQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrhQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9udQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y20BAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldBUDARRBc3NldAABIHVubG9ja2VycQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQVAwEUQXNzZXQAARh0YXJnZXRxAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldBUDARRBc3NldAABFG93bmVycQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldBUDARRBc3NldAABGGxvY2tlcnEBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABxAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0sQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luRQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0FQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzXQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblkBARBib29sAAEYYXNzZXRzZQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbQEDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5tAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtoQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzcQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAACtAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAO0BAURWZXJzaW9uZWRMb2NhdGlvbgADAACxAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAFUCASx2Mzo6QXNzZXRJZAADAAhWNAQAzQIBLHY0OjpBc3NldElkAAQACFY1BAAZAwEsdjU6OkFzc2V0SWQABQAAtQMEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAC5AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0DDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbsEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXR5AgEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEDCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZVhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEMEEhlcmUAAAAYUGFyZW50AAEAHFNpYmxpbmcEAJwBGFBhcmFJZAACAADFAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleM0DAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc8kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7RAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzyQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu0QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDAAACIADNAwAABQQA0QMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEwGHN5c3RlbQQA1QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADZAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAN0DAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABhQZW9wbGUEAOEDAWxpbmRpdl9wYWxsZXRfcGVvcGxlOjpPcmlnaW4AMwAoUHJvb2ZPZkluawQA7QMBqGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6Ok9yaWdpbjxSdW50aW1lPgA1ABBHYW1lBADxAwGIaW5kaXZfcGFsbGV0X2dhbWU6Ok9yaWdpbjxSdW50aW1lPgA3ABRTY29yZQQA9QMBjGluZGl2X3BhbGxldF9zY29yZTo6T3JpZ2luPFJ1bnRpbWU+ADgAKFBlb3BsZUxpdGUEAPkDAaRpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6Ok9yaWdpbjxSdW50aW1lPgA+ACRSZXNvdXJjZXMEAP0DAXhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzOjpPcmlnaW4APwAcTWVtYmVycwQABQQBlGluZGl2X3BhbGxldF9tZW1iZXJzOjpPcmlnaW48UnVudGltZT4AQwAcQ29pbmFnZQQADQQBlGluZGl2X3BhbGxldF9jb2luYWdlOjpPcmlnaW48UnVudGltZT4ARAAYSG9ub3VyBAApBAFsaW5kaXZfcGFsbGV0X2hvbm91cjo6T3JpZ2luAEcAANUDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADZAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQAcQEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBABxAQEgTG9jYXRpb24AAQAA3QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADhAwxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQYT3JpZ2luAAEIQFBlcnNvbmFsSWRlbnRpdHkEACgBKFBlcnNvbmFsSWQAAAA0UGVyc29uYWxBbGlhcwQA5QMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAA5QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHlYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAADAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcmluZzgBJFJpbmdJbmRleAABCGNh6QMBPENvbnRleHR1YWxBbGlhcwAA6QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHk8Q29udGV4dHVhbEFsaWFzAAAIARRhbGlhcwgBFEFsaWFzAAEcY29udGV4dAgBHENvbnRleHQAAO0DDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhPcmlnaW4EBFQAAQxYQXV0aG9yaXplZEFwcGx5V2l0aFNpZwQABAEwVDo6QWNjb3VudElkAAAARFJlZmVycmVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAQBASW52aXRlZENhbmRpZGF0ZQQABAEwVDo6QWNjb3VudElkAAIAAPEDDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQYT3JpZ2luBARUAAEEHEludml0ZWQEAAQBMFQ6OkFjY291bnRJZAAAAAD1AwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBhPcmlnaW4EBFQAAQRIQWNjb3VudFBhcnRpY2lwYW50BAAEATBUOjpBY2NvdW50SWQAAAAA+QMMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQYT3JpZ2luBARUAAEIKExpdGVQZXJzb24EAAQBMFQ6OkFjY291bnRJZAAAACRMaXRlQWxpYXMEAOUDAVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAEAAP0DDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzGHBhbGxldBhPcmlnaW4AAQxETm90aWZpY2F0aW9uQWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAAEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAAABBAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAAFBAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAEJBAEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAADlAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAACQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAANBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAEJBAEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbhEEARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWUlBAEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAAEQQMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAQxhZ2XNAwEMdTE2AAAVBAAABQkAGQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdBARTAAAEACEEARhWZWM8VD4AAB0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAIQQAAAIdBAAlBAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWUVBAEwRGVub21pbmF0aW9uAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAACkEDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBhPcmlnaW4AAQQUVm90ZXIEARxhbGlhc2VzLQQBLFZvdGVBbGlhc2VzAAAAAC0EDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzLFZvdGVBbGlhc2VzAAAIATRzdWJqZWN0X2FsaWFzCAEwU3ViamVjdEFsaWFzAAEscG9pbnRfYWxpYXMIAShQb2ludEFsaWFzAAAxBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGTNAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQ1BAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0eQIBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZM0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludDUEAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHR5AgEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xkzQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUEBBhPcHRpb24EBFQBOQQBCBBOb25lAAAAEFNvbWUEADkEAAABAAA5BAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAA9BAwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodHkCARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5BBAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZUUEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4zQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRpbmRleM0DAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlRQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBAQYT3B0aW9uBARUAUkEAQgQTm9uZQAAABBTb21lBABJBAAAAQAASQQIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAABNBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAUwtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuAGEBVGhpcyBjYWxsIGlzIGF1dGhvcml6ZWQgdGhyb3VnaCB0aGUgYEFzUGVyc29uYWxBbGlhc1dpdGhQcm9vZmAgdmFyaWFudCBvZiB0aGUgYEFzUGVyc29uYFkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaCBwcm92aWRlcyBubyBub25jZS1iYXNlZCByZXBsYXkgcHJvdGVjdGlvbi4gUmVwbGF5IGlzIG9ubHlZAXByZXZlbnRlZCBmb3IgYXMgbG9uZyBhcyB0aGUgYWxpYXMgc3RpbGwgcG9pbnRzIGF0IHRoZSBhY2NvdW50IHRoaXMgY2FsbCBzZXRzLiBBcyBzb29uVQFhcyB0aGUgYWxpYXMgaXMgcG9pbnRlZCBhdCBhIGRpZmZlcmVudCBhY2NvdW50IChieSBhbm90aGVyIGBzZXRfYWxpYXNfYWNjb3VudGApLCB0aGlzTQFjYWxsIGJlY29tZXMgcmVwbGF5YWJsZSBhZ2FpbiB1bnRpbCBpdHMgdmFsaWRpdHkgcGVyaW9kIGVsYXBzZXMuIENvbnNlcXVlbnRseSwgaWYgMlkBc3VjaCB0cmFuc2FjdGlvbnMgc2V0dGluZyAyIGRpZmZlcmVudCBhY2NvdW50cyBoYXZlIG92ZXJsYXBwaW5nIHZhbGlkaXR5IHBlcmlvZHMsIHRoZXlNAWNhbiBiZSByZXBsYXllZCBhZ2FpbnN0IGVhY2ggb3RoZXIgaW5kZWZpbml0ZWx5IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG92ZXJsYXAuIFRvVQFhdm9pZCB0aGlzLCB0aGUgY2FsbGVyIG11c3Qgbm90IGhhdmUgMiBzdWNoIHRyYW5zYWN0aW9ucyBhbGl2ZSAod2l0aGluIHRoZWlyIHZhbGlkaXR5ZHBlcmlvZCkgYXQgdGhlIHNhbWUgdGltZS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAACBBUBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIGFsaWFzIHRvIGl0cyByZWdpc3RlcmVkIGFjY291bnQuaGZvcmNlX3JlY29nbml6ZV9wZXJzb25ob29kBAEYcGVvcGxlUQQBQFZlYzxNZW1iZXJPZjxUPj4AAxDgUmVjb2duaXplIGEgc2V0IG9mIHBlb3BsZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNoZWNrcy4AUQFUaGUgcGVvcGxlIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwcm92aWRlZCBsaXN0IG9mIGtleXMgYW5kIHdpbGwgZWFjaCBiZSBhc3NpZ25lZCwgaW6Yb3JkZXIsIHRoZSBuZXh0IGF2YWlsYWJsZSBwZXJzb25hbCBJRC5cc2V0X3BlcnNvbmFsX2lkX2FjY291bnQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE0Y2FsbF92YWxpZF9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAQ8aFNldCBhIHBlcnNvbmFsIGlkIGFjY291bnQuAE0BVGhlIGFjY291bnQgY2FuIHRoZW4gYmUgdXNlZCB0byBzaWduIHRyYW5zYWN0aW9ucyBvbiBiZWhhbGYgb2YgdGhlIHBlcnNvbmFsIGlkLCBhbmSkcHJvdmlkZSByZXBsYXkgcHJvdGVjdGlvbiB3aXRoIHRoZSBub25jZS4AUQFUaGlzIHRyYW5zYWN0aW9uIGlzIHJlZnVuZGVkIGlmIHN1Y2Nlc3NmdWwgYW5kIG5vIGFjY291bnQgd2FzIHByZXZpb3VzbHkgc2V0IGZvciB0aGUwcGVyc29uYWwgaWQuALBUaGUgY2FsbCBpcyB2YWxpZCBmcm9tIGBjYWxsX3ZhbGlkX2F0YCB1bnRpbLxgY2FsbF92YWxpZF9hdCArIGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgLh0BYGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2VgIGlzIGEgY29uc3RhbnQgYXZhaWxhYmxlIGluIHRoZSBtZXRhZGF0YS4ALFBhcmFtZXRlcnM6uC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBzZXQgdGhlIGFsaWFzIGZvci4BAS0gYGNhbGxfdmFsaWRfYXRgOiBUaGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlIGNhbGwgYmVjb21lcyB2YWxpZC5kdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudAAFBHhVbnNldCB0aGUgcGVyc29uYWwgaWQgYWNjb3VudC5gY3JlYXRlX3Blb3BsZV9jb2xsZWN0aW9uAAYodENyZWF0ZSB0aGUgcGVvcGxlIGNvbGxlY3Rpb24uACkBVGhpcyBjYWxsIGlzIHZhbGlkIG9ubHkgaWYgdGhlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCB5ZXQuIE9uY2UgY3JlYXRlZCyMdGhpcyBjYWxsIGNhbm5vdCBiZSBleGVjdXRlZCBhZ2Fpbi4A1FRoZSBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBhIGZpeGVkIGNvbmZpZ3VyYXRpb246uC0gT3duZXI6IENvbmZpZ3VyZWQgdmlhIGBDb2xsZWN0aW9uT3duZXJgIHR5cGXALSBPbmJvYXJkaW5nIHNpemU6IGBQRU9QTEVfT05CT0FSRElOR19TSVpFYCAoMTApSC0gTW9kZTogYEZsZXhpYmxlYEwtIFJpbmcgc2l6ZTogYFIyZTlgWGNsZWFuX3VwX3N0YWxlX2FsaWFzZXMEARxhbGlhc2VzVQQB3EJvdW5kZWRWZWM8Q29udGV4dHVhbEFsaWFzLCBDb25zdFUzMjxNQVhfQlVMS19DTEVBTlVQPj4AB1CgUmVtb3ZlIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmdzLgBgQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46LQEtIGl0cyBjb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF0gKGdvdmVybmFuY2WoICByZWNvbmZpZ3VyYXRpb24sIGVuZGVkIGFpcmRyb3AgZXRjLiksIG9ycC0gaXRzIHJpbmcgaGFzIGJlZW4gZGVsZXRlZC4AHQFSZXZpc2lvbiBtaXNtYXRjaGVzIGRvIG5vdCByZW5kZXIgYW4gYWxpYXMgc3RhbGUuIFRoZSB1c2VyIGNhbiBjb250aW51ZRUBdHJhbnNhY3RpbmcgdmlhIGBBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWRgIHdpdGhvdXQgaGF2aW5nIHRvTHJlZG8gYWNjb3VudCBzZXR1cC4A/FR5cGljYWxseSBzdWJtaXR0ZWQgYnkgdGhlIE9DVywgYnV0IHRoZSBkaXNwYXRjaCBkb2VzIG5vdCB0cnVzdKh0aGUgY2FsbGVyLiBFYWNoIGFsaWFzIGlzIHJlLXZhbGlkYXRlZCB2aWHsYFNlbGY6OmVuc3VyZV9hbGlhc19pc19zdGFsZWA7IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEEAAACCABVBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekDBFMAAAQAWQQBGFZlYzxUPgAAWQQAAALpAwBdBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvbmEEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAABEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgY2xvc2VkLiBJdCBpcyBpbmNsdWRlZCBpbiB0aGlzIGNhbGwncyBkZWNsYXJlZCB3ZWlnaHQgYW5kWQFjaGVja2VkIGFnYWluc3QgdGhlIGFjdHVhbCBjYWxsYmFjayB3ZWlnaHQgb24tY2hhaW4sIHdpdGggdGhlIGRpZmZlcmVuY2UgcmVmdW5kZWQuIFRoZUEBY2FsbCBmYWlscyB3aXRoIGBDYWxsYmFja1dlaWdodFRvb0xvd2AgaWYgdGhlIGJvdW5kIGRvZXMgbm90IGNvdmVyIHRoZSBjYWxsYmFjay4oY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMLQFPcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgdHJhbnNhY3Rpb24gaXMgYXV0aG9yaXplZCBpbiBgQXV0aG9yaXplQ2FsbGBhAXdoZW4gdGhlIHNvdXJjZSBpcyBsb2NhbCAoZS5nLiBmcm9tIHRoZSBvZmZjaGFpbiB3b3JrZXIpLiBGb3IgZXh0ZXJuYWwgdHJhbnNhY3Rpb25zLCB1c2VQYGNsZWFuX3ZvdGVfc2lnbmVkYC4kcmVhcF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAADACRpbnRlcnZlbmUMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAUxtYXhfY2FsbGJhY2tfd2VpZ2h0eQIBGFdlaWdodAAEEFEBYG1heF9jYWxsYmFja193ZWlnaHRgIGlzIGEgY2FsbGVyLWRlY2xhcmVkIHVwcGVyIGJvdW5kIG9uIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGxiYWNrVQFkaXNwYXRjaGVkIHdoZW4gdGhlIGNhc2UgaXMgaW50ZXJ2ZW5lZC4gSXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYWxsJ3MgZGVjbGFyZWQgd2VpZ2h0WQFhbmQgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgY2FsbGJhY2sgd2VpZ2h0IG9uLWNoYWluLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHJlZnVuZGVkLlEBVGhlIGNhbGwgZmFpbHMgd2l0aCBgQ2FsbGJhY2tXZWlnaHRUb29Mb3dgIGlmIHRoZSBib3VuZCBkb2VzIG5vdCBjb3ZlciB0aGUgY2FsbGJhY2suKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAJAFhyZW1vdmVfcGF5b3V0X3NjaGVkdWxlBAEUaW5kZXg4AQx1MzIACgAwY2xhaW1fY3JlZGl0AAsAMGNsZWFuX3BvaW50cwgBFHJvdW5kOAEoUm91bmRJbmRleAABFHZvdGVyCAEUQWxpYXMADABAZm9yY2VfcmlwZW5fY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADQAodG91Y2hfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgADgBQY2xlYXJfdm90aW5nX3BlbmFsdHkADwBEY2xlYW5fdm90ZV9zaWduZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEUdm90ZXIIARRBbGlhcwAQBFhPcmlnaW4gbXVzdCBiZSBzaWduZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmEEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5JEp1ZGdlbWVudAABCBRUcnV0aAQAZQQBFFRydXRoAAAAIENvbnRlbXB0AAEAAGUEEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5FFRydXRoAAEIEFRydWUAAAAURmFsc2UAAQAAaQQAAAI4AG0EDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEgTW9iIFJ1bGUgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC78LSBSZXF1ZXN0cyBhIGp1ZGdlbWVudCBmb3IgdGhlIHByb29mLW9mLWluayBldmlkZW5jZSBzdGF0ZW1lbnQuUQEtIE5lZWRzIGBTaWduZWRFeHRlbnNpb25gIHRvIGF2b2lkIHVwZnJvbnQgcmVxdWlyZW1lbnQgZm9yIGZlZSBpZiBganVkZ2VtZW50cyA9PSAwYC45AS0gSWYgYGp1ZGdlbWVudHMgPiAwYCwgdGhlbiBhbiBhZGRpdGlvbmFsIGZlZSBzaG91bGQgYmUgY2hhcmdlZCBpbnRvIFRyZWFzdXJ5LhhqdWRnZWQMARh0aWNrZXQ4AURPcmFjbGVUaWNrZXRPZjxUPgABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBOhJcyBjYWxsZWQgYnkgdGhlIE9yYWNsZSB3aGVuIHRoZSBldmlkZW5jZSBoYXMgYmVlbiBqdWRnZWQuRHJlZ2lzdGVyX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcHEEAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQADJFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuIQEqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIGNhbmRpZGF0ZSdzIHJlZmVycmFsIHJld2FyZC5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuVHJlZ2lzdGVyX25vbl9yZWZlcnJlZAwBDGtleQgBLE1lbWJlck9mPFQ+AAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAAUhwcm9vZl9vZl9vd25lcnNoaXBxBAGwPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABDhQLSBHZXRzIGEgbmV3IGBpbmRleGB4LSBQdXRzIGFuIGVudHJ5IGludG8gYFBlb3BsZWAumC0gQ2FsbHMgUGVvcGxlL2BuZXdQZXJzb24oaW5kZXgsIGtleSlgACwjIEFyZ3VtZW50c7AqIGBrZXlgIC0gVGhlIHBlcnNvbmFsIGlkZW50aXR5IHRvIHJlZ2lzdGVyLsAqIGBkZXN0aW5hdGlvbmAgLSBUaGUgYWNjb3VudCByZWNlaXZpbmcgcmV3YXJkcy5JASogYHByb29mX29mX293bmVyaHNpcGAgLSBUaGUgc2lnbmF0dXJlIG9mIHByZWRlZmluZWQgcHJlZml4IGAicG9wIHJlZ2lzdGVyIHVzaW5nImCoICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgc2VuZGVyIGFjY291bnQgaWQuACgjIFdhcm5pbmc6ADkBVGhpcyBjYWxsIGNhbiBwYXkgdHdvIHJld2FyZHMgdG8gdGhlIHNhbWUgYWNjb3VudCBmb3Igbm9uLXJlZmVycmVkIGNhbmRpZGF0ZXMuKQFUaGUgYXBwIGlzIHJlc3BvbnNpYmxlIGZvciBhbnkgYWRkaXRpb25hbCBwcml2YWN5IGhhbmRsaW5nIGFmdGVyIHRyYW5zZmVyLhhyZXJvbGwABQAYY29tbWl0CAEYY2hvaWNldQQBJElua0Nob2ljZQABKHJlcXVpcmVfaWS1AwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAYUSQFDb21taXQgdG8gYSBkZXNpZ24gYW5kIGF1dGhvcml6ZSB0aGUgc3RvcmFnZSBmb3IgKHBvc3NpYmx5IGp1c3QgaW5pdGlhbCkgZXZpZGVuY2UuAFUBSWYgYSBzcGVjaWZpYyBwZXJzb25hbCBpZGVudGl0eSBpcyByZXF1aXJlZCwgdGhlbiB0aGlzIGNhbiBiZSBwbGFjZWQgaW4gYHJlcXVpcmVfaWRgLkEBVGhpcyBjYW4gYmUgYW55IHVudXNlZC91bnJlc2VydmVkIHBlcnNvbmFsIGlkZW50aXR5IG5vIGdyZWF0ZXIgdGhhbiB0aGUgYE5leHRJZGAgY291bnRlci40YWxsb2NhdGVfZnVsbAAHABx0aW1lb3V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAIDDkBT25jZSBhIHRpbWVvdXQgcGFzc2VzLCByZW1vdmVzIGEgY2FuZGlkYXRlIHdobyBpcyBzZWxlY3RlZCBidXQgbm90IHlldCBwcm92ZW4uWQFJZiB0aGUgY2FuZGlkYXRlIHdhcyByZWZlcnJlZCB0aGVuIHJlZmVycmFsIGlzIGJhZCwgaWYgY2FuZGlkYXRlIGFwcGxpZWQgd2l0aCBkZXBvc2l0LExkZXBvc2l0IGlzIHNsYXNoZWQuIGZsYWtlb3V0AAkEtFJlbW92ZSBhIGNhbmRpZGF0ZSB3aG8gaGFzIG5vdCB5ZXQgY29tbWl0dGVkLlBhcHBseV93aXRoX3NpZ25hdHVyZQwBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABJHNpZ25hdHVyZXkEAUhUOjpUaWNrZXRTaWduYXR1cmUAARh0aWNrZXQEASRUOjpUaWNrZXQAChB0VXRpbGl6ZSBhIHJlZmVycmFsIHNpZ25hdHVyZS4AXQFUaGUgcGF5bG9hZCB0byBiZSBzaWduZWQgYnkgdGhlIHJlZmVycmVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5UYXBwbHlfd2l0aF9pbnZpdGF0aW9uDAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJleQQBSFQ6OlRpY2tldFNpZ25hdHVyZQATENRBcHBseSB0byB0aGUgUHJvb2Ytb2YtSW5rIHByb2Nlc3Mgd2l0aCBhbiBpbnZpdGF0aW9uLgBZAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgaW52aXRlciB1c2luZyB0aGVpciByZWdpc3RlcmVkIGtleSBwYWlyIGlzIHRoZSBlbmNvZGVkpGJ5dGVzIG9mIHRoZSBhY2NvdW50IElEIG9mIHRoZSBjYW5kaWRhdGUuRGFkZF9kZXNpZ25fZmFtaWx5DAEUaW5kZXjNAwEsRmFtaWx5SW5kZXgAARBraW5kgQQBKEZhbWlseUtpbmQAAQhpZAgBIEZhbWlseUlkAAsE8EFkZCBhIGRlc2lnbiBmYW1pbHkuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLkxzZXRfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AAwYvEFkZCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24uAFUBT25seSBvbmUgcmVmZXJyYWwgdGlja2V0IG1heSBiZSBhY3RpdmUgYXQgYW55IGdpdmVuIHRpbWUgZm9yIG9uZSBwZXJzb24uIENhbGxpbmcgdGhpcyUBZXh0cmluc2ljIHdoaWxlIGEgdmFsaWQgdGlja2V0IGlzIHNldCB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdGlja2V0LgA5AUlmIGFueSBwZW5kaW5nIHJlZmVycmFsIHJld2FyZHMgYXJlIHByZXNlbnQsIHRoZXkgbmVlZCB0byBiZSByZWdpc3RlcmVkIGZpcnN0LlhjYW5jZWxfcmVmZXJyYWxfdGlja2V0BAEYdGlja2V0BAEkVDo6VGlja2V0AA0EyENhbmNlbCBhIHJlZmVycmFsIHRpY2tldCBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24ujHJlZ2lzdGVyX3N1Y2Nlc3NmdWxfcmVmZXJyYWxfcmV3YXJkBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQADgA0Z3JhbnRfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAPGORHcmFudHMgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AmFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW4uALAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gZ2l2ZSBpbnZpdGVzIHRvLqQtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBnaXZlLpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIAEBicUmVtb3ZlIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAJxUaGUgb3JpZ2luIG11c3QgYmUgYEludml0YXRpb25zT3JpZ2luYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgARFEhJbnZpdGUgYW4gYWNjb3VudC4ADQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuAJQtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBzZXQuUGNhbmNlbF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AEhRUQ2FuY2VsIGFuIGludml0YXRpb24uACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuRHNldF9jb25maWd1cmF0aW9uBAEYY29uZmlnhQQBfENvbmZpZ1JlY29yZDxCbG9ja051bWJlckZvcjxUPj4AMgQVAVNldCB0aGUgY29uZmlndXJhdGlvbiByZWNvcmQuIE11c3QgaGF2ZSBwcml2aWxlZ2VkIGFjY2VzcyB0byBkbyB0aGlzLmBzZXRfcmVpbWJ1cnNlbWVudF92YWx1ZXMIATxyZWZlcnJlZF92YWx1ZXOJBAHoQm91bmRlZFZlYzwoQmFsYW5jZU9mPFQ+LCB1MzIpLCBUOjpNYXhSZWltYnVyc2VtZW50VmFsdWVzPgABPHJlZmVycmVyX3ZhbHVlc4kEAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+ADMoTQFTZXQgdGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVkIGNhbmRpZGF0ZXMgYXMgd2VsbCBhcyB0aGVpck0BcmVmZXJyZXJzLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2YgcmVpbWJ1cnNlbWVudHMgZm9yIGVhY2ggdmFsdWUuIFRoZXNlIHZhbHVlcyBhcmUkc3RvcmVkIGluUQFyZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbGlzdCB3aWxsIGJlIHRoZSBmaXJzdCBvbmVJAXRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLiBUaGUgbGVuZ3RoIG9mIHRoZSB0d28gbGlzdHMgbXVzdCBiZSBlcXVhbC4AIFdBUk5JTkchAE0BQWZ0ZXIgdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBpcyBleGhhdXN0ZWQgZm9yIGEgdmFsdWUgaW4gdGhlIGxpc3QsIHRoZSBwYWxsZXT0c3RhcnRzIHVzaW5nIHRoZSBuZXh0IHZhbHVlIGltbWVkaWF0ZWx5IGZvciBmdXR1cmUgdHJhbnNmZXJzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5xBAAAA0AAAAAMAHUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRJbmtDaG9pY2UAARRARGVzaWduZWRFbGVjdGl2ZQgAzQMBLEZhbWlseUluZGV4AADNAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQEAM0DASxGYW1pbHlJbmRleAABAEhQcm9jZWR1cmFsUGVyc29uYWwEAM0DASxGYW1pbHlJbmRleAACAChQcm9jZWR1cmFsCADNAwEsRmFtaWx5SW5kZXgAAAwBMFZhcmlhbnRJbmRleAADAFBQcm9jZWR1cmFsRGVyaXZhdGl2ZQgAKAEoUGVyc29uYWxJZAAAtQMBSE9wdGlvbjxQZXJzb25hbElkPgAEAAB5BAgoc3BfcnVudGltZThNdWx0aVNpZ25hdHVyZQABEBxFZDI1NTE5BABxBAFIZWQyNTUxOTo6U2lnbmF0dXJlAAAAHFNyMjU1MTkEAHEEAUhzcjI1NTE5OjpTaWduYXR1cmUAAQAURWNkc2EEAH0EAUBlY2RzYTo6U2lnbmF0dXJlAAIADEV0aAQAfQQBWGVjZHNhOjpLZWNjYWtTaWduYXR1cmUAAwAAfQQAAANBAAAADACBBAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoRmFtaWx5S2luZAABECBEZXNpZ25lZAQBFGNvdW50zQMBLERlc2lnbkluZGV4AAAARFByb2NlZHVyYWxBY2NvdW50AAEASFByb2NlZHVyYWxQZXJzb25hbAACAChQcm9jZWR1cmFsBAEUcmFuZ2UMATBWYXJpYW50SW5kZXgAAwAAhQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MENvbmZpZ1JlY29yZAQsQmxvY2tOdW1iZXIBOAAgAThyZXJvbGxfdGltZW91dDgBLEJsb2NrTnVtYmVyAAE8ZmFzdHRyYWNrX2NvdW50OAEMdTMyAAEcbWF4aW11bTgBDHUzMgABOGZ1bGxfYWxsb2NfbGVuKAEMdTY0AAFAZnVsbF9hbGxvY19jb3VudDgBDHUzMgABOGluaXRfYWxsb2NfbGVuKAEMdTY0AAFAaW5pdF9hbGxvY19jb3VudDgBDHUzMgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAiQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNBARTAAAEAJEEARhWZWM8VD4AAI0EAAAECEUBOACRBAAAAo0EAJUEDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQQQ2FsbAQEVAABTExzaWduX3VwX3dpdGhfaW52aXRlCAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAASNBTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50IGFuZCBhbiBpbnZpdGUuABUBVGhpcyBpcyBmb3IgbmV3IHBsYXllcnMgb3IgYXJjaGl2ZWQgcGxheWVycywgb3RoZXIgcGxheWVycyBzaG91bGQgdXNlqFtgUGFsbGV0OjpzaWduX3VwX3dpdGhfYWNjb3VudGBdIGZvciBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50CAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgABTJhTaWduIHVwIGZvciB0aGUgZ2FtZSB1c2luZyBhbiBhY2NvdW50LgA9AUlmIHRoZSBwbGF5ZXIgaXMgbmV3IG9yIGFyY2hpdmVkLCB0aGVuIGEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lci5sT3RoZXJ3aXNlIHRoZSBjYWxsIGlzIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBFAWBhaXJkcm9wc2Agb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpczkBZ2FtZS4gUGFzcyBgTm9uZWAgdG8gc2tpcCBpdDsgb3RoZXJ3aXNlIGl0IGhvbGRzIGV4YWN0bHkgb25lIFZSRiBwZXIgc2NoZWR1bGVkVQFhaXJkcm9wIGV2ZW50IChgYWlyZHJvcHNfc2NoZWR1bGVkYCBpbiB0aGUgW2BHYW1lYF0gc3RvcmFnZSksIGluIGFpcmRyb3AtaW5kZXggb3JkZXIuVQFFYWNoIGVudHJ5IGlzIGJvdW5kIHRvIGl0cyBvd24gZXZlbnQgaWQgKHNlZSBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKSwgc2VlZHMgdGhlWQFwbGF5ZXIncyBkcmF3IHNsb3QgZm9yIHRoYXQgZXZlbnQgYW5kIHByb3ZlcyB0aGVpciBpZGVudGl0eSBwYXRoOiB0aGUgYWxpYXMgdmFyaWFudCBpZh0BdGhlIHBsYXllciBpcyByZWNvZ25pemVkIChwYWxsZXQtc2NvcmUgYHJlY29nbml0aW9uYCBpcyBgUmVjb2duaXplZGAgb3JVAWBFeHRlcm5hbGx5UmVjb2duaXplZGApLCBvdGhlcndpc2UgdGhlIGFjY291bnQgdmFyaWFudC4gVGhlIHNpZ24tdXAgZmFpbHMgZW50aXJlbHkgaWZJAWFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnMgZG9lcyBub3RZAW1hdGNoIGBhaXJkcm9wc19zY2hlZHVsZWRgLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BBaXJkcm9wVnJmc2BdIGZvciBtb3JlIGRldGFpbHMuADEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciwgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uSHNpZ25fdXBfd2l0aF9hbGlhcxABOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAFEc3RhdGVtZW50X2FjY291bnQEATBUOjpBY2NvdW50SWQAAQxzaWd5BAFMVDo6QWNjb3VudFNpZ25hdHVyZQABIGFpcmRyb3BzmQQBmE9wdGlvbjxBaXJkcm9wVnJmczxBaXJkcm9wUHJvb2ZPZjxUPj4+AAJsVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC5RAS0gYGFpcmRyb3BzYDogb3B0aW9uYWxseSBlbnRlcnMgdGhlIHBsYXllciBpbnRvIHRoZSBhaXJkcm9wIGRyYXdzIHNjaGVkdWxlZCBmb3IgdGhpc2EBICBnYW1lLiBQYXNzIGBOb25lYCB0byBza2lwIGl0OyBvdGhlcndpc2UgaXQgaG9sZHMgZXhhY3RseSBvbmUgVlJGIHBlciBzY2hlZHVsZWQgYWlyZHJvcGEBICBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIGBHYW1lYCBzdG9yYWdlKSwgaW4gYWlyZHJvcC1pbmRleCBvcmRlci4gRWFjaCBlbnRyeVkBICBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGApIGFuZCBzZWVkcyB0aGUgcGxheWVyJ3NhASAgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50OyB0aGUgYWxpYXMgdmFyaWFudCBtdXN0IGJlIHVzZWQgZm9yIGFsaWFzLWJhc2VkIHBsYXllcnMgZ2l2ZW5BASAgdGhleSBhcmUgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUgcGFydGljaXBhbnQgaW5mb3JtYXRpb24uIFRoZSBzaWduLXVwIGZhaWxzXQEgIGVudGlyZWx5IGlmIGFueSBldmVudCBkb2VzIG5vdCBhY2NlcHQgaXRzIHJlZ2lzdHJhdGlvbiBvciB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkIFZSRnNZASAgZG9lcyBub3QgbWF0Y2ggYGFpcmRyb3BzX3NjaGVkdWxlZGAuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgQWlyZHJvcFZyZnNgIGZvciBtb3JlKCAgZGV0YWlscy6Ac2lnbl91cF93aXRoX2FjY291bnRfbGl0ZV9pbnZpdGUMARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4aWRlbnRpZmllcl9rZXl9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASBhaXJkcm9wc5kEAZhPcHRpb248QWlyZHJvcFZyZnM8QWlyZHJvcFByb29mT2Y8VD4+PgAVdEUBU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudCBhbmQgYSBsaXRlIGludml0ZSwgdGhlIGludml0YXRpb24gb2YgYSBsaXRlHHBlcnNvbi4AVQFMaXRlIHBlcnNvbmhvb2QgaXMgY3JlZGlibGUgZW5vdWdoIHRvIHBsYXksIHNvIGEgbGl0ZSBwZXJzb24gY2FuIGludml0ZSBhbiBhY2NvdW50IG9mTQF0aGVpciBvd24uIEl0IGlzIHJlZ2lzdGVyZWQgYXMgYW4gYWNjb3VudC1iYXNlZCBwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4ARQFgYWlyZHJvcHNgIG9wdGlvbmFsbHkgZW50ZXJzIHRoZSBwbGF5ZXIgaW50byB0aGUgYWlyZHJvcCBkcmF3cyBzY2hlZHVsZWQgZm9yIHRoaXM5AWdhbWUuIFBhc3MgYE5vbmVgIHRvIHNraXAgaXQ7IG90aGVyd2lzZSBpdCBob2xkcyBleGFjdGx5IG9uZSBWUkYgcGVyIHNjaGVkdWxlZFUBYWlyZHJvcCBldmVudCAoYGFpcmRyb3BzX3NjaGVkdWxlZGAgaW4gdGhlIFtgR2FtZWBdIHN0b3JhZ2UpLCBpbiBhaXJkcm9wLWluZGV4IG9yZGVyLlUBRWFjaCBlbnRyeSBpcyBib3VuZCB0byBpdHMgb3duIGV2ZW50IGlkIChzZWUgW2BQYWxsZXQ6OmFpcmRyb3BfZXZlbnRfaWRgXSksIHNlZWRzIHRoZVkBcGxheWVyJ3MgZHJhdyBzbG90IGZvciB0aGF0IGV2ZW50IGFuZCBwcm92ZXMgdGhlaXIgaWRlbnRpdHkgcGF0aDogdGhlIGFsaWFzIHZhcmlhbnQgaWYdAXRoZSBwbGF5ZXIgaXMgcmVjb2duaXplZCAocGFsbGV0LXNjb3JlIGByZWNvZ25pdGlvbmAgaXMgYFJlY29nbml6ZWRgIG9yVQFgRXh0ZXJuYWxseVJlY29nbml6ZWRgKSwgb3RoZXJ3aXNlIHRoZSBhY2NvdW50IHZhcmlhbnQuIFRoZSBzaWduLXVwIGZhaWxzIGVudGlyZWx5IGlmSQFhbnkgZXZlbnQgZG9lcyBub3QgYWNjZXB0IGl0cyByZWdpc3RyYXRpb24gb3IgdGhlIG51bWJlciBvZiBzdXBwbGllZCBWUkZzIGRvZXMgbm90WQFtYXRjaCBgYWlyZHJvcHNfc2NoZWR1bGVkYC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgQWlyZHJvcFZyZnNgXSBmb3IgbW9yZSBkZXRhaWxzLgBVAVRoZSBvcmlnaW4gbXVzdCBiZSBhIGxpdGUgYWxpYXMgaW4gW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLCBzZWVZAVtgQ29uZmlnOjpFbnN1cmVMaXRlQWxpYXNgXS4gVGhlIGxpdGUgcGVyc29uIG5hbWVzIHRoZSBhY2NvdW50IHBsYXlpbmcgb24gdGhlaXIgYmVoYWxmVQF3aXRoIGBhY2NvdW50YCwgc28gdGhlIHBsYXlpbmcgYWNjb3VudCBpcyBub3QgdGhlIGxpdGUgcGVyc29uJ3Mgb3duIGFjY291bnQgYW5kIHN0YXlzTHVubGlua2FibGUgZnJvbSBpdC4AXQFBIGxpdGUgcGVyc29uIGludml0ZXMgb25lIGFjY291bnQsIGV2ZXI6IHRoZSBmaXJzdCBhY2NvdW50IHRoZXkgc2lnbiB1cCB0aGlzIHdheSBpcyB0aGXsb25seSBvbmUgdGhleSBjYW4gcGxheSB3aXRoLCBldmVuIGFmdGVyIGl0IHN0b3BwZWQgcGxheWluZy4AOQFUaGlzIG11c3QgYmUgdXNlZCBieSBsaXRlLXBlb3BsZSBvbiB0aGVpciBmaXJzdCBzaWdudXAgb3IgYWZ0ZXIgdGhleSBoYXZlIGJlZW70YXJjaGl2ZWQuIEZ1cnRoZXIgc2lnbnVwcyB3aGlsZSB0aGUgcGxheWVyIGlzIGFjdGl2ZSBtdXN0IHVzZaRbYFBhbGxldDo6c2lnbl91cF93aXRoX2FjY291bnRgXSBpbnN0ZWFkLhhyZXBvcnQEASxmdWxsX3JlcG9ydLEEATRGdWxsUmVwb3J0PFQ+AANwlEFmdGVyIHRoZSBnYW1lLCBzZW5kIHRoZSBmdWxsIHJlcG9ydC4A0FRoZSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlcG9ydGluZyBwaGFzZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4ARQFgZnVsbF9yZXBvcnRgIGhvbGRzIG9uZSBlbnRyeSBwZXIgcm91bmQgKGV4YWN0bHkgYGdhbWUucm91bmRzYCBvZiB0aGVtKSwgYW5kIGVhY2hFAXJvdW5kIGxpc3RzIG9uZSBgUmVwb3J0YCBwZXIgY28tcGxheWVyIGluIHRoZSByZXBvcnRlcidzIGdyb3VwIGZvciB0aGF0IHJvdW5kLCBpbj0BZ3JvdXAgb3JkZXIgYW5kIGV4Y2x1ZGluZyB0aGUgcmVwb3J0ZXIuIEEgcm91bmQgd2hvc2UgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIHRoZTkBcmVwb3J0ZXIncyByZWFsIGdyb3VwIG1lbWJlcnNoaXAgaXMgcmVqZWN0ZWQgd2l0aCBgRXJyb3I6OkludmFsaWRSZXBvcnRgLiBFYWNoYQFgUmVwb3J0OjpQZXJzb25gIHZvdGUgYXdhcmRzIGFuIGF0dGVuZGFuY2UgTkZUIGNsYWltIGNyZWRpdCB0byB0aGUgYXR0ZXN0ZWUgaW1tZWRpYXRlbHk7jGBSZXBvcnQ6Ok5vdFBlcnNvbmAgYXdhcmRzIG5vdGhpbmcuAFEBVGhlIGNhcGFjaXR5IGNoZWNrIHJlcXVpcmVzIG9uZSBmcmVlIGNyZWRpdCBzbG90IHBlciBgUGVyc29uYCB2b3RlIGluIHRoZSByZXBvcnQuIElmSQFjYXBhY2l0eSBpcyBpbnN1ZmZpY2llbnQsIHRoZSBjYWxsIHJldHVybnMgYEVycm9yOjpDcmVkaXRDYXBhY2l0eUV4aGF1c3RlZGAgYmVmb3JlRQFyZWNvcmRpbmcgYW55IHZvdGVzIG9yIGNyZWRpdHMuIFJldHJ5IHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGFuZCByZXBvcnRpbmcgaXMsc3RpbGwgb3Blbi4ASQFBZnRlciB0aGUgdm90ZXMgZnJvbSB0aGUgcmVwb3J0IGFyZSBjb3VudGVkLCB0aGUgcmVwb3J0ZXIgYW5kIGVhY2ggb2YgdGhlIHJlcG9ydGVkRQFwbGF5ZXJzIHdob3NlIGF0dGVuZGFuY2UgY2FuIG5vdyBiZSBkZXRlcm1pbmVkIGFyZSBwcm9jZXNzZWQgZWFybHkuIFRoaXMgbGV0cyB0aGVNAWdhbWUgc2tpcCB0aGUgcGxheWVyLXByb2Nlc3MgcGhhc2UgZW50aXJlbHkgd2hlbiBldmVyeSBwbGF5ZXIgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5VHRoZSBlbmQgb2YgcmVwb3J0aW5nLgBJAU9uIHN1Y2Nlc3MgdGhlIGNhbGwgcGF5cyBubyBmZWUgKGBQYXlzOjpOb2ApLiBJdHMgd2VpZ2h0IHNjYWxlcyB3aXRoIHRoZSBudW1iZXIgb2ZNAWNvLXBsYXllciBlbnRyaWVzIGFjcm9zcyBhbGwgcm91bmRzLCBub3QgdGhlIHJvdW5kIGNvdW50LCBzbyBwYXJ0aWFsIGdyb3VwcyBhcmUgbm90UQFvdmVyY2hhcmdlZC4gVGhlIHByZS1kaXNwYXRjaCBjaGFyZ2UgYXNzdW1lcyBldmVyeSBjby1wbGF5ZXIgZW50cnkgcGx1cyB0aGUgcmVwb3J0ZXJJAWlzIGVhcmx5LWVuYWN0ZWQgYW5kIGlzIHJlZnVuZGVkIGRvd24gdG8gdGhlIGFjdHVhbCBlbmFjdG1lbnQgY291bnQgcG9zdC1kaXNwYXRjaC4gb2ZmYm9hcmQABDCAT2ZmYm9hcmQgYSBwbGF5ZXIgZnJvbSB0aGUgZ2FtZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4AXQFUaGVyZSBtdXN0IGJlIG5vIGdhbWUgb3IgdGhlIGV4aXN0aW5nIGdhbWUgbXVzdCBiZSBpbiByZWdpc3RyYXRpb24gcGhhc2UgYW5kIHRoZSBwbGF5ZXKUbXVzdCBoYXZlIG5vdCBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLgBdAUEgcGxheWVyIHdob3NlIHBhbGxldC1zY29yZSByZWNvZ25pdGlvbiBpcyBgUmVjb2duaXplZGAgaGFzIHRoZWlyIHBlcnNvbmhvb2Qgc3VzcGVuZGVkLE0BdGhlIHNhbWUgYXMgYW4gYWJzZW5jZS10cmlnZ2VyZWQgc3VzcGVuc2lvbi4gT2ZmYm9hcmRpbmcgaXMgcGVybWFuZW50LiBQbGF5aW5nIGFzIGFdAXBlcnNvbiBhZ2FpbiBhZnRlciBhIHN1c3BlbnNpb24gYW5kIHRoZW4gcmUtcmVjb2duaXRpb24gcmVxdWlyZXMgb25ib2FyZGluZyB1bmRlciBhIG5ld2xwZXJzb25hbCBpZCB3aXRoIGEgbmV3IGtleS4ca2lja291dAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAFLDEBS2lja291dCBhIGtpY2thYmxlIHBsYXllciB0aGF0IGlzIG5vdCBwbGF5aW5nIGFmdGVyIGBOb25QbGF5aW5nS2lja291dFRpbWVgLgCgVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50LgBdAUEgcGxheWVyIHdob3NlIHBhbGxldC1zY29yZSByZWNvZ25pdGlvbiBpcyBgUmVjb2duaXplZGAgaGFzIHRoZWlyIHBlcnNvbmhvb2Qgc3VzcGVuZGVkLE0BdGhlIHNhbWUgYXMgYW4gYWJzZW5jZS10cmlnZ2VyZWQgc3VzcGVuc2lvbi4gVGhlIGtpY2tvdXQgaXMgcGVybWFuZW50LiBQbGF5aW5nIGFzIGFdAXBlcnNvbiBhZ2FpbiBhZnRlciBhIHN1c3BlbnNpb24gYW5kIHRoZW4gcmUtcmVjb2duaXRpb24gcmVxdWlyZXMgb25ib2FyZGluZyB1bmRlciBhIG5ld2xwZXJzb25hbCBpZCB3aXRoIGEgbmV3IGtleS4AIQEtIGBwbGF5ZXJgOiBUaGUgcGxheWVyIHRvIGtpY2tvdXQuIEl0IG11c3QgYmUgYXJjaGl2ZWQgYW5kIGtpY2thYmxlIHdpdGjYICBgYXJjaGl2ZWRfc2luY2VgIG9sZGVyIHRoYW4gYE5vblBsYXlpbmdLaWNrb3V0VGltZWAuNGdyYW50X2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIABhj0R3JhbnQgc29tZSBpbnZpdGVzIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gZGlzdHJpYnV0ZSB0aGVtLgCIVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGVJc3N1ZXJgLgC0LSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGludml0ZXMgdG8uqC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBpbnZpdGVzIHRvIGdyYW50LpByZW1vdmVfYXZhaWxhYmxlX2FuZF9wZW5kaW5nX2ludml0ZXMIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUbGltaXQ4AQx1MzIABxiYQ2xlYXIgYWxsIGludml0ZXMgZ2l2ZW4gdG8gYW4gYWNjb3VudC4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4A0C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGludml0ZXMgZnJvbS7sLSBgbGltaXRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVuZGluZyBpbnZpdGVzIHRvIHJlbW92ZS5Ec2V0X2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgAIGEhJbnZpdGUgYW4gYWNjb3VudC4AXQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBpbnZpdGVzIGxlZnQuIFRoZSBjYWxsIGlzIGZyZWUgb24gc3VjY2Vzcy4AlC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIHNldC5QY2FuY2VsX2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgAJFERDYW5jZWwgYW4gaW52aXRlLgAhAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSB0aWNrZXQgdG8gY2FuY2VsLgCgLSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gY2FuY2VsLjhzY2hlZHVsZV9nYW1lcwQBPGdhbWVzX3NjaGVkdWxlc8UEAVhWZWM8R2FtZVNjaGVkdWxlT2Y8VD4+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALAEBzZXRfcGxheV9kZXBvc2l0BAEYYW1vdW50RQEBSE5hdGl2ZUJhbGFuY2VPZjxUPgAQBBUBVXBkYXRlIHRoZSBjb25maWd1cmVkIHBsYXkgZGVwb3NpdCBhbW91bnQgZm9yIGZ1dHVyZSBhY2NvdW50IHNpZ251cHMuNGNsYWltX2FpcmRyb3AMAShnYW1lX2luZGV4OAEcR2FtZUlkeAABNGFpcmRyb3BfaW5kZXgMAQh1OAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkABFILQFDbGFpbSBhIHByaXplIGZyb20gdGhlIGFpcmRyb3AgZXZlbnQgYXQgaW5kZXggYGFpcmRyb3BfaW5kZXhgIHNjaGVkdWxlZCBmb3I0YGdhbWVfaW5kZXhgLgA5AUEgZ2FtZSBzY2hlZHVsZXMgb25lIGFpcmRyb3AgZXZlbnQgcGVyIGVudHJ5IGluIGl0cyBzY2hlZHVsZSdzIGBhaXJkcm9wc2AgKHNlZVEBW2BHYW1lU2NoZWR1bGVgXSk7IGBhaXJkcm9wX2luZGV4YCBzZWxlY3RzIHdoaWNoIG9mIHRoZW0gdG8gY2xhaW0gZnJvbS4gQSBwbGF5ZXIgd2hvIQF3b24gc2V2ZXJhbCBvZiB0aGUgZ2FtZSdzIGFpcmRyb3AgZXZlbnRzIGNsYWltcyBlYWNoIG9mIHRoZW0gc2VwYXJhdGVseS4AYQFFbGlnaWJpbGl0eSByZXF1aXJlcyAyIGNvbmRpdGlvbnMgb24gdGhlIGNsYWltYW50IHRvIGJlIHJlY29nbml6ZWQgYW5kIGhhdmUgYXR0ZW5kZWQgdGhlWGdhbWUuIEluIG1vcmUgZGV0YWlsczpRASogdG8gYmUgZWl0aGVyIHJlY29nbml6ZWQgaW4gcGFsbGV0LXNjb3JlIChgcmVjb2duaXRpb24uaXNfcmVjb2duaXplZCgpYCkgb3IgdG8gaGF2ZdggIHJlYWNoZWQgdGhlIHBlcnNvbmhvb2Qgc2NvcmUgKGByZWFjaGVkX3BlcnNvbmhvb2RgKSxhASogQU5EIGZvciBgZ2FtZV9pbmRleGAgdG8gbWF0Y2ggdGhlIHBhcnRpY2lwYW50J3MgYGxhc3RfYXR0ZW5kZWRfZ2FtZWAg4oCUIGkuZS4gdGhlIG1vc3RRASAgcmVjZW50IGdhbWUgdGhlIGNsYWltYW50IGFjdHVhbGx5IGF0dGVuZGVkIG11c3QgYmUgZXhhY3RseSB0aGUgZ2FtZSB0aGUgYWlyZHJvcCBpc1UBICB0aWVkIHRvLiBTdWJzZXF1ZW50IGdhbWUgYXR0ZW5kYW5jZSBvdmVycmlkZXMgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGUgY2xhaW0gbXVzdCBiZWEBICBtYWRlIGJlZm9yZSBhdHRlbmRpbmcgYW5vdGhlciBnYW1lLiBJbiBwYXJ0aWN1bGFyIGFuIGFpcmRyb3AgZXZlbnQgZHJhd24gbGF0ZSByZWxhdGl2ZUkBICB0byB0aGUgZ2FtZSBwbGF5IHRpbWUgbXVzdCBiZSBjbGFpbWVkIGJlZm9yZSB0aGUgY2xhaW1hbnQgYXR0ZW5kcyB0aGUgbmV4dCBnYW1lLgC0Q2xhaW1zIGFnYWluc3QgYSBjYW5jZWxsZWQgZ2FtZSBhcmUgcmVqZWN0ZWQubHRlc3RuZXRfZm9yY2Vfc3RhcnRfc2h1ZmZsZQBlDNRGb3JjZSBzdGFydCB0aGUgc2h1ZmZsZSBiZWZvcmUgaXRzIG5vcm1hbCBzdGFydCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcubHRlc3RuZXRfZm9yY2VfZW5kX3JlcG9ydGluZwBmDPhGb3JjZSBlbmQgYSBnYW1lJ3MgcmVwb3J0aW5nIHBoYXNlIGJlZm9yZSBpdHMgbm9ybWFsIGVuZCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcuPHNldF9nYW1lX3BoYXNlcwQBGHBoYXNlc+EEAUxQaGFzZUR1cmF0aW9uVmFsdWVzAA4siE92ZXJyaWRlIHRoZSBnYW1lIHBoYXNlIGR1cmF0aW9ucy4AKQFSZXN0cmljdGVkIHRvIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gKG9yIHJvb3QpLiBVbnRpbCByZXNldCwgYWxsIGZ1dHVyZTUBZ2FtZSBzY2hlZHVsZXMgdXNlIHRoZXNlIHBoYXNlcyBpbnN0ZWFkIG9mIFtgQ29uZmlnOjpEZWZhdWx0UGhhc2VEdXJhdGlvbnNgXS4NAVRvIHJldmVydCwgdGhlIG1hbmFnZXIgcmUtaXNzdWVzIHRoZSBjYWxsIHdpdGggdGhlIGRlc2lyZWQgZXhwbGljaXTAdmFsdWVzIOKAlCB0aGVyZSBpcyBubyBzZXBhcmF0ZSBjbGVhciBleHRyaW5zaWMuABkBT25seSBjYWxsYWJsZSB3aGlsZSBubyBnYW1lIGV4aXN0cyBvciB0aGUgY3VycmVudCBnYW1lIGlzIHN0aWxsIGluIGl0cykBUmVnaXN0cmF0aW9uIHBoYXNlOyBvdGhlcndpc2UgZmFpbHMgd2l0aCBbYEVycm9yOjpJbnZhbGlkR2FtZVN0YXRlYF0uIFRoaXMdAXByZXZlbnRzIGNoYW5naW5nIHBoYXNlIGR1cmF0aW9ucyBvbmNlIHBsYXllcnMgaGF2ZSBjb21taXR0ZWQgdG8gYSBnYW1liHdob3NlIHRpbWluZyBpcyBhbHJlYWR5IGxvY2tlZCBpbi4sY2FuY2VsX2dhbWUADww9AUNhbmNlbCB0aGUgY3VycmVudCBnYW1lIHdoaWxlIGl0IGlzIHN0aWxsIGluIHRoZSBSZWdpc3RyYXRpb24gb3IgU2h1ZmZsZSBwaGFzZS4AyFJlc3RyaWN0ZWQgdG8gW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXSAob3Igcm9vdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkEBBhPcHRpb24EBFQBnQQBCBBOb25lAAAAEFNvbWUEAJ0EAAABAACdBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMsQWlyZHJvcFZyZnMEBFAAAQgcQWNjb3VudAQAoQQBAQFCb3VuZGVkVmVjPFZyZlNpZ25hdHVyZSwgQ29uc3RVMzI8eyBNQVhfR0FNRV9BSVJEUk9QUyBhcyB1MzIgfT4+AAAAFEFsaWFzDAEYcHJvb2ZzrQQB1EJvdW5kZWRWZWM8UCwgQ29uc3RVMzI8eyBNQVhfR0FNRV9BSVJEUk9QUyBhcyB1MzIgfT4+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABAAChBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUEBFMAAAQAqQQBGFZlYzxUPgAApQQQHHNwX2NvcmUcc3IyNTUxOQx2cmYwVnJmU2lnbmF0dXJlAAAIAShwcmVfb3V0cHV0CAEwVnJmUHJlT3V0cHV0AAEUcHJvb2ZxBAEgVnJmUHJvb2YAAKkEAAACpQQArQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEdBARTAAAEACEEARhWZWM8VD4AALEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQQEUwAABADBBAEYVmVjPFQ+AAC1BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbkEBFMAAAQAvQQBGFZlYzxUPgAAuQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFJlcG9ydAABCBhQZXJzb24AAAAkTm90UGVyc29uAAEAAL0EAAACuQQAwQQAAAK1BADFBAAAAskEAMkEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczBHYW1lU2NoZWR1bGUIHEFzc2V0SWQBcQEcQmFsYW5jZQFFAQAQAThnYW1lX3BsYXlfdGltZTgBDHUzMgABGHJvdW5kcwwBCHU4AAE4bWF4X2dyb3VwX3NpemU4AQx1MzIAASBhaXJkcm9wc80EAUkBQm91bmRlZFZlYzxHYW1lQWlyZHJvcDxBc3NldElkLCBCYWxhbmNlPiwgQ29uc3RVMzI8CnsgTUFYX0dBTUVfQUlSRFJPUFMgYXMgdTMyIH0+PgAAzQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRBARTAAAEAN0EARhWZWM8VD4AANEEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyxHYW1lQWlyZHJvcAgcQXNzZXRJZAFxARxCYWxhbmNlAUUBAAwBLGRyYXdfb2Zmc2V0OAEMdTMyAAEwY2xhaW1fd2luZG93OAEMdTMyAAEUcHJpemXVBAF4QWlyZHJvcFByaXplPEFzc2V0SWQsIEJhbGFuY2U+AADVBAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMwQWlyZHJvcFByaXplCBxBc3NldElkAXEBMEFzc2V0QmFsYW5jZQFFAQAQASBhc3NldF9pZHEBARxBc3NldElkAAEwYXNzZXRfYW1vdW50RQEBMEFzc2V0QmFsYW5jZQABLG1heF93aW5uZXJzOAEMdTMyAAEod2lubmVyX2NhcNkEARxQZXJtaWxsAADZBAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAADdBAAAAtEEAOEEDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0xQaGFzZUR1cmF0aW9uVmFsdWVzAAAUATByZWdpc3RyYXRpb244AQx1MzIAARxzaHVmZmxlOAEMdTMyAAFMcG9zdF9zaHVmZmxlX21hcmdpbjgBDHUzMgABJHJlcG9ydGluZzgBDHUzMgABOHBsYXllcl9wcm9jZXNzOAEMdTMyAADlBAxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldBBDYWxsBARUAAEoWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEMXFNjaGVkdWxlIHBheW91dCByb3VuZHMuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5YcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAIMgFJlbW92ZSBhIHNjaGVkdWxlZCBwYXlvdXQgcm91bmQuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5AdHJhbnNpdGlvbl9yb3VuZAQBLHJvdW5kX2luZGV4OAEMdTMyAAMYSFN0YXJ0IGEgbmV3IHJvdW5kLgBRAVRoaXMgaXMgdmFsaWQgaWYgdGhlIGN1cnJlbnQgcm91bmQgaXMgZmluaXNoZWQsIG9yIGlmIHRoZSBjdXJyZW50IHJvdW5kIGRvZXNuJ3QgaGF2ZahwbGFubmluZyBhbmQgYSBzY2hlZHVsZSBleGlzdHMgdG8gcGxhbiBpdC4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuUG9wZXJhdGVfcGF5b3V0X3JvdW5kCAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4AAEUbGltaXQ4AQx1MzIABDx4T3BlcmF0ZSBzb21lIHJvdW5kIHBheWluZyBvdXQuAFEBRHJhaW5zIHJvdW5kJ3MgcGFydGljaXBhbnRzLCB1cCB0byBhIGxpbWl0LiBGb3IgZWFjaCBwYXJ0aWNpcGFudCwgYWRkIHRoZSBjYWxjdWxhdGVkFQFyZXdhcmQgKGBiYXNlX3Jld2FyZCArIHJlbWFpbmRlcl9wb3J0aW9uYCkgdG8gdGhlaXIgYGNyZWRpdGAgYmFsYW5jZS4AYQFUaGVuLCBtb3ZlcyBmdW5kcyBvbiB0aGUgcG90IGFjY291bnQgZnJvbSBQYXlvdXQgdG8gQ3JlZGl0LCBzbyB0aGV5IGFyZSBvd2VkIHRvIHNwZWNpZmljoHBhcnRpY2lwYW50cyByYXRoZXIgdGhhbiB0aGUgcm91bmQgcG9vbC4ARQFGaW5hbGx5LCByZWxlYXNlIHRoZSBsZWZ0b3ZlciBmcm9tIHRoZSBQYXlvdXQgaG9sZCBiYWNrIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2VUKGZ1bmRzIGFyZSByZWN5Y2xlZCkuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LgDEKiByb3VuZF9pbmRleDogVGhlIGluZGV4IG9mIHRoZSByb3VuZCB0byBvcGVyYXRlLhEBKiBsaW1pdDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcnRpY2lwYW50cyB0byBvcGVyYXRlIGluIHRoaXMgY2FsbC4gY2FzaF9vdXQABSRZAUNhc2ggb3V0IGhhbGYgb2YgdGhlIHNjb3JlLCByb3VuZGVkIHVwLiBDb252ZXJ0cyB0aGUgc2NvcmUgaW50byBwb2ludHMgZm9yIHRoZSBjdXJyZW50JQFwYXlvdXQgcm91bmQuIENhbGxlciBtdXN0IGhhdmUgbmV2ZXIgcmVhY2hlZCBwZXJzb25ob29kIHNpbmNlIG9uYm9hcmRpbmcuALRJdCBjYW4gYmUgY2FsbGVkIG9uY2UgcGVyIGdhbWUgc2Vzc2lvbiAoZXJhKS4APQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50WHRyYW5zYWN0aW9uIGV4dGVuc2lvbikAzEFsaWFzIG9yaWdpbiBpcyBub3QgYWxsb3dlZCBhcyB0aGV5IGNhbid0IGNhc2ggb3V0LjRyZWRlZW1fY3JlZGl0BAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABhhRAVJlZGVlbSBmdWxsIGFjY3VtdWxhdGVkIGNyZWRpdCwgdHJhbnNmZXJyaW5nIGl0IHRvIHRoZSBwcm92aWRlZCBkZXN0aW5hdGlvbiBhY2NvdW50LgDkQ3JlZGl0IGlzIGNvbnZlcnRlZCBmcm9tIHBvaW50cyBkdXJpbmcgcGF5b3V0IHByb2Nlc3NpbmcuAEkBT3JpZ2luIG11c3QgYmUgYSBwZXJzb24gYWxpYXMsIGEgc2lnbmVkIGFjY291bnQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpY8B1c2luZyBTY29yZUFzUGFydGljaXBhbnQgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS4gcmVnaXN0ZXIEAQxrZXnpBAENAU9wdGlvbjwoTWVtYmVyT2Y8VD4sPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUpCj4ABzTwUmVnaXN0ZXIgYXMgYSBwZXJzb24sIG9yIHJlc3VtZSBwZXJzb25ob29kIGFmdGVyIHN1c3BlbnNpb24uACUBUmVxdWlyZXMgc2NvcmUgPj0gcGVyc29uaG9vZCB0aHJlc2hvbGQgKG9yIGhhdmluZyBwcmV2aW91c2x5IHJlYWNoZWQgaXQpLgBhAUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgcHJldmlvdXNseSByZWNvZ25pc2VkIGFuZCBpcyBub3cgc3VzcGVuZGVkLCB0aGV5IG11c3Qgbm90IHByb3ZpZGWIYSBrZXkuIFRoZSBleGlzdGluZyBrZXkgaXMgcmV1c2VkLgA9AUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgbmV2ZXIgcmVjb2duaXNlZCwgdGhleSBtdXN0IHByb3ZpZGUgYSBrZXkgYW5kIGEgcHJvb2Ygb2YZAW93bmVyc2hpcCAoYGtleWAgcGFyYW1ldGVyKTogYSBzaWduYXR1cmUgb3ZlciBgInBvcCByZWdpc3RlciB1c2luZyIgfHxMc2VuZGVyX2FjY291bnRfaWRgLgBFAU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFx0cmFuc2FjdGlvbiBleHRlbnNpb24pLmhzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZQQBIHNjaGVkdWxl8QQBREFic2VuY2VHcmFjZVRpZXJzAAg4fFNldCB0aGUgYWJzZW5jZSBncmFjZSBzY2hlZHVsZS4AKQFFdmVyeSB0aWVyIG11c3Qgc2F0aXNmeTogYDAgPD0gd2luZG93IDw9IDhgIGFuZCBgYWxsb3dlZF9taXNzZXMgPCB3aW5kb3dgLhUBYGFsbG93ZWRfbWlzc2VzID0gMGAgZGlzYWJsZXMgZ3JhY2UgZW50aXJlbHkgKGFueSBhYnNlbmNlIGltbWVkaWF0ZWx5KHN1c3BlbmRzKS4AJQFUaWVycyBtdXN0IGJlIHByb3ZpZGVkIGluIGFzY2VuZGluZyBvcmRlciBvZiBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuAPxBbiBlbXB0eSBzY2hlZHVsZSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5IChpbW1lZGlhdGUdAXN1c3BlbnNpb24gb24gYW55IG1pc3NlZCBnYW1lKS4gVGhlIG5ldyByYXRpbyB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0CQFvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbiB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXNQYEFic2VuY2VHcmFjZVJhdGlvYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LoRzZXRfcGVyc29uaG9vZF90aHJlc2hvbGRfc2NoZWR1bGUEASBzY2hlZHVsZf0EAWBQZXJzb25ob29kVGhyZXNob2xkVGllcnMACUCYU2V0IHRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZS4AOFRpZXJzIG11c3QgYmU6MC0gbm9uLWVtcHR5LMgtIHNvcnRlZCBhc2NlbmRpbmcgYnkgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLBkBLSBjYXBwZWQgYnkgYSBmaW5hbCB0aWVyIHdpdGggYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgLBUBLSBwZXItdGllcjogYDAgPCBzY29yZV90aHJlc2hvbGQgPD0gTUFYX1BFUlNPTkhPT0RfVEhSRVNIT0xEYCAoPSAyMSks1C0gaGF2ZSBub24tZGVjcmVhc2luZyBgc2NvcmVfdGhyZXNob2xkYCBhY3Jvc3MgdGllcnMuAAkBVGhlIG5ldyBjdXJ2ZSB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHJlcG9ydCBzZXNzaW9u+HdoZW4gYHVwZGF0ZV90aHJlc2hvbGRzKClgIHJlY2FsY3VsYXRlcyBgUGVyc29uaG9vZFRocmVzaG9sZGAuAAEBQWxyZWFkeS1yZWNvZ25pemVkIHBhcnRpY2lwYW50cyBhcmUgTk9UIHJldHJvYWN0aXZlbHkgc3VzcGVuZGVkOhEBdGhlIG5ldyBiYXIgb25seSBnYXRlcyBmdXR1cmUgc2NvcmUgZXZhbHVhdGlvbnMgaW4gYHNldF9hdHRlbmRhbmNlYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LlBmb3JjZV9zZXRfYXR0ZW5kYW5jZQwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABIGF0dGVuZGVkWQEBEGJvb2wAAShnYW1lX2luZGV4OAEMdTMyAAowJQFTZXQgdGhlIGF0dGVuZGFuY2Ugb2YgYSBwYXJ0aWNpcGFudCBmb3IgYGdhbWVfaW5kZXhgLCBieXBhc3NpbmcgdGhlIGdhbWUuAEUBVGhpcyB3cmFwcyBbYFBhbGxldDo6c2V0X2F0dGVuZGFuY2VgXSBpbiBpdHMgb3duIGF0dGVuZGFuY2UgcmVwb3J0IHNlc3Npb24sIHNvIGl0QQFoYXMgdGhlIGV4YWN0IHNhbWUgZWZmZWN0IG9uIHRoZSBwYXJ0aWNpcGFudCdzIHNjb3JlLCBzdHJlYWssIGF0dGVuZGFuY2UgaGlzdG9yeUEBYW5kIHJlY29nbml0aW9uIGFzIGEgcmVndWxhciBhdHRlbmRhbmNlIHJlcG9ydCBieSB0aGUgZ2FtZS4gU3RhcnRpbmcgdGhlIHNlc3Npb249AWFsc28gcmVmcmVzaGVzIHRoZSBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgYWJzZW5jZS1ncmFjZSByYXRpbywgbGlrZSBhbnkgb3RoZXIgc2Vzc2lvbi4ATQFGYWlscyB3aXRoIFtgRXJyb3I6Ok5vU2NvcmVgXSBpZiBgd2hvYCBpcyBub3QgYSBwYXJ0aWNpcGFudCwgb3Igd2l0aCB0aGUgdW5kZXJseWluZz0BW2BDb25maWc6OlBlb3BsZWBdIGVycm9yIGlmIGEgbXV0YXRpb24gc2Vzc2lvbiBjYW5ub3QgYmUgc3RhcnRlZCBhdCB0aGUgbW9tZW50LgBYQ2FsbGVkIGZyb20gcm9vdCBvbmx5LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBAQYT3B0aW9uBARUAe0EAQgQTm9uZQAAABBTb21lBADtBAAAAQAA7QQAAAQICHEEAPEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QQEUwAABAD5BAEYVmVjPFQ+AAD1BAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzQEFic2VuY2VHcmFjZVRpZXIAAAwBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAARh3aW5kb3cMAQh1OAABOGFsbG93ZWRfbWlzc2VzDAEIdTgAAPkEAAAC9QQA/QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEBBQRTAAAEAAUFARhWZWM8VD4AAAEFDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNcUGVyc29uaG9vZFRocmVzaG9sZFRpZXIAAAgBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAATxzY29yZV90aHJlc2hvbGQMAQh1OAAABQUAAAIBBQAJBQw0aW5kaXZfc3VwcG9ydCBpZGVudGl0eTxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAADQUMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxhwYWxsZXQQQ2FsbAQEVAABFERzZW5kX2NyZWRpdF90cmVlcwgBOGZpcnN0X3NlcXVlbmNlKAEwVHJlZVNlcXVlbmNlAAE0ZGlzY3JpbWluYXRvcjgBREJsb2NrTnVtYmVyRm9yPFQ+ABIcSQFEZWxpdmVycyB0aGUgcXVldWVkIGNyZWRpdCB0cmVlcyB0aGF0IGZpdCBvbmUgWENNIG1lc3NhZ2UgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAEUBQXV0aG9yaXplZCBjYWxsIHN1Ym1pdHRlZCBieSB0aGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlcjogaXQgaXMgYWNjZXB0ZWQgZnJvbSBhEQFsb2NhbCBvciBpbi1ibG9jayBzb3VyY2Ugb25seSwgc28gaXQgY2Fubm90IGJlIHN1Ym1pdHRlZCBleHRlcm5hbGx5LgBZAWBmaXJzdF9zZXF1ZW5jZWAgbXVzdCBiZSB0aGUgc2VxdWVuY2UgYXQgdGhlIGZyb250IG9mIGBDcmVkaXRUcmVlRGVsaXZlcnlRdWV1ZWAsIHdoaWNoPQFtYWtlcyBhIHJldHJ5IHRoYXQgcmFjZWQgYSBzdWNjZXNzZnVsIGRlbGl2ZXJ5IHN0YWxlIHJhdGhlciB0aGFuIGEgc2Vjb25kIHNlbmQuTHJlcGxheV9jcmVkaXRfdHJlZXMEARhibG9ja3MRBQHoQm91bmRlZFZlYzxCbG9ja051bWJlckZvcjxUPiwgVDo6TWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlPgATQPRSZXNlbmRzIHRoZSBjcmVkaXQgdHJlZXMgb2YgYGJsb2Nrc2AgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uAF0BUGVybWlzc2lvbmxlc3M6IGEgY3JlZGl0IHRyZWUgaXMgYSBwdWJsaWMgY29tbWl0bWVudCB0aGUgY2xhaW1zIGNoYWluIGlzIG1lYW50IHRvIGhvbGQsXQFhbmQgdGhlIHRyZWVzIGFyZSByZWFkIGZyb20gW2BOZnRDbGFpbUNyZWRpdFJvb3RzYF0gcmF0aGVyIHRoYW4gc3VwcGxpZWQgYnkgdGhlIGNhbGxlci5RAUJsb2NrcyB3aXRob3V0IGEgdHJlZSBhcmUgc2tpcHBlZC4gQSByZXNlbnQgdHJlZSBjYXJyaWVzIG5vIHNlcXVlbmNlIG51bWJlciwgc28gdGhpc10BY2Fubm90IGRpc3R1cmIgdGhlIGNsYWltcyBjaGFpbidzIHRyYWNraW5nIG9mIHRoZSBsaXZlIHN0cmVhbSwgYW5kIG9uZSB0aGUgY2xhaW1zIGNoYWluAQFhbHJlYWR5IGhvbGRzIGlzIGlnbm9yZWQgdGhlcmUgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYW55dGhpbmcuAE0BT25lIHJlcGxheSBydW5zIHBlciBbYENvbmZpZzo6UmVwbGF5Q29vbGRvd25TZWNvbmRzYF0sIGNvdW50ZWQgZnJvbSB0aGUgbGFzdCBvbmUgYnlMW2BMYXN0UmVwbGF5VGltZWBdLgBZAVRoZSBjYWxsZXIgcGF5cyBmb3IgdGhlIHJlbW90ZSB3b3JrLCBbYENvbmZpZzo6TmZ0Q2xhaW1zUmVtb3RlV2VpZ2h0YF0gcGVyIHRyZWUgb24gdG9waG9mIHRoaXMgY2FsbCdzIG93biB3ZWlnaHQuADQjIyBQYXJhbWV0ZXJzDQEtIGBibG9ja3NgOiBUaGUgdHJlZSBibG9ja3MgdG8gcmVzZW5kLCBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIuWHJlY2VpdmVfdHJlZV9kZWxldGlvbnMEARhibG9ja3MVBQHwQm91bmRlZFZlYzxCbG9ja051bWJlckZvcjxUPiwgVDo6TWF4VHJlZURlbGV0aW9uc1Blck1lc3NhZ2U+ABRAHQFSZW1vdmVzIHRoZSByb290cyBvZiBgYmxvY2tzYCwgd2hpY2ggdGhlIGNsYWltcyBjaGFpbiBpcyBmaW5pc2hlZCB3aXRoLgBVAUV2ZXJ5IGNyZWRpdCB0aG9zZSByb290cyBjb21taXR0ZWQgdG8gaGFzIGJlZW4gbWludGVkLCBvciB0aGUgY2xhaW1zIGNoYWluJ3MgZGVhZGxpbmU1AWZvciB0aGVtIGhhcyBwYXNzZWQsIHNvIG5vIHByb29mIGNhbiBiZSBidWlsdCBhZ2FpbnN0IHRoZW0gYWdhaW4uIFRoZSBjYWxsIGlzVQFpZGVtcG90ZW50OiBpdCBza2lwcyBhIGJsb2NrIHdob3NlIHJvb3QgaXMgYWxyZWFkeSBnb25lIHdpdGhvdXQgcmVwb3J0aW5nIGl0LCBiZWNhdXNlUQFbYFBhbGxldDo6cm9vdF90dGxgXSBjYW4gcmVtb3ZlIGEgcm9vdCBpbiB0aGUgc2FtZSB3aW5kb3cgaXRzIGRlbGV0aW9uIGlzIGluIGZsaWdodC4ARQFbYENvbmZpZzo6TWF4UmV0YWluZWRDcmVkaXRUcmVlc2BdIHJlbW92ZXMgdGhlIGF3YXJkcywgYW5kIGl0cyBvd24gcmluZyByZW1vdmVzIGFVAWNsYWltYW50J3MgW2BOZnRDbGFpbUNyZWRpdEJsb2Nrc2BdIGVudHJ5LiBUaGUgaW5kZXggcmVzb2x2ZXMgYWdhaW5zdCB0aGUgcm9vdHMsIHNvIGHsYmxvY2sgd2hvc2Ugcm9vdCBpcyBnb25lIGRyb3BzIG91dCBvZiB0aGUgYW5zd2VyIGJ5IGl0c2VsZi4AJCMjIE9yaWdpbjUBUmVxdWlyZXMgdGhlIGNsYWltcyBjaGFpbidzIFhDTSBvcmlnaW4gKFtgQ29uZmlnOjpFbnN1cmVDbGFpbXNDaGFpbk9yaWdpbmBdKS4ANCMjIFBhcmFtZXRlcnPILSBgYmxvY2tzYDogVGhlIHRyZWUgYmxvY2tzIHdob3NlIHJvb3RzIHRvIHJlbW92ZS5Mc3dlZXBfZXhwaXJlZF9yb290cwgBGG9sZGVzdDgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgAVJB0BUmVtb3ZlcyB0aGUgcm9vdHMgd2hvc2UgW2BQYWxsZXQ6OnJvb3RfdHRsYF0gaGFzIHJ1biBvdXQsIG9sZGVzdCBmaXJzdC4AXQFUaGlzIHBhbGxldCdzIG9mZmNoYWluIHdvcmtlciBzdWJtaXRzIHRoaXMgYXV0aG9yaXplZCBjYWxsLiBJdCBpcyBhY2NlcHRlZCBmcm9tIGEgbG9jYWz4b3IgaW4tYmxvY2sgc291cmNlIG9ubHksIHNvIG5vIGV4dGVybmFsIHN1Ym1pc3Npb24gcmVhY2hlcyBpdC4AVQFUaGUgY2xhaW1zIGNoYWluJ3MgVFRMIGlzIHRoZSBzaG9ydGVyIG9uZSwgc28gdGhlIHN3ZWVwIG9ubHkgcmVtb3ZlcyByb290cyB0aGF0IGNoYWluUQFoYXMgYWxyZWFkeSBnaXZlbiB1cCBvbiBhbmQgc3RyYW5kcyBub3RoaW5nIG1pbnRhYmxlLiBgb2xkZXN0YCBtdXN0IGJlIHRoZSB0aW1lc3RhbXA9AVtgUm9vdEV4cGlyaWVzYF0gaG9sZHMgaXRzIG9sZGVzdCBlbnRyeSB1bmRlciwgd2hpY2ggbWFrZXMgYSByZXRyeSB0aGF0IHJhY2VkIGHAc3VjY2Vzc2Z1bCBzd2VlcCBzdGFsZSBpbnN0ZWFkIG9mIGEgc2Vjb25kIHBhc3MueHRlc3RuZXRfZ3JhbnRfbmZ0X2NsYWltX2NyZWRpdBQBIGNsYWltYW50CQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEgYXR0ZXN0ZXIJBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4AAShnYW1lX2luZGV4OAEcR2FtZUlkeAABFHJvdW5kDAEoUm91bmRJbmRleAABRGF0dGVzdGVyX3Bvc2l0aW9uOAFAQXR0ZXN0ZXJQb3NpdGlvbgBnYOhBd2FyZCBhbiBORlQgY2xhaW0gY3JlZGl0IHRvIGBjbGFpbWFudGAgb3V0c2lkZSBvZiBhIGdhbWUuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy5JAUl0IGV4aXN0cyBiZWNhdXNlIGEgY3JlZGl0IGlzIG90aGVyd2lzZSBvbmx5IGVhcm5lZCBieSBhIGBQZXJzb25gIHZvdGUgaW4gYSBwbGF5ZWRFAWdhbWUsIHdoaWNoIG1ha2VzIHRoZSBjbGFpbSBjaGFpbidzIG1pbnRpbmcgcGF0aCBoYXJkIHRvIGV4ZXJjaXNlIG9uIGl0cyBvd24uIFRoZQEBY3JlZGl0IGl0IGF3YXJkcyBpcyBhIG5vcm1hbCBvbmU6IGl0IGlzIHJlY29yZGVkIGluIHRoaXMgYmxvY2snc0UBW2BOZnRDbGFpbUNyZWRpdEF3YXJkc2BdLCBjb21taXR0ZWQgdG8gdGhlIGJsb2NrJ3MgdHJlZSBhbmQgY2xhaW1lZCB3aXRoIHRoZSBzYW1lTHByb29mIGFzIGFueSBvdGhlci4AUQFUaGUgY3JlZGl0IGlzIHRoZSBvbmUgYGF0dGVzdGVyYCB3b3VsZCBlYXJuIGBjbGFpbWFudGAgYnkgcmVwb3J0aW5nIHRoZW0gYSBwZXJzb24gaW5JAWByb3VuZGAgb2YgYGdhbWVfaW5kZXhgLCBzbyBpdCBkb2VzIG5vdCBuZWVkIGFueSBvZiB0aG9zZSB0byBleGlzdC4gQSBzbG90IGlzIHVzZWRRAW9uY2UgcGVyIGNsYWltYW50IGFuZCBnYW1lOiByZXBlYXRpbmcgYSBjYWxsIHdpdGggdGhlIHNhbWUgYGdhbWVfaW5kZXhgLCBgcm91bmRgIGFuZF0BYGF0dGVzdGVyX3Bvc2l0aW9uYCBmb3IgdGhlIHNhbWUgYGNsYWltYW50YCBmYWlscyByYXRoZXIgdGhhbiBhd2FyZGluZyBhIHNlY29uZCBjcmVkaXQuoFZhcnkgYW55IG9mIHRoZW0gdG8gYXdhcmQgbW9yZSB0aGFuIG9uZS4ALFBhcmFtZXRlcnM6TQEtIGBjbGFpbWFudGA6IHdobyB0aGUgY3JlZGl0IGlzIGF3YXJkZWQgdG8sIGFuZCB0aGUgb25seSBpZGVudGl0eSB0aGF0IGNhbiBtaW50IGl0LlUBLSBgYXR0ZXN0ZXJgOiB0aGUgcmVwb3J0ZXIgdGhlIGNyZWRpdCBpcyBhdHRyaWJ1dGVkIHRvLCB3aGljaCBhbG9uZyB3aXRoIGBnYW1lX2luZGV4YCEBICBhbmQgYHJvdW5kYCBpcyB3aGF0IG1ha2VzIHRoZSBjcmVkaXQgZGlzdGluY3QgZnJvbSBhbm90aGVyIGNsYWltYW50J3MuUQEtIGBnYW1lX2luZGV4YDogdGhlIGdhbWUgdGhlIGNyZWRpdCBpcyBhdHRyaWJ1dGVkIHRvLiBBbGwgdGhlIGNyZWRpdHMgYSBibG9jayBhd2FyZHMdASAgbXVzdCBuYW1lIHRoZSBzYW1lIGdhbWUsIHNpbmNlIHRoZSBibG9jaydzIHRyZWUgaXMgbGFiZWxsZWQgd2l0aCBvbmUu1C0gYHJvdW5kYDogdGhlIHJvdW5kIG9mIHRoYXQgZ2FtZSwgYmVsb3cgYE1heFJvdW5kc2AuYQEtIGBhdHRlc3Rlcl9wb3NpdGlvbmA6IHRoZSBhdHRlc3RlcidzIHBsYWNlIGluIHRoZSBncm91cCwgYmVsb3cgYE1heEdyb3VwU2l6ZWAuIFRvZ2V0aGVyAQEgIHdpdGggYHJvdW5kYCBpdCBwaWNrcyB0aGUgY2xhaW1hbnQncyBjcmVkaXQgc2xvdCBmb3IgdGhlIGdhbWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AABUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AABkFDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBBDYWxsBARUAAEgLHJlc2VydmVfaWRzBAEUY291bnQ4AQx1MzIAAASEUmVzZXJ2ZSBhIG51bWJlciBvZiBwZXJzb25hbCBJRHMuUHJlbmV3X2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAEEvFJlbmV3IGEgcGVyc29uYWwgSUQuIFRoZSBJRCBtdXN0IG5vdCBiZSBpbiB1c2UuVGNhbmNlbF9pZF9yZXNlcnZhdGlvbgQBCGlkKAEoUGVyc29uYWxJZAACBIRDYW5jZWwgYSBwZXJzb25hbCBJRCByZXNlcnZhdGlvbi5QcmVjb2duaXplX3BlcnNvbmhvb2QEATBpZHNfYW5kX2tleXMdBQHwQm91bmRlZFZlYzwoUGVyc29uYWxJZCwgTWVtYmVyT2Y8VD4pLCBUOjpNYXhQZXJzb25CYXRjaFNpemU+AAMEKQFHcmFudCBwZXJzb25ob29kIGZvciBhIGxpc3Qgb2YgY2FuZGlkYXRlcyB0aGF0IGhhdmUgcmVzZXJ2ZWQgcGVyc29uYWwgSURzLkhzdXNwZW5kX3BlcnNvbmhvb2QEAQxpZHMpBQG0Qm91bmRlZFZlYzxQZXJzb25hbElkLCBUOjpNYXhQZXJzb25CYXRjaFNpemU+AAQIXQFTdXNwZW5kIHRoZSBwZXJzb25ob29kIG9mIGEgbGlzdCBvZiByZWNvZ25pemVkIHBlb3BsZS4gVGhlIHBlb3BsZSBtdXN0IG5vdCBjdXJyZW50bHkgYmUoc3VzcGVuZGVkLkRyZXN1bWVfcGVyc29uaG9vZAQBCGlkKAEoUGVyc29uYWxJZAAFBBEBUmVzdW1lIHNvbWVvbmUncyBwZXJzb25ob29kLiBUaGUgcGVyc29uIG11c3QgY3VycmVudGx5IGJlIHN1c3BlbmRlZC5Yc3RhcnRfbXV0YXRpb25fc2Vzc2lvbgAGCF0BU3RhcnQgYSBtdXRhdGlvbiBzZXNzaW9uIGluIHRoZSB1bmRlcmx5aW5nIGBQZW9wbGVgIGludGVyZmFjZS4gVGhpcyBjYWxsIGRvZXMgbm90IGNoZWNrJQF3aGV0aGVyIGEgbXV0YXRpb24gc2Vzc2lvbiBpcyBhbHJlYWR5IG9uZ29pbmcgYW5kIGNhbiBzdGFydCBuZXcgc2Vzc2lvbnMuUGVuZF9tdXRhdGlvbl9zZXNzaW9uAAcQXQFFbmQgYSBtdXRhdGlvbiBzZXNzaW9uIGluIHRoZSB1bmRlcmx5aW5nIGBQZW9wbGVgIGludGVyZmFjZS4gVGhpcyBjYWxsIGNhbiBlbmQgbXVsdGlwbGXgbXV0YXRpb24gc2Vzc2lvbnMsIGV2ZW4gb25lcyBub3Qgc3RhcnRlZCBieSB0aGlzIHBhbGxldC4A2FRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgbm8gbXV0YXRpb24gc2Vzc2lvbiBpcyBvbmdvaW5nLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4dBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASEFBFMAAAQAJQUBGFZlYzxUPgAAIQUAAAQIKAgAJQUAAAIhBQApBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASgEUwAABAAtBQEYVmVjPFQ+AAAtBQAAAigAMQUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQQQ2FsbAQEVAABIHhpbmNyZWFzZV9hdHRlc3RhdGlvbl9hbGxvd2FuY2UIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAABglAUdyYW50IHNvbWUgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gYXR0ZXN0IHBlb3BsZS4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC4AyC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBhdHRlc3RhdGlvbnMgdG8uvC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBhdHRlc3RhdGlvbnMgdG8gZ3JhbnQubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARS8Q2xlYXIgYWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBmb3IgYW4gYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC4A5C0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgYWxsIGF0dGVzdGF0aW9ucyBmcm9tLhhhdHRlc3QUASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAAUxjYW5kaWRhdGVfc2lnbmF0dXJleQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAEwcmluZ192cmZfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAE4U2lnbmF0dXJlT2Y8VD4AAVRjb25zdW1lcl9yZWdpc3RyYXRpb241BQGsT3B0aW9uPExpdGVDb25zdW1lclJlZ2lzdHJhdGlvblBhcmFtc09mPFQ+PgACjEhBdHRlc3QgYW4gYWNjb3VudC4ARQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIGhhdmUgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgbGVmdC4A8FRoZSBhdXRob3JpdHkgd2lsbCBoYXZlIHRvIGdldCB0d28gc2lnbmF0dXJlcyBmcm9tIHRoZSB1c2VyOk0BLSBvbmUgY3JlYXRlZCB1c2luZyB0aGVpciBhY2NvdW50IGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYGNhbmRpZGF0ZWAoICBhY2NvdW50O10BLSBvbmUgY3JlYXRlZCB1c2luZyB0aGVpciByaW5nLXZyZiBrZXkgYXR0ZXN0aW5nIHRvIHRoZSBvd25lcnNoaXAgb2YgdGhlIGByaW5nX3ZyZl9rZXlgGCAga2V5LgBhAVRoZSBtZXNzYWdlIHRvIGJlIHNpZ25lZCBieSBib3RoIGtleXMgZnJvbSB3aGljaCB0aGUgc2lnbmF0dXJlcyBhcmUgZ2VuZXJhdGVkIGlzIGNyZWF0ZWRVAWJ5IGNvbmNhdGVuYXRpbmcgdGhlIGJ5dGVzICJwb3A6cGVvcGxlLWxpdGU6cmVnaXN0ZXIgdXNpbmciIHdpdGggdGhlIGVuY29kZWQgYnl0ZXMgb2YtAXRoZSB1c2VyJ3MgYWNjb3VudCAoYGNhbmRpZGF0ZWApLCBhbmQgdGhlIGVuY29kZWQgYnl0ZXMgb2YgdGhlIHJpbmcgVlJGIGtleUQoYHJpbmdfdnJmX2tleWApLgBYT24gc3VjY2VzcywgdGhpcyBjYWxsOsAtIHN0b3JlcyBsaXRlIHJlZ2lzdHJhdGlvbiBkYXRhIGluIGBMaXRlUGVvcGxlYCz0LSBhZGRzIHRoZSB1c2VyJ3MgcmluZyBWUkYga2V5IHRvIHRoZSBsaXRlIG1lbWJlciBjb2xsZWN0aW9uLgAJAVRoZSBsaXRlIG1lbWJlciBjb2xsZWN0aW9uIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gY3JlYXRlZCAodmlhIHRoZehgbWlncmF0aW9uOjpDcmVhdGVMaXRlUGVvcGxlQ29sbGVjdGlvbmAgcnVudGltZSB1cGdyYWRlIG9ypFtgQ2FsbDo6Y3JlYXRlX2xpdGVfcGVvcGxlX2NvbGxlY3Rpb25gXSkuAPwtIGBjYW5kaWRhdGVgOiBUaGUgY2FuZGlkYXRlIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBsaXRlIHBlcnNvbi5hAS0gYGNhbmRpZGF0ZV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlLCBwcm92aWRlZCBieSB0aGUgY2FuZGlkYXRlLCB0byBhbGxvdyB0aGUgYXR0ZXN0ZXLcICB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgb24gdGhlaXIgYmVoYWxmLiUBLSBgcmluZ192cmZfa2V5YDogVGhlIHJpbmcgVlJGIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpdGUgcGVyc29uLl0BLSBgcmluZ192cmZfa2V5X3NpZ25hdHVyZWA6IFRoZSByaW5nIFZSRiBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93VQEgIHRoZSBhdHRlc3RlciB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoaXMgYWxzbyBwcm92ZSB0aGUgb3duZXJzaGlwIG9mkCAgdGhlIHJpbmcgVlJGIGtleSBieSB0aGUgY2FuZGlkYXRlLl0BLSBjb25zdW1lcl9yZWdpc3RyYXRpb246IE9wdGlvbmFsIHBhcmFtZXRlciB3aGljaCBjYW4gY29udGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uXQEgIHRvIGZvcndhcmQgYSBjb25zdW1lciByZWdpc3RyYXRpb24gcmVxdWVzdCB0byB0aGUgYExpdGVDb25zdW1lclJlZ2lzdHJhcmAgc2VydmljZS4gSWZRASAgcHJlc2VudCwgaXQgYWxzbyBjb250YWlucyBhIHNpZ25hdHVyZSBjcmVhdGVkIGJ5IHRoZSB1c2VyIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSUBICBpbnRlbnQuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHNpZ25pbmcgcGF5bG9hZCBnZW5lcmF0aW9uIGF2YWlsYWJsZSBpbuwgIFt0eXBlczo6TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zOjpzaWduaW5nX3BheWxvYWRdLkRyZWdpc3Rlcl93aXRoX2ZlZQwBMHJpbmdfdnJmX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AAFUY29uc3VtZXJfcmVnaXN0cmF0aW9uNQUBrE9wdGlvbjxMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXNPZjxUPj4AA0gtAVJlZ2lzdGVyIGFzIGEgbGl0ZSBwZXJzb24gYnkgcGF5aW5nIHRoZSBjb25maWd1cmVkIG5hdGl2ZSByZWdpc3RyYXRpb24gZmVlLgBhAVRoZSBvcmlnaW4gbXVzdCBiZSB0aGUgY2FuZGlkYXRlJ3Mgc2lnbmVkIGFjY291bnQuIFRoZSBjYW5kaWRhdGUgcHJvdmVzIG93bmVyc2hpcCBvZiB0aGVFAWByaW5nX3ZyZl9rZXlgIGJ5IHNpZ25pbmcgdGhlIHNhbWUgcmVnaXN0cmF0aW9uIG1lc3NhZ2UgdXNlZCBieSBbYFNlbGY6OmF0dGVzdGBdLgBFAU9uIHN1Y2Nlc3MsIHRoaXMgY2FsbCB0cmFuc2ZlcnMgdGhlIGNvbmZpZ3VyZWQgZmVlIHRvIHRoZSBwYWxsZXQgcG90LCBzdG9yZXMgbGl0ZTkBcmVnaXN0cmF0aW9uIGRhdGEgaW4gYExpdGVQZW9wbGVgIGFuZCBhZGRzIHRoZSByaW5nIFZSRiBrZXkgdG8gdGhlIGxpdGUgbWVtYmVykGNvbGxlY3Rpb24uIFRoZSBmZWUgaXMgbm90IHJlZnVuZGVkLgAFAVRoZSBsaXRlIG1lbWJlciBjb2xsZWN0aW9uIG11c3QgYWxyZWFkeSBoYXZlIGJlZW4gY3JlYXRlZCB2aWEgdGhl6GBtaWdyYXRpb246OkNyZWF0ZUxpdGVQZW9wbGVDb2xsZWN0aW9uYCBydW50aW1lIHVwZ3JhZGUgb3KgW2BDYWxsOjpjcmVhdGVfbGl0ZV9wZW9wbGVfY29sbGVjdGlvbmBdLgAlAS0gYHJpbmdfdnJmX2tleWA6IFRoZSByaW5nIFZSRiBrZXkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaXRlIHBlcnNvbi5NAS0gYHByb29mX29mX293bmVyc2hpcGA6IFRoZSByaW5nIFZSRiBzaWduYXR1cmUgcHJvdmluZyBvd25lcnNoaXAgb2YgYHJpbmdfdnJmX2tleWAuSQEtIGBjb25zdW1lcl9yZWdpc3RyYXRpb25gOiBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIHJlZ2lzdGVyIHRoZSBjYW5kaWRhdGUgYXMgYSBsaXRlVQEgIGNvbnN1bWVyLiBUaGUgcmVxdWVzdCBtdXN0IGNvbnRhaW4gYSBzaWduYXR1cmUgb3ZlciB0aGUgdXN1YWwgY29uc3VtZXIgcGF5bG9hZCB3aXRoKQEgIHRoZSBzaWduZWQgY2FuZGlkYXRlIGFjY291bnQgaW4gYm90aCB0aGUgYWNjb3VudCBhbmQgdmVyaWZpZXIgcG9zaXRpb25zLkhkaXNwYXRjaF9hc19zaWduZXIEARBjYWxsIAFMQm94PFQ6OlJ1bnRpbWVDYWxsPgAFAERzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATh2YWxpZF9hdF9ibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAY4tFNldCB0aGUgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggYSBsaXRlIGFsaWFzLgC0VGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgdmFsaWRfYXRfYmxvY2tgIHVudGlsxGB2YWxpZF9hdF9ibG9jayArIGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlYC4AJQFUaGlzIGNhbGwgaXMgYXV0aG9yaXplZCB0aHJvdWdoIHRoZSBgQXNMaXRlQWxpYXNXaXRoUHJvb2ZgIHZhcmlhbnQgb2YgdGhlMQFgUGVvcGxlTGl0ZUF1dGhgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiwgd2hpY2ggcHJvdmlkZXMgbm8gbm9uY2UtYmFzZWQgcmVwbGF5RQFwcm90ZWN0aW9uLiBSZXBsYXkgaXMgb25seSBwcmV2ZW50ZWQgZm9yIGFzIGxvbmcgYXMgdGhlIGFsaWFzIHN0aWxsIHBvaW50cyBhdCB0aGVJAWFjY291bnQgdGhpcyBjYWxsIHNldHMuIEFzIHNvb24gYXMgdGhlIGFsaWFzIGlzIHBvaW50ZWQgYXQgYSBkaWZmZXJlbnQgYWNjb3VudCAoYnlNAWFub3RoZXIgYHNldF9hbGlhc19hY2NvdW50YCksIHRoaXMgY2FsbCBiZWNvbWVzIHJlcGxheWFibGUgYWdhaW4gdW50aWwgaXRzIHZhbGlkaXR5WQFwZXJpb2QgZWxhcHNlcy4gQ29uc2VxdWVudGx5LCBpZiAyIHN1Y2ggdHJhbnNhY3Rpb25zIHNldHRpbmcgMiBkaWZmZXJlbnQgYWNjb3VudHMgaGF2ZVkBb3ZlcmxhcHBpbmcgdmFsaWRpdHkgcGVyaW9kcywgdGhleSBjYW4gYmUgcmVwbGF5ZWQgYWdhaW5zdCBlYWNoIG90aGVyIGluZGVmaW5pdGVseSBmb3ItAXRoZSBkdXJhdGlvbiBvZiB0aGUgb3ZlcmxhcC4gVG8gYXZvaWQgdGhpcywgdGhlIGNhbGxlciBtdXN0IG5vdCBoYXZlIDIgc3VjaA0BdHJhbnNhY3Rpb25zIGFsaXZlICh3aXRoaW4gdGhlaXIgdmFsaWRpdHkgcGVyaW9kKSBhdCB0aGUgc2FtZSB0aW1lLkx1bnNldF9hbGlhc19hY2NvdW50AAcAdGNyZWF0ZV9saXRlX3Blb3BsZV9jb2xsZWN0aW9uAAgoiENyZWF0ZSB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4AKQFUaGlzIGNhbGwgaXMgdmFsaWQgb25seSBpZiB0aGUgY29sbGVjdGlvbiBkb2Vzbid0IGV4aXN0IHlldC4gT25jZSBjcmVhdGVkLIx0aGlzIGNhbGwgY2Fubm90IGJlIGV4ZWN1dGVkIGFnYWluLgDUVGhlIGNvbGxlY3Rpb24gaXMgY3JlYXRlZCB3aXRoIGEgZml4ZWQgY29uZmlndXJhdGlvbjq4LSBPd25lcjogQ29uZmlndXJlZCB2aWEgYENvbGxlY3Rpb25Pd25lcmAgdHlwZZwtIE9uYm9hcmRpbmcgc2l6ZTogYExpdGVPbmJvYXJkaW5nU2l6ZWBQLSBNb2RlOiBgQXBwZW5kT25seWB8LSBSaW5nIHNpemU6IGBMaXRlUmluZ0V4cG9uZW50YAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41BQQYT3B0aW9uBARUATkFAQgQTm9uZQAAABBTb21lBAA5BQAAAQAAOQUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlc3hMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXMIJEFjY291bnRJZAEEJFNpZ25hdHVyZQF5BAAUASRzaWduYXR1cmV5BAEkU2lnbmF0dXJlAAEcYWNjb3VudAQBJEFjY291bnRJZAABOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEgdXNlcm5hbWU9BQEgVXNlcm5hbWUAAURyZXNlcnZlZF91c2VybmFtZUEFAUBPcHRpb248VXNlcm5hbWU+AAA9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEEFBBhPcHRpb24EBFQBPQUBCBBOb25lAAAAEFNvbWUEAD0FAAABAABFBQxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQQQ2FsbAQEVAABNFByZWdpc3Rlcl9saXRlX3BlcnNvbgwBOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEgdXNlcm5hbWU9BQEgVXNlcm5hbWUAAURyZXNlcnZlZF91c2VybmFtZUEFAUBPcHRpb248VXNlcm5hbWU+AAAElFJlZ2lzdGVyIGEgbGl0ZSBwZXJzb24gYXMgYSBjb25zdW1lci48cmVnaXN0ZXJfcGVyc29uDAFQbGlua2VkX2xpdGVfaWRlbnRpdHkEATBUOjpBY2NvdW50SWQAAUxsaXRlX2lkZW50aXR5X3Byb29meQQBUFQ6Ok9mZmNoYWluU2lnbmF0dXJlAAE8dXNlcm5hbWVfY2hvaWNlSQUBWFBlcnNvbmFsVXNlcm5hbWVDaG9pY2UAASScUmVnaXN0ZXIgYSBwcm92ZW4gcGVyc29uIGFzIGEgY29uc3VtZXIuAF0BVGhlIHBlcnNvbiBtdXN0IGxpbmsgYSBwcmV2aW91c2x5IHJlY29nbml6ZWQgbGl0ZSBpZGVudGl0eSwgd2hpY2ggd2lsbCBiZSB1cGdyYWRlZCB0byBhWQFmdWxsIHBlcnNvbiBjb25zdW1lci4gSW4gb3JkZXIgdG8gcHJvdmUgdGhleSBob2xkIHRoZSBsaXRlIGlkZW50aXR5IHRoZXkgd2FudCB0byBsaW5rLGEBdXNlcnMgbXVzdCBwcm92aWRlIGEgYGxpdGVfaWRlbnRpdHlfcHJvb2ZgIHNpZ25hdHVyZSwgY3JlYXRlZCBieSBzaWduaW5nIHRoZSBhbGlhcyBieXRlc4h1c2luZyB0aGVpciBsaXRlIGNvbnN1bWVyIGFjY291bnQuADkBVGhlIGNvbnN1bWVyIGNhbiBjaG9vc2UgaWYgdGhleSB3YW50IHRvIGhhdmUgYSBuZXcgdXNlcm5hbWUgb3IgdXNlIGFuIGV4aXN0aW5nFQFyZXNlcnZhdGlvbiBtYWRlIGluIHRoZSBuYW1lIG9mIHRoZSBsaXRlIGNvbnN1bWVyIHdobyB3aWxsIGJlIGxpbmtlZC5odG91Y2hfcGVyc29uX2F1dGhvcml6YXRpb24AAhBJAVVwZGF0ZSBhIHBlcnNvbidzIGF1dGhvcml6YXRpb24gYnkgZW5zdXJpbmcgdGhleSBjYW4gc3RpbGwgYXV0aGVudGljYXRlIGFzIHBlb3BsZS4AUQFUaGlzIGNhbGwgbXVzdCBiZSBwZXJmb3JtZWQgYXQgbGVhc3QgYE1pblBlcnNvbkF1dGhVcGRhdGVJbnRlcnZhbGAgc2Vjb25kcyBhZnRlciB0aGWUbGFzdCB1cGRhdGUgaW4gb3JkZXIgdG8gcHJldmVudCBzcGFtLoxyZW1vdmVfZXhwaXJlZF91c2VybmFtZV9yZXNlcnZhdGlvbggBIHVzZXJuYW1lPQUBIFVzZXJuYW1lAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADIDkBUmVtb3ZlIGFuIGV4cGlyZWQgZW50cnkgZnJvbSBhIHVzZXJuYW1lIHJlc2VydmF0aW9uIHF1ZXVlLiBUaGUgdGFyZ2V0IGVudHJ5IGlzAQFpZGVudGlmaWVkIGJ5IGBhY2NvdW50YCBhbmQgY2FuIGJlIGF0IGFueSBwb3NpdGlvbiBpbiB0aGUgcXVldWUuHQFFYWNoIGNhbGwgcmVtb3ZlcyBleGFjdGx5IG9uZSBlbnRyeSwgc28gaXQgbXVzdCBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0b5BjbGVhciBtdWx0aXBsZSBleHBpcmVkIHJlc2VydmF0aW9ucy4ALQFUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuIFRoZSBgYWNjb3VudGAxAXBhcmFtZXRlciBpcyBhbHNvIHVzZWQgZm9yIHRyYW5zYWN0aW9uIHBvb2wgZGVkdXBsaWNhdGlvbiwgYWxsb3dpbmcgcGFyYWxsZWwRAXN1Ym1pc3Npb25zIHRoYXQgdGFyZ2V0IGRpZmZlcmVudCBleHBpcmVkIGVudHJpZXMgaW4gdGhlIHNhbWUgcXVldWUuVHVwZGF0ZV9pZGVudGlmaWVyX2tleQQBOGlkZW50aWZpZXJfa2V5fQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAQQ2FVwZGF0ZSB0aGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVyIGtleSBvZiBhIGNvbnN1bWVyLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSB0aGUgYWNjb3VudCByZWdpc3RlcmVkIGZvciB0aGF0IGNvbnN1bWVyLCByZWdhcmRsZXNzIG9mIHRoZWlyMGNyZWRpYmlsaXR5LoRzZXRfdXNlcm5hbWVfcmVzZXJ2YXRpb25fZHVyYXRpb24EASBkdXJhdGlvbigBDHU2NAAFDB0BU2V0IHRoZSBkdXJhdGlvbiBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4AYFRoZSBvcmlnaW4gbXVzdCBiZSByb290LkxkZW1vdGVfYXV0aF9leHBpcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAHDDEBRGVtb3RlIGEgZnVsbCBwZXJzb24gdG8gYSBsaXRlIHBlcnNvbiBhZnRlciB0aGVpciBhdXRob3JpemF0aW9uIGhhcyBleHBpcmVkLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLrxzZXRfbm90aWZpY2F0aW9uX3N0YXRlbWVudF9hY2NvdW50X2Zvcl9zZXF1ZW5jZQgBJHJlZmVyZW5jZU0FAVROb3RpZmljYXRpb25SZWZlcmVuY2UAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAg8DQFBc3NvY2lhdGUgYSBzdGF0ZW1lbnQgYWNjb3VudCB3aXRoIGEgbm90aWZpY2F0aW9uIGNvbnRleHQgc2VxdWVuY2UuAFEBVGhlIGFzc29jaWF0ZWQgYWNjb3VudCBjYW4gc3VibWl0IHN0YXRlbWVudHMgd2hpbGUgdGhpcyBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGlzHGFjdGl2ZS4xAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpOb3RpZmljYXRpb25BbGlhc2AsIGNyZWF0ZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BNAShgUmVnaXN0ZXJOb3RpZmljYXRpb25XaXRoUHJvb2YoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHByb29mIHZhbGlkYXRpb24uHQFPbiBzdWNjZXNzLCBpbmNyZWFzZXMgc3RhdGVtZW50IGFsbG93YW5jZSBhbmQgc3RvcmVzIHJlZ2lzdHJhdGlvbiBzdGF0ZWhge2FjY291bnRfaWQsIHJlZmVyZW5jZX1gLgAsUGFyYW1ldGVyczrEKiBgcmVmZXJlbmNlYDogbm90aWZpY2F0aW9uIHBlcmlvZC9zZXF1ZW5jZSBwYWlyLgkBICAtIGByZWZlcmVuY2UucGVyaW9kYCBtdXN0IGJlIHRoZSBjdXJyZW50IHN0YXRlbWVudC1zdG9yZSBwZXJpb2QuAQEgIC0gYHJlZmVyZW5jZS5zZXFgIG11c3QgYmUgaW4gYDAuLj1Ob3RpZmljYXRpb25TbG90c1BlclBlcmlvZGAuTQEqIGBhY2NvdW50X2lkYDogc3RhdGVtZW50IGFjY291bnQgdG8gYXV0aG9yaXplLiBNdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgYnkgYW5vdGhlcnAgIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24ujGNsZWFyX2V4cGlyZWRfbm90aWZpY2F0aW9uX3NlcXVlbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNlcQwBCHU4AAkoLQFDbGVhciBhIHN0YWxlIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gYW5kIHJldm9rZSBpdHMgc3RhdGVtZW50IGFsbG93YW5jZS4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4hAVN1Y2NlZWRzIG9ubHkgd2hlbiB0aGUgcmVnaXN0cmF0aW9uJ3MgcGVyaW9kLWRlcml2ZWQgZXhwaXJ5IGhhcyBlbGFwc2VkLlkBT24gc3VjY2VzcywgcmVtb3ZlcyBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIHN0YXRlIGFuZCBkZWNyZWFzZXMgc3RhdGVtZW50IGFsbG93YW5jZS4ALFBhcmFtZXRlcnM6WQEqIGBhY2NvdW50YDogc3RhdGVtZW50IGFjY291bnQgcHJldmlvdXNseSBhc3NvY2lhdGVkIHdpdGggYSBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uLl0BKiBgc2VxYDogbm90aWZpY2F0aW9uIHNlcXVlbmNlIHRvIGNsZWFyLiBNdXN0IG1hdGNoIHN0b3JlZCByZWdpc3RyYXRpb24gc2VxdWVuY2UgYW5kIGJlmCAgaW4gYDAuLj1Ob3RpZmljYXRpb25TbG90c1BlclBlcmlvZGAubHNldF9zdGF0ZW1lbnRfc3RvcmVfYWNjb3VudAwBGHBlcmlvZDgBDHUzMgABDHNlcTgBDHUzMgABOHRhcmdldF9hY2NvdW50BAEwVDo6QWNjb3VudElkAAosCQFDbGFpbSBhbiBhbm9ueW1vdXMgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSBmb3IgYSB0YXJnZXQgYWNjb3VudC4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6U3RtdFN0b3JlQWxpYXNgLCBwcm9kdWNlZCBieSB0aGUgYEFzUmVzb3VyY2VzYFUBKGBSZWdpc3RlclN0YXRlbWVudFN0b3JlQWxsb3dhbmNlKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciBwcm9vZiB2YWxpZGF0aW9uLkUBT24gc3VjY2VzcywgaW5jcmVhc2VzIHRoZSBzdGF0ZW1lbnQgYWxsb3dhbmNlIGZvciBgdGFyZ2V0X2FjY291bnRgIGFuZCBzdG9yZXMgdGhlmG1hcHBpbmcgaW4gYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuACxQYXJhbWV0ZXJzOj0BKiBgcGVyaW9kYDogZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoLiBNdXN0IGJlIGluIHRoZSBhY2NlcHRlZCBwZXJpb2Qgd2luZG93LkUBKiBgc2VxYDogc2xvdCBudW1iZXIgd2l0aGluIHRoZSBwZXJpb2QsIGJvdW5kZWQgYnkgdGhlIGNvbGxlY3Rpb24tc3BlY2lmaWMgbGltaXQuzCogYHRhcmdldF9hY2NvdW50YDogc3RhdGVtZW50IGFjY291bnQgdG8gYXV0aG9yaXplLoxjbGVhcl9leHBpcmVkX3N0bXRfc3RvcmVfYWxsb3dhbmNlcwgBGHBlcmlvZDgBDHUzMgABLGZpcnN0X2VudHJ5CAEUQWxpYXMACxTwUmVtb3ZlIGV4cGlyZWQgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZXMgZm9yIGEgcGFzdCBwZXJpb2QuAPRUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbDsgdGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQuRQFSZW1vdmVzIHVwIHRvIGBTdG10U3RvcmVDbGVhbnVwTGltaXRgIGVudHJpZXMgZnJvbSBgU3RhdGVtZW50U3RvcmVBbGxvd2FuY2VzYCBmb3JBAXRoZSBnaXZlbiBgcGVyaW9kYCwgZGVjcmVhc2luZyB0aGUgc3RhdGVtZW50IGFsbG93YW5jZSBmb3IgZWFjaCByZW1vdmVkIGFjY291bnQuXGNsYWltX2xvbmdfdGVybV9zdG9yYWdlDAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAMMDkBQ2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2Ugb24gYSByZW1vdGUgY2hhaW4gdXNpbmcgYW4gYW5vbnltb3VzIG1lbWJlcnNoaXAgcHJvb2YuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OkxvbmdUZXJtU3RvcmFnZUNsYWltKGFsaWFzLCBjb2xsZWN0aW9uKWAsIGNyZWF0ZWQgYnkgdGhlVQFgQXNSZXNvdXJjZXNgIChgQ2xhaW1Mb25nVGVybVN0b3JhZ2UoLi4pYCkgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGFmdGVyIHJpbmctVlJGIHByb29mLHZhbGlkYXRpb24uACxQYXJhbWV0ZXJzOkkBKiBgcGVyaW9kYDogdGhlIGNsYWltaW5nIHBlcmlvZC4gTXVzdCBiZSB0aGUgY3VycmVudCBwZXJpb2Qgb3IgdGhlIHByZXZpb3VzIG9uZSBpZmggIHdpdGhpbiB0aGUgZ3JhY2Ugd2luZG93Lg0BKiBgY291bnRlcmA6IHRoZSBjbGFpbSBjb3VudGVyIHdpdGhpbiB0aGUgcGVyaW9kLiBNdXN0IGJlIGxlc3MgdGhhbi0BICBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYC4gRWFjaCBjb3VudGVyIHByb2R1Y2VzIGEgZGlzdGluY3QgYWxpYXMuJQEqIGBhY2NvdW50X2lkYDogdGhlIGFjY291bnQgdG8gYXV0aG9yaXplIGZvciBzdG9yYWdlIG9uIHRoZSByZW1vdGUgY2hhaW4unGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlcwgBGHBlcmlvZDgBDHUzMgABFGxpbWl0OAEMdTMyAA0g8ENsZWFyIHNwZW50IGxvbmctdGVybSBzdG9yYWdlIGFsaWFzZXMgZm9yIGFuIGV4cGlyZWQgcGVyaW9kLgBFAVRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsIGF1dGhvcml6ZWQgdmlhIHRoZSBgYXV0aG9yaXplYCBhdHRyaWJ1dGUuIEl0IGNhbiBiZSUBY2FsbGVkIGJ5IGFueW9uZSBvbmNlIGEgcGVyaW9kIGhhcyBmdWxseSBleHBpcmVkIChwYXN0IHRoZSBncmFjZSB3aW5kb3cpLgAsUGFyYW1ldGVyczrQKiBgcGVyaW9kYDogdGhlIGV4cGlyZWQgcGVyaW9kIHRvIGNsZWFyIGFsaWFzZXMgZm9yLgEBKiBgbGltaXRgOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0byByZW1vdmUgaW4gdGhpcyBjYWxsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5JBQxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1hQZXJzb25hbFVzZXJuYW1lQ2hvaWNlAAEIKFN0YW5kYWxvbmUEAD0FASBVc2VybmFtZQAAACxSZXNlcnZhdGlvbgQAPQUBIFVzZXJuYW1lAAEAAE0FDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVE5vdGlmaWNhdGlvblJlZmVyZW5jZQAACAEYcGVyaW9kOAEMdTMyAAEMc2VxDAEIdTgAAFEFDGxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXIYcGFsbGV0EENhbGwEBFQAAQgoYWRkX2NodW5rcwwBNHJpbmdfZXhwb25lbnRVBQEwUmluZ0V4cG9uZW50AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAABOGVuY29kZWRfY2h1bmtzWQUBmEJvdW5kZWRWZWM8dTgsIE1heEVuY29kZWRDaHVua3NMZW48VD4+AAAQaEFkZHMgYSBuZXcgcGFnZSBvZiBjaHVua3MuAEEBVGhlIGhhc2ggb2YgdGhlIGNodW5rcyBtdXN0IG1hdGNoIHRoZSBoYXNoIHN0b3JlZCBvbi1jaGFpbiBpbiBgQ2h1bmtQYWdlSGFzaGVzYC7cVGhlIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgZXhpc3RzIG9uLWNoYWluLlRzZXRfY2h1bmtfcGFnZV9oYXNoZXMIATRyaW5nX2V4cG9uZW50VQUBMFJpbmdFeHBvbmVudAABLHBhZ2VfaGFzaGVzXQUBzEJvdW5kZWRWZWM8Q2h1bmtQYWdlSGFzaCwgQ29uc3RVMzI8TUFYX1BBR0VfQ09VTlQ+PgABGA0BU2V0cyB0aGUgZXhwZWN0ZWQgaGFzaGVzIGZvciBjaHVuayBwYWdlcyBmb3IgYSBnaXZlbiByaW5nIGV4cG9uZW50LgAhAUFsbG93cyBzZXR0aW5nIHRoZSBleHBlY3RlZCBoYXNoZXMgdGhhdCBjaHVua3MgbXVzdCBtYXRjaCB3aGVuIGFkZGVkIHZpYTRgYWRkX2NodW5rc2AuAKxUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUFEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdFeHBvbmVudAABDBBSMmU5AAkAFFIyZTEwAAoAFFIyZTE0AA4AAFkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAXQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAAYQUMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBBDYWxsBARUAAE4LG1lcmdlX3JpbmdzDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAAGFEBTWVyZ2UgdGhlIG1lbWJlcnMgaW4gdHdvIHJpbmdzIGludG8gYSBzaW5nbGUsIG5ldyByaW5nLiBJbiBvcmRlciBmb3IgdGhlIHJpbmdzIHRvIGJlVQFlbGlnaWJsZSBmb3IgbWVyZ2luZywgdGhleSBtdXN0IGJvdGggYmUgbm9uLWVtcHR5IGV4aXN0aW5nIHJpbmdzLCBiZSBiZWxvdyAxLzIgb2YgbWF4SQFjYXBhY2l0eSwgaGF2ZSBubyBwZW5kaW5nIHN1c3BlbnNpb25zIGFuZCBub3QgYmUgdGhlIHRvcCByaW5nIHVzZWQgZm9yIG9uYm9hcmRpbmcuAFEBT25seSBbYFJpbmdNb2RlOjpGbGV4aWJsZWBdIGNvbGxlY3Rpb25zIGNhbiBiZSBtZXJnZWQuIFRoZWlyIHJpbmcgc2l6ZSBuZXZlciBleGNlZWRzAQFgTWF4RmxleGlibGVSaW5nRXhwb25lbnRgLCBzbyBhbGwga2V5cyBvZiBhIHJpbmcgbGl2ZSBvbiBwYWdlIDAuTHNldF9vbmJvYXJkaW5nX3NpemUIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgABBE0BRm9yY2Ugc2V0IHRoZSBvbmJvYXJkaW5nIHNpemUgZm9yIGEgY29sbGVjdGlvbi4gVGhpcyBjYWxsIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcy4wc2VsZl9pbmNsdWRlDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAARhtZW1iZXIIASxNZW1iZXJPZjxUPgABNGNhbGxfdmFsaWRfYXQoAQx1NjQAAihBAUFsbG93IGEgbWVtYmVyIHdhaXRpbmcgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUgdG8gaW5jbHVkZSB0aGVtc2VsdmVzIGludG8gYSByaW5nTQFhZnRlciBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLiBUaGlzIGJ5cGFzc2VzIHRoZSBub3JtYWwgY29ob3J0LWJhc2VkIG9uYm9hcmRpbmcgc2l6ZTByZXF1aXJlbWVudC4AOQFUaGlzIGNhbGwgbXVzdCBiZSBkaXNwYXRjaGVkIHdpdGggYSBgU2VsZkluY2x1ZGVgIG9yaWdpbiwgYXV0aGVudGljYXRlZCBieSB0aGUhAWBBc01lbWJlcmAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBUaGUgcmluZ3MgbXVzdCBiZSBpbiBhcHBlbmQtb25seSBtb2RlLgBNAVRoZSBgY2FsbF92YWxpZF9hdGAgcGFyYW1ldGVyIGRpY3RhdGVzIHRoZSB0aW1lIHdpbmRvdyBpbiB3aGljaCB0aGlzIHRyYW5zYWN0aW9uIGlzTQF2YWxpZCBhbmQgcmVwcmVzZW50cyB0aGUgdGltZXN0YW1wIChpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoKSB3aGVuIHRoaXMgY2FsbDhiZWNvbWVzIHZhbGlkLlRidWlsZF9yaW5nX2F1dGhvcml6ZWQYAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX2V4cG9uZW50VQUBMFJpbmdFeHBvbmVudAABIHJldmlzaW9u5AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAEodG9faW5jbHVkZTgBDHUzMgABNGRpc2NyaW1pbmF0b3I4AQx1MzIAZCzYQnVpbGQgYSByaW5nIHJvb3QgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uANhTdWJtaXR0ZWQgYnkgdGhlIE9DVyB3aXRoIGEgYHRvX2luY2x1ZGVgIHNuYXBzaG90IGZyb20xAVtgUGFsbGV0OjpzaG91bGRfYnVpbGRfcmluZ2BdLiBMZWZ0b3ZlcnMgZnJvbSBsYXRlciBvbmJvYXJkaW5nIGFyZSBwaWNrZWQgdXAZAW9uIHRoZSBuZXh0IE9DVyB0aWNrLCBvciBieSB0aGUgbWVtYmVyIHZpYSBbYFNlbGY6OnNlbGZfaW5jbHVkZWBdIHdoZW6AY29ob3J0IGdhdGluZyBzdGFsbHMgb25ib2FyZGluZy4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuaG9uYm9hcmRfbWVtYmVyc19hdXRob3JpemVkFAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEQaGVhZDgBJFBhZ2VJbmRleAABMGZpcnN0X21lbWJlcmUFAUxPcHRpb248TWVtYmVyT2Y8VD4+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBlIBEBT25ib2FyZCBtZW1iZXJzIGZyb20gdGhlIG9uYm9hcmRpbmcgcXVldWUgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5wbWVyZ2VfcXVldWVfcGFnZXNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEwaW5pdGlhbF9oZWFkOAEkUGFnZUluZGV4AAEgbmV3X2hlYWQ4ASRQYWdlSW5kZXgAZgwNAU1lcmdlIHRoZSB0b3AgdHdvIG9uYm9hcmRpbmcgcXVldWUgcGFnZXMgZm9yIGEgc3BlY2lmaWMgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLoByZW1vdmVfc3VzcGVuZGVkX2tleXNfYXV0aG9yaXplZBABKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9u5AFUT3B0aW9uPFJldmlzaW9uSW5kZXg+AAE0ZGlzY3JpbWluYXRvcjgBDHUzMgBnIOxSZW1vdmUgc3VzcGVuZGVkIGtleXMgZnJvbSBhIHNwZWNpZmljIHJpbmcgaW4gYSBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLmxkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGgMyERlbGV0ZSBhIHBhZ2UgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AZW5xdWV1ZV9yaW5nX2RlbGV0aW9uX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaRzsRW5xdWV1ZSBhIHJpbmcgZm9yIGRlbGV0aW9uIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AIQFBcmNoaXZlcyB0aGUgcmluZyByb290LCBub3RpZmllcyBzdWJzY3JpYmVycywgcmVtb3ZlcyByaW5nIG1ldGFkYXRhLCBhbmT4ZW5xdWV1ZXMgcmluZyBwYWdlcyBpbnRvIGBSaW5nRGVsZXRpb25RdWV1ZWAgZm9yIHByb2Nlc3NpbmcgYnl4YGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZGAuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZGVsZXRlX29uYm9hcmRpbmdfcXVldWVfcGFnZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGoc/ERlbGV0ZSBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIGBNZW1iZXJzYCBlbnRyaWVzIGZvciB0aGUgbWVtYmVycyBpbiB0aGUgcGFnZSwgdGhlbiByZW1vdmVzJQF0aGUgcGFnZSBpdHNlbGYuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MgYW5kIHJpbmcgcGFnZXMgaGF2ZSBiZWVuOGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZmluYWxpemVfY29sbGVjdGlvbl9kZWxldGlvbl9hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAaxx0RmluYWxpemUgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCByZW1haW5pbmcgcGVyLWNvbGxlY3Rpb24gc3RvcmFnZSBhbmQgdGhlIG93bmVyJ3MgaWRlbnRpZmllchkBcmVmZXJlbmNlLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzLCByaW5nIHBhZ2VzLCBhbmQgb25ib2FyZGluZ5BxdWV1ZSBwYWdlcyBoYXZlIGJlZW4gZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLohyZW1vdmVfb3JwaGFuZWRfbWVtYmVyc19hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAbiT0UmVtb3ZlIG9ycGhhbmVkIGBNZW1iZXJzYCBlbnRyaWVzIGZvciBhIHN1c3BlbmRlZCBjb2xsZWN0aW9uLgBVAVN1c3BlbmRlZCBtZW1iZXJzIGNhbiBsZWF2ZSBlbnRyaWVzIGluIGBNZW1iZXJzYCB0aGF0IG91dGxpdmUgdGhlaXIgcmluZywgc28gYmVmb3JlIGH8Y29sbGVjdGlvbiBjYW4gYmUgZmluYWxpemVkIHRoZXNlIG11c3QgYmUgZHJhaW5lZC4gRHJhaW5zIHVwIHRvOQFgT1JQSEFORURfTUVNQkVSU19SRU1PVkFMX0xJTUlUYCBlbnRyaWVzIGZvciBgaWRlbnRpZmllcmAuIFRoZSBvZmZjaGFpbiB3b3JrZXI9AXJlc3VibWl0cyB1bnRpbCB0aGUgcHJlZml4IGlzIGVtcHR5LCBhZnRlciB3aGljaCB0aGUgY29sbGVjdGlvbiBkZWxldGlvbiBjYW4gYmUoZmluYWxpemVkLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuaG1hcmtfcmluZ19zdGFsZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGwY8E1hcmsgYSByaW5nIGFzIHN0YWxlIHNvIHRoZSBvZmZjaGFpbiB3b3JrZXIgd2lsbCByZWJ1aWxkIGl0LgAdAUFueW9uZSBjYW4gc3VibWl0IHRoaXMgdHJhbnNhY3Rpb24gaWYgdGhlIHJpbmcgaGFzIG1lbWJlcnMgdGhhdCBhcmUgbm90JQF5ZXQgaW5jbHVkZWQgaW4gdGhlIHJvb3QgKGB0b3RhbCA+IGluY2x1ZGVkYCkgYW5kIHRoZSByaW5nIGlzIG5vdCBhbHJlYWR5JQFtYXJrZWQgc3RhbGUuIFRoaXMgaXMgYSByZWNvdmVyeSBtZWNoYW5pc20gaW4gY2FzZSB0aGUgYFN0YWxlUmluZ3NgIGVudHJ5bHdhcyBsb3N0IG9yIG5ldmVyIGluc2VydGVkLnRjbGVhbl91cF9vbGRfcm9vdHNfYXV0aG9yaXplZAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABFGxpbWl0OAEMdTMyAG0ggENsZWFuIHVwIGV4cGlyZWQgb2xkIHJpbmcgcm9vdHMuABEBUmVtb3ZlcyB1cCB0byBgbGltaXRgIG9sZCByaW5nIHJvb3RzIGZvciB0aGUgZ2l2ZW4gcmluZyBpbiB0aGUgZ2l2ZW4sY29sbGVjdGlvbi4A0FRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBgTG9jYWxgIG9yIGBJbkJsb2NrYC4A9FRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQUEGE9wdGlvbgQEVAEIAQgQTm9uZQAAABBTb21lBAAIAAABAABpBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0EENhbGwEBFQAAXgUc3BsaXQEAShzcGxpdF9pbnRvbQUBfQFCb3VuZGVkVmVjPAooRGVub21pbmF0aW9uLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksIFQ6OgpNYXhTcGxpdE91dHB1dHMsPgAAUIRTcGxpdCBhIGNvaW4gaW50byBtdWx0aXBsZSBjb2lucy4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuANRUaGUgY2FsbCBpcyBmcmVlIGFuZCBhZ2VzIHRoZSByZXN1bHRpbmcgY29pbnMgYnkgb25lLgBJAVRoZSBgc3BsaXRfaW50b2AgcGFyYW1ldGVyIGNvbnRhaW5zIGEgdmVjdG9yIG9mIHBhaXJzLCBlYWNoIHBhaXIgY29udGFpbmluZyBhIGNvaW5VAXZhbHVlIGFuZCBhIGxpc3Qgb2YgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuIEZvciBlYWNoIHBhaXIsIGEgbmV3IGNvaW4gd2l0aCB0aGUgZ2l2ZW7EdmFsdWUgaXMgY3JlYXRlZCBmb3IgZWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IGlkLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKeAqIFRoZSBjb2luJ3MgYWdlIG11c3QgYmUgbGVzcyB0aGFuIFtDb25maWc6Ok1heGltdW1BZ2VdLlUBKiBUaGUgZGVub21pbmF0aW9uIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uLQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW4gY29pbi4JASogVGhlIG51bWJlciBvZiBvdXRwdXRzIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhTcGxpdE91dHB1dHNdLiUBKiBUaGUgYWdlIG9mIHRoZSBuZXcgY29pbnMgaXMgc2V0IHRvIHRoZSBhZ2Ugb2YgdGhlIG9yaWdpbiBjb2luIHBsdXMgb25lLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLiB0cmFuc2ZlcgQBCHRvBAEwVDo6QWNjb3VudElkAAEsjFRyYW5zZmVyIGEgY29pbiB0byBhbm90aGVyIGFjY291bnQuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgDQVGhlIGNhbGwgaXMgZnJlZSBhbmQgYWdlcyB0aGUgcmVzdWx0aW5nIGNvaW4gYnkgb25lLgBYVmFsaWRpdHkgcmVxdWlyZW1lbnRzOj0BKGFuIGludmFsaWQgdHJhbnNhY3Rpb24gd29uJ3QgYmUgaW5jbHVkZWQgaW4gYSBibG9jaywgdGhlIGNvaW4gaXMgbm90IGNvbnN1bWVkKdwqIFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4u4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uXGxvYWRfcmVjeWNsZXJfd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AAJIaExvYWQgY29pbiBpbnRvIGEgcmVjeWNsZXIuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbtRleHRlbnNpb24gW2BBc0NvaW5hZ2VgXShjcmF0ZTo6ZXh0ZW5zaW9uOjpBc0NvaW5hZ2UpLgBEVGhlIGNhbGwgaXMgZnJlZS4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AWFZhbGlkaXR5IHJlcXVpcmVtZW50czo9AShhbiBpbnZhbGlkIHRyYW5zYWN0aW9uIHdvbid0IGJlIGluY2x1ZGVkIGluIGEgYmxvY2ssIHRoZSBjb2luIGlzIG5vdCBjb25zdW1lZCkBASogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci7QKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgKGkuZS4gd2VsbCBmb3JtZWQpLlEBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgY29pbidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLgUBKiBUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBmb3IgdGhlIGNvaW4ncyB2YWx1ZSBtdXN0IGFscmVhZHkgZXhpc3RZASogT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgbG9hZGVkIGtleSdzIGRlcG9zaXQuhGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMHByZXNlcnZhdGlvbn0FAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgADhJBMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlci4AjFRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBvcmlnaW4uAIBUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkLgBFAVRoZSBgcHJlc2VydmF0aW9uYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyB0aGUgYXNzZXQgdHJhbnNmZXIgc2hvdWxkIHByZXNlcnZlIHRoZURzaWduZXIncyBhY2NvdW50LgBRAVRoZSBgaW5zdGFuY2VfaWRgIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hpY2ggY29pbmFnZSBpbnN0YW5jZSB0byBsb2FkIGludG8sIGFuZCBoZW5jZZh3aGljaCB1bmRlcmx5aW5nIGFzc2V0IGlzIHRyYW5zZmVycmVkLgBBAVRoZSBgdmFsdWVgIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGRlbm9taW5hdGlvbiB0byBiZSBsb2FkZWQgaW50byB0aGUgcmVjeWNsZXIuPQFUaGUgZXF1aXZhbGVudCBhbW91bnQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgc2lnbmVyIHRvTHRoZSBwYWxsZXQgYWNjb3VudC4AWQFUaGUgYG1lbWJlcl9rZXlgIHBhcmFtZXRlciBpcyB0aGUgbWVtYmVyIGtleSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVjeWNsZXIsIGFuZCB3aG9zZahhbGlhcyBpcyB1c2VkIHRvIHVubG9hZCBmcm9tIHRoZSByZWN5Y2xlci4AVQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgcGFyYW1ldGVyIGlzIHRoZSBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlNGBtZW1iZXJfa2V5YC4ANFJlcXVpcmVtZW50czrcKiBUaGUgYGluc3RhbmNlX2lkYCBtdXN0IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGluc3RhbmNlLgEBKiBUaGUgYG1lbWJlcl9rZXlgIG11c3Qgbm90IGFscmVhZHkgYmUgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLtAqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCAoaS5lLiB3ZWxsIGZvcm1lZCkuQQEqIFRoZSBgdmFsdWVgIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uVQEqIFRoZSBzaWduZXIgbXVzdCBoYXZlIGVub3VnaCBiYWxhbmNlIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IHRvIGNvdmVyIHRoZSBlcXVpdmFsZW50kCAgYW1vdW50IGZvciB0aGUgZ2l2ZW4gZGVub21pbmF0aW9uLlkBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU0YG1lbWJlcl9rZXlgLlkBKiBPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSwgdGhlIHBvdCdzIGZyZWUgYmFsYW5jZSBtdXN0IGNvdmVyIHRoZSBsb2FkZWQga2V5J3MgZGVwb3NpdC6gbG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABMHByZXNlcnZhdGlvbn0FAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAThTaWduYXR1cmVPZjxUPgAPUC0BTG9hZCBleHRlcm5hbCBhc3NldCBpbnRvIGEgcmVjeWNsZXIgKGluZmFsbGlibGUsIHZhbGlkYXRlZCB1bnBhaWQgdmFyaWFudCkuAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGV0dHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnSNAVtgQXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZGBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZUluZm86OkluZmFsbGlibGVVbnBhaWRTaWduZWQpLgDcVGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YWxpZGF0aW9uIHBoYXNlIG11c3QgZW5zdXJlOswtIFRoZSBgaW5zdGFuY2VfaWRgIHJlZmVycyB0byBhbiBleGlzdGluZyBpbnN0YW5jZS4VAS0gVGhlIGBtZW1iZXJfa2V5YCBpcyB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZCBpbiBhbm90aGVyIHJlY3ljbGVyLkUBLSBUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIHNpZ25lcidzIGFjY291bnQgaWQgYnkgdGhlPCAgYG1lbWJlcl9rZXlgLi0BLSBUaGUgYHZhbHVlYCBpcyB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kQQEgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0sIGFuZCBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8gYW4gYXNzZXQgYW1vdW50LlkBLSBUaGUgc2lnbmVyIGhhcyBlbm91Z2ggYmFsYW5jZSBvZiB0aGUgdW5kZXJseWluZyBhc3NldCB0byBjb3ZlciB0aGUgZXF1aXZhbGVudCBhbW91bnTkICBmb3IgdGhlIGdpdmVuIGRlbm9taW5hdGlvbiAocmVzcGVjdGluZyBgcHJlc2VydmF0aW9uYCkurC0gVGhlIG5vbmNlIGlzIHZhbGlkIGZvciByZXBsYXkgcHJvdGVjdGlvbi4dAS0gVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIGBpbnN0YW5jZV9pZGAgYW5kIGB2YWx1ZWAgYWxyZWFkeSBleGlzdHMuSQEtIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIGNvdmVycyB0aGUgbG9hZGVkIGtleSdzIGRlcG9zaXQuAERUaGUgY2FsbCBpcyBmcmVlLrhsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkX2JhdGNoCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUaXRlbXOBBQHUQm91bmRlZFZlYzxVbnBhaWRMb2FkSW5wdXQ8VD4sIFQ6Ok1heEJhdGNoVW5wYWlkTG9hZD4AEFgZAUJhdGNoZWQgdmFyaWFudCBvZiBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZXR0cmFuc2FjdGlvbiBleHRlbnNpb24gdmFyaWFudI0BW2BBc0NvaW5hZ2VJbmZvOjpJbmZhbGxpYmxlVW5wYWlkU2lnbmVkYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlSW5mbzo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZCkuMQFUaGUgZXh0ZW5zaW9uIHZhbGlkYXRlcyBlYWNoIGlubmVyIGl0ZW0gYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2l0aGluLWJhdGNoVQFtZW1iZXIta2V5IHVuaXF1ZW5lc3MgYW5kIHRoYXQgdGhlIHNpZ25lcidzIGJhbGFuY2UgY292ZXJzIHRoZSBzdW0gb2YgYWxsIGlubmVyIGFzc2V0IGFtb3VudHMuAEEBVGhpcyBjYWxsIGRpc3BhdGNoZXMgZWFjaCBpbm5lciBsb2FkIGJ5IHJlLXJ1bm5pbmcgdGhlIHNhbWUgY2hlY2tzIHRoZSBleHRlbnNpb25RAWp1c3QgcGVyZm9ybWVkIChzZWUgW2BSZWN5Y2xlck1hbmFnZXI6OmxvYWRgXSkuIFRoZSByZWR1bmRhbmN5IG1hdGNoZXMgdGhlIGRlZmVuc2l2ZU0BcGF0dGVybiB1c2VkIGJ5IFtgU2VsZjo6bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZGBdOiBhIGRpc3BhdGNoIHBhdGhFAXRoYXQgZmFpbHMgYW55IG9mIHRoZXNlIGNoZWNrcyBpcyBhIGxvZ2ljIGJ1ZyBpbiB0aGUgZXh0ZW5zaW9uLCBub3QgYSB1c2VyIGVycm9yLgBVAVRoZSBpbnN0YW5jZSBpcyBmaXhlZCBmb3IgdGhlIHdob2xlIGJhdGNoIHJhdGhlciB0aGFuIHBlciBpdGVtLCBiZWNhdXNlIHRoZSBleHRlbnNpb25VAWNoZWNrcyB0aGUgc2lnbmVyJ3MgYmFsYW5jZSBvbmNlIGFnYWluc3QgdGhlIHN1bW1lZCBjb3N0IG9mIGV2ZXJ5IGl0ZW0sIHdoaWNoIGlzIG9ubHmcbWVhbmluZ2Z1bCB3aXRoaW4gb25lIHVuZGVybHlpbmcgYXNzZXQuAFEBT24gYSBzcG9uc29yZWQgaW5zdGFuY2UsIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgbXVzdCBjb3ZlciB0aGUgZGVwb3NpdHMgb2YgZXZlcnkga2V5sGxvYWRlZCBoZXJlLCB0aGUgYmF0Y2ggYmVpbmcgY2hhcmdlZCBhcyBvbmUuAERUaGUgY2FsbCBpcyBmcmVlLmR1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEcYWxpYXNlc40FAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQABGiUVW5sb2FkIGEgcmVjeWNsZXIgdG8gbWludCBhIG5ldyBjb2luLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OlVubG9hZFRva2VuXSB3aXRoIGBmZWU6IFVubG9hZEZlZTo6UHJlcGFpZGAsIHdoaWNoIGNhbiBiZWEBb2J0YWluZWQgZnJvbSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKSB1c2luZ1hgQXNVbmxvYWRUb2tlblBlb3BsZWAs7GBBc1VubG9hZFRva2VuTGl0ZVBlb3BsZWAsIG9yIGBBc1VubG9hZFRva2VuUGFpZGAgdmFyaWFudHMuAEkBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHByb3ZlIHRoZXkgb3duIG9uZSBvciBtb3JlIGNvaW5zIGluIGEgcmVjeWNsZXIgcmluZ10Bd2l0aG91dCByZXZlYWxpbmcgd2hpY2ggc3BlY2lmaWMgY29pbnMgdGhleSBvd24uIEl0IGNvbnNvbGlkYXRlcyBvbmUgb3IgbXVsdGlwbGUgaW5wdXRzaGludG8gYSBzaW5nbGUgb3V0cHV0IGNvaW4uACxQYXJhbWV0ZXJzOkUBKiBgYWxpYXNlc2A6IHRoZSBsaXN0IG9mIGFsaWFzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWVtYmVyIGtleXMgaW5jbHVkZWQgaW4gdGhlFQEgIHJlY3ljbGVyLiBUaGUgcHJvb2ZzIGZvciB0aGVzZSBhbGlhc2VzIGFyZSBjb250YWluZWQgaW4gdGhlIG9yaWdpbi41ASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLsQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgbmV3IGNvaW4uADRSZXF1aXJlbWVudHM6KQEqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLi0BKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi4hASogVGhlIGBhbGlhc2VzYCBwcm92aWRlZCBtdXN0IG1hdGNoIHRoZSBhbGlhc2VzIGRlcml2ZWQgZnJvbSB0aGUgcHJvb2ZzLhUBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCBmcm9tIHRoaXMgcmVjeWNsZXIuvCogVGhlIG51bWJlciBvZiBhbGlhc2VzIG11c3QgYmUgYSBwb3dlciBvZiB0d28uNQEqIFRoZSByZXN1bHRpbmcgY29uc29saWRhdGVkIHZhbHVlIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLox1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldBwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABHGFsaWFzZXONBQGYQm91bmRlZFZlYzxBbGlhcywgVDo6TWF4Q29uc29saWRhdGlvbj4AARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABCHRvBAEwVDo6QWNjb3VudElkAAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ABXTwVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAF0BV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSAodmlhIGZyZWUgb3IgcGFpZCB1bmxvYWQgdG9rZW4pLCBubyBmZWUgaXMgZGVkdWN0ZWQuUQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHVubG9hZGVkIGFzc2V0czpZAXRoZSBhc3NldCBpcyBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5LCBzbyB0aGUgYW1vdW50IGRlZHVjdGVkIGRlcGVuZHMgb24gdGhljG1hcmtldCBhbmQgaXMgYm91bmRlZCBieSBgbWF4X2ZlZWAuADEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHdpdGhkcmF3IHRoZWlyIGNvaW5zIGJhY2sgaW50byB0aGUgdW5kZXJseWluZ4Bhc3NldCAoZS5nLiwgYW4gZXh0ZXJuYWwgYXNzZXQpLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvwqIGBfcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzX3Byb29mcy7kKiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHVuZGVybHlpbmcgYXNzZXQuXQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gYW1vdW50IG9mIHRoZSB1bmxvYWRlZCBhc3NldCB0aGUgZmVlIG1heSBjb25zdW1lLiBXaGF0ZXZlciB0aGVhASAgZmVlIGRvZXMgbm90IGNvbnN1bWUgZ29lcyB0byBgdG9gLiBJdCBpcyBpZ25vcmVkIGZvciBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgd2hpY2ggdGFrZXNsICBubyBmZWUgb3V0IG9mIHRoZSBvdXRwdXQuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uWQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIChleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgd2hlbiBgZmVlYBUBICBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgd2hpY2ggd2FzIHByZS1tYXJrZWQgaW4gdGhlIGV4dGVuc2lvbikurHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBxBAG4PENyeXB0b09mPFQ+IGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAGcCkBUGF5IHRoZSBmZWUgdG8gcmVnaXN0ZXIgYSBtZW1iZXIga2V5IGZvciBhIHBhaWQgdW5sb2FkIHRva2VuIHVzaW5nIGEgY29pbi4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAF0BVGhlIGNvaW4gaXMgY29uc3VtZWQuIFRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgY29pbidzIHZhbHVlOiB0aGUgYXNzZXQgaXMgY29udmVydGVkPQFpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3ksIHdoaWNoIGlzIHRyYW5zZmVycmVkIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXS4gVGhlpHJlbWFpbmluZyB2YWx1ZSBvZiB0aGUgY29pbiBpcyBkZXN0cm95ZWQuANRJZiB0aGUgY2FsbCBmYWlscywgdGhlIG9yaWdpbiBjb2luIGlzIHN0aWxsIGNvbnN1bWVkLgBdAVRvIHByb3RlY3QgdGhlIHVzZXIgYWdhaW5zdCB2YXJ5aW5nIGZlZXMsIGlmIHRoZSBjb2luJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBmZWUsIHRoZehjYWxsIGlzIGludmFsaWQgKGFuIGludmFsaWQgY2FsbCBuZXZlciBnb2VzIGludG8gYSBibG9jaykuAGEBVGhpcyBpcyB0aGUgb25lIGFzc2V0LXBheWluZyBjYWxsIHdpdGggbm8gY2FsbGVyLXNldHRhYmxlIGJvdW5kIG9uIHRoZSBmZWUsIGFuZCBpdCBuZWVkc2EBbm9uZTogdGhlIGNvaW4gaXMgY29uc3VtZWQgd2hvbGUgZWl0aGVyIHdheSwgc28gaXRzIHZhbHVlIGlzIHRoZSBib3VuZCwgYW5kIHdoYXRldmVyIHRoZV0BY29udmVyc2lvbiBkb2VzIG5vdCB0YWtlIGlzIGRlc3Ryb3llZCByYXRoZXIgdGhhbiByZXR1cm5lZC4gQSBjYWxsZXIgd2hvIHdhbnRzIHRvIGJvdW5kqHdoYXQgdGhlIGZlZSBjb3N0cyBwYXlzIGZvciB0aGUgdG9rZW4gd2l0aCEBW2BTZWxmOjpwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9leHRlcm5hbF9hc3NldGBdIGluc3RlYWQuAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM64CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0u3CogVGhlIGRlbm9taW5hdGlvbiBtdXN0IGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGZlZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQutHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX25hdGl2ZQgBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAc8XQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgdGhlIG5hdGl2ZSBjdXJyZW5jeS4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAEUBVGhpcyBhZGRzIHRoZSBgbWVtYmVyX2tleWAgdG8gYSAicGFpZCB1bmxvYWQgdG9rZW4gcmluZyIuIEJlaW5nIHBhcnQgb2YgdGhpcyByaW5nIQFhbGxvd3MgdGhlIHVzZXIgdG8gbGF0ZXIgZ2VuZXJhdGUgYW4gYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4ADQFUaGUgZmVlIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIGNhbGxlciB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM62CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLtRwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9leHRlcm5hbF9hc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcHEEAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAEcbWF4X2ZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACHhFAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgdW5kZXJseWluZ3Bhc3NldCBvZiB0aGUgZ2l2ZW4gaW5zdGFuY2UuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgBFAVRoaXMgYWRkcyB0aGUgYG1lbWJlcl9rZXlgIHRvIGEgInBhaWQgdW5sb2FkIHRva2VuIHJpbmciLiBCZWluZyBwYXJ0IG9mIHRoaXMgcmluZyEBYWxsb3dzIHRoZSB1c2VyIHRvIGxhdGVyIGdlbmVyYXRlIGFuIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAFEBVGhlIGZlZSBhcmUgY2hhcmdlZCBpbiB0aGUgdW5kZXJseWluZyBhc3NldCBvZiB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLCBhbmQgY29udmVydGVkCQFpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGZlZSBkZXN0aW5hdGlvbi78YG1heF9mZWVgIGJvdW5kcyBob3cgbXVjaCBvZiB0aGUgYXNzZXQgdGhlIGNvbnZlcnNpb24gbWF5IHRha2UuAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuAFEBVGhlIGBpbnN0YW5jZV9pZGAgb25seSBzZWxlY3RzIHdoaWNoIGluc3RhbmNlJ3MgdW5kZXJseWluZyBhc3NldCB0aGUgZmVlIGlzIHBhaWQgaW4uTQFUaGUgcmVzdWx0aW5nIHRva2VuIGlzIG5vdCBib3VuZCB0byB0aGF0IGluc3RhbmNlIGFuZCBjYW4gYmUgY29uc3VtZWQgdG8gdW5sb2FkIGFueRkBaW5zdGFuY2UncyByZWN5Y2xlciwgd2hpY2ggaXMgd2h5IHRoZSBmZWUgaXMgdGhlIHNhbWUgZm9yIGFsbCBvZiB0aGVtLgBRAVVubGlrZSB0aGUgc2lnbmVkIHVubG9hZCBjYWxscywgdGhpcyBvbmUgaXMgbm90IHByZS1jaGVja2VkIGFnYWluc3QgYG1heF9mZWVgIGR1cmluZ10BdHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBhbmQgZG9lcyBub3QgcmVmdW5kIHRoZSB3ZWlnaHQgaXQgZGlkIG5vdCB1c2U6IGEgY29udmVyc2lvbiB0aGF0VQFtb3ZlZCBwYXN0IGBtYXhfZmVlYCBiZXR3ZWVuIHRoZSBjYWxsZXIgcXVvdGluZyBpdCBhbmQgdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGluY2x1ZGVkTQFmYWlscyB0aGUgZGlzcGF0Y2ggYXQgdGhlIGZ1bGwgYmVuY2htYXJrZWQgd2VpZ2h0LiBDYWxsZXJzIHNob3VsZCBsZWF2ZSBoZWFkcm9vbSBpbihgbWF4X2ZlZWAuADRSZXF1aXJlbWVudHM63CogVGhlIGBpbnN0YW5jZV9pZGAgbXVzdCByZWZlciB0byBhbiBleGlzdGluZyBpbnN0YW5jZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQupCogYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIGNvbnZlcnRlZCBmZWUu0HVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X2FuZF9sb2FkZWRfY29pbnMkASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VzjQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBsb2FkZWRfY29pbnORBQHsQm91bmRlZFZlYzwoRGVub21pbmF0aW9uLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFNwbGl0T3V0cHV0cz4AARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAJsEUBVW5sb2FkIGEgcmVjeWNsZXIgaW50byBhIG1peGVkIG91dHB1dCBvZiBleHRlcm5hbCBhc3NldCBhbmQgZnJlc2hseSBsb2FkZWQgY29pbnMuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9u1GV4dGVuc2lvbiBbYEFzQ29pbmFnZWBdKGNyYXRlOjpleHRlbnNpb246OkFzQ29pbmFnZSkuAFkBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYSB1c2VyIHRvIG9mZmJvYXJkIHBhcnQgb2YgdGhlIHVubG9hZGVkIHZhbHVlIGludG8gdGhlIHVuZGVybHlpbmcBAWFzc2V0IHdoaWxlIHJlbWludGluZyB0aGUgcmVzdCBhcyBmcmVzaGx5IGxvYWRlZCByZWN5Y2xlciBjb2lucy4ARQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBpcyB0cmFuc2ZlcnJlZCBhcy1pcy41AVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgc3BlY2lmaWVkOQFgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCwgc28gdGhlIHJlY2lwaWVudCByZWNlaXZlcyB0aGUgcmVtYWluZGVyLiBUaGUgYXNzZXQgaXNRAWNvbnZlcnRlZCBpbnRvIHRoZSBuYXRpdmUgY3VycmVuY3kgdG8gcGF5IHRoZSBmZWUsIHNvIHRoZSBhbW91bnQgZGVkdWN0ZWQgZGVwZW5kcyBvbpx0aGUgbWFya2V0IGFuZCBpcyBib3VuZGVkIGJ5IGBtYXhfZmVlYC4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLjUBKiBgaW5zdGFuY2VfaWRgLCBgdmFsdWVgIGFuZCBgaW5kZXhgOiBpZGVudGlmaWVzIHRoZSByZWN5Y2xlciBiZWluZyB1bmxvYWRlZC74KiBgcmV2aXNpb25gOiB0aGUgcmVjeWNsZXIgcmV2aXNpb24gdXNlZCBmb3IgdGhlIGFsaWFzIHByb29mcy78KiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIGV4dGVybmFsIGFzc2V0IHBvcnRpb24uXQEqIGBleHRlcm5hbF9hc3NldF9hbW91bnRgOiB0aGUgZ3Jvc3MgYXNzZXQgcG9ydGlvbiB0byBvZmZib2FyZCBmcm9tIHRoZSB1bmxvYWRlZCB2YWx1ZS5dASogYGxvYWRlZF9jb2luc2A6IHRoZSBmcmVzaGx5IGxvYWRlZCByZWN5Y2xlciBjb2lucyB0byBtaW50IGZyb20gdGhlIHJlbWFpbmluZyB1bmxvYWRlZCAgIHZhbHVlLmEBKiBgbWF4X2ZlZWA6IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCB0aGUgZmVlIG1heSBjb25zdW1lLiBXaGF0ZXZlclkBICB0aGUgZmVlIGRvZXMgbm90IGNvbnN1bWUgZ29lcyB0byBgdG9gLiBJdCBpcyBpZ25vcmVkIGZvciBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgd2hpY2iEICB0YWtlcyBubyBmZWUgb3V0IG9mIHRoZSBvdXRwdXQuAEUBVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgYWx3YXlzIGVxdWFsIHRoZSBhc3NldCBwb3J0aW9uIHBsdXMgdGhlIGxvYWRlZC1jb2luSQFwb3J0aW9uLiBJbiBgRnJvbU91dHB1dGAgbW9kZSwgdGhlIGFzc2V0IHBvcnRpb24gbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gY292ZXIgdGhlLHVubG9hZCBmZWUuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS4tASogVGhlIHJlY3ljbGVyIGlkZW50aWZpZWQgYnkgYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YCBtdXN0IGV4aXN0LlEBKiBUaGUgYWxpYXMgcHJvb2ZzIHByb3ZpZGVkIGluIHRoZSBvcmlnaW4gbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlY3ljbGVyJ3MgcmV2aXNpb24uWQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIChleGNlcHQgZm9yIHRoZSBmaXJzdCBvbmUgd2hlbiBgZmVlYBUBICBpcyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgd2hpY2ggd2FzIHByZS1tYXJrZWQgaW4gdGhlIGV4dGVuc2lvbikuVQEqIGBsb2FkZWRfY29pbnNgIG11c3Qgbm90IGJlIGVtcHR5LCBhbmQgYWxsIGxvYWRlZC1jb2luIG1lbWJlciBrZXlzIG11c3QgYmUgdmFsaWQgYW5kJCAgdW51c2VkLmEBKiBUaGUgdG90YWwgdW5sb2FkZWQgdmFsdWUgbXVzdCBlcXVhbCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBwbHVzIHRoZSB0b3RhbCBhc3NldCB2YWx1ZVAgIG9mIGBsb2FkZWRfY29pbnNgLkUBKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgZXh0ZXJuYWxfYXNzZXRfYW1vdW50YCBtdXN0IGNvdmVyIHRoZSBmZWUuQQEqIE9uIGEgc3BvbnNvcmVkIGluc3RhbmNlLCB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIG11c3QgY292ZXIgdGhlIGRlcG9zaXRzIG9mIHRoZS0BICBgbG9hZGVkX2NvaW5zYCBrZXlzLCB3aXRob3V0IGNyZWRpdGluZyB0aGUgZGVwb3NpdHMgdGhpcyB1bmxvYWQgcmVsZWFzZXMuxHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMYASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARRpbnB1dJ0FAaBVbmxvYWRSZWN5Y2xlcklucHV0PFQ6Ok1heENvbnNvbGlkYXRpb24+AAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeaEFASxGZWVDdXJyZW5jeQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAsYMQFVbmxvYWQgYSByZWN5Y2xlciB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAFUBQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzXXRmb3IgdGhlIHNpbmdsZS1yZWN5Y2xlciBjYXNlLgBZAVNlZSBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNdIGZvciBmdWxsIGRvY3VtZW50YXRpb24uyHVubG9hZF9yZWN5Y2xlcnNfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEYaW5wdXRzpQUBKQFCb3VuZGVkVmVjPFVubG9hZFJlY3ljbGVySW5wdXQ8VDo6TWF4Q29uc29saWRhdGlvbj4sIFQ6OgpNYXhDb25zb2xpZGF0aW9uPgABMGFsaWFzX3Byb29mcxkEAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3mhBQEsRmVlQ3VycmVuY3kAARxtYXhfZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAMhFEBVW5sb2FkIG11bHRpcGxlIHJlY3ljbGVycyB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAEEBVGhpcyBpcyBhIHNpZ25lZC1vcmlnaW4gdmVyc2lvbiBvZiBbYFNlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0YF0ZAXdoZXJlIHRoZSBmZWUgaXMgcGFpZCBleHBsaWNpdGx5IGJ5IHRoZSBzaWduZXIgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGXwcmluZy1hdXRoZW50aWNhdGVkIHVubG9hZCB0b2tlbiwgYW5kIGZvciBtdWx0aXBsZSByZWN5Y2xlcnMuADEBVGhlIGZlZSBjaGFyZ2VkIGlzIG9uZSB1bmxvYWQgdG9rZW4gZmVlIHBlciByZWN5Y2xlciAoaS5lLiwgYGlucHV0cy5sZW4oKWApLgBNAUV2ZXJ5IGlucHV0IHVubG9hZHMgZnJvbSBgaW5zdGFuY2VfaWRgOiBvbmUgY2FsbCBjYW5ub3Qgc3BhbiBpbnN0YW5jZXMsIGJlY2F1c2UgdGhlTQF1bmxvYWRlZCB2YWx1ZSBpcyBzdW1tZWQgYW5kIHBhaWQgb3V0IGFzIGEgc2luZ2xlIHRyYW5zZmVyIG9mIG9uZSB1bmRlcmx5aW5nIGFzc2V0LgAsUGFyYW1ldGVyczrcKiBgaW5zdGFuY2VfaWRgOiB0aGUgaW5zdGFuY2UgZXZlcnkgaW5wdXQgdW5sb2FkcyBmcm9tLlEBKiBgaW5wdXRzYDogQSBsaXN0IG9mIGlucHV0cywgc3BlY2lmeWluZyB0aGUgcmVjeWNsZXIgYW5kIGFsaWFzZXMgdG8gdW5sb2FkLiBBdCBtb3N0IQEgIFtgQ29uZmlnOjpNYXhDb25zb2xpZGF0aW9uYF0gaW5wdXRzLCBvbmUgYWxpYXMgb2Ygb25lIGlucHV0IHBlciBwcm9vZi5VASogYGFsaWFzX3Byb29mc2A6IHRoZSBwcm9vZnMgZm9yIGFsbCBhbGlhc2VzIGFjcm9zcyBhbGwgaW5wdXRzLCBzaWduZWQgb3ZlciBhIG1lc3NhZ2VVASAgdGhhdCBpbmNsdWRlcyB0aGUgc2lnbmVyLiBUaGUgcHJvb2ZzIG11c3QgY29ycmVzcG9uZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGFsaWFzZXMgaW4sICBgaW5wdXRzYC64KiBgdG9gOiB0aGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIGFzc2V0LjkBKiBgZmVlX2N1cnJlbmN5YDogd2hldGhlciB0byBwYXkgdGhlIGZlZSBpbiBuYXRpdmUgY3VycmVuY3kgb3IgZXh0ZXJuYWwgYXNzZXQuYQEqIGBtYXhfZmVlYDogdGhlIG1vc3QgdGhlIGZlZSBtYXkgY29zdCB0aGUgc2lnbmVyLCBpbiBgZmVlX2N1cnJlbmN5YDogdGhlIG5hdGl2ZSBmZWUgZm9yVQEgIFtGZWVDdXJyZW5jeTo6TmF0aXZlXSwgYW5kIHRoZSBhbW91bnQgb2YgdGhlIHNpZ25lcidzIGFzc2V0IHRoZSBjb252ZXJzaW9uIGludG8gdGhl3CAgbmF0aXZlIGZlZSBtYXkgdGFrZSBmb3IgW0ZlZUN1cnJlbmN5OjpFeHRlcm5hbEFzc2V0XS4ANFJlcXVpcmVtZW50czpwKiBUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLtwqIFRoZSBgaW5zdGFuY2VfaWRgIG11c3QgcmVmZXIgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2UulCogQWxsIHNwZWNpZmllZCByZWN5Y2xlcnMgbXVzdCBleGlzdC4tASogVGhlIGFsaWFzIHByb29mcyBtdXN0IGNvcnJlc3BvbmQgc2VxdWVudGlhbGx5IHRvIHRoZSBhbGlhc2VzIGluIGBpbnB1dHNgLjkBKiBgaW5wdXRzYCBtdXN0IG5vdCBiZSBlbXB0eSBhbmQgZWFjaCBlbGVtZW50IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgYWxpYXMuLQEqIGBhbGlhc19wcm9vZnNgIG11c3QgaG9sZCBleGFjdGx5IG9uZSBwcm9vZiBwZXIgYWxpYXMgYWNyb3NzIGFsbCBgaW5wdXRzYC5BASogVGhlIHNpZ25lciBtdXN0IGhhdmUgc3VmZmljaWVudCBiYWxhbmNlIHRvIHBheSB0aGUgZmVlIChvbmUgZmVlIHBlciByZWN5Y2xlcikuxCogYG1heF9mZWVgIG11c3QgY292ZXIgdGhlIGZlZSBpbiBgZmVlX2N1cnJlbmN5YC6wdW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXQoASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARRpbmRleDgBJFJpbmdJbmRleAABNHJlY3ljbGVyX3Jvb3StBQEwTWVtYmVyc09mPFQ+AAE0dW5sb2FkZWRfcm9vdDwBEEgyNTYAASxhbGlhc19wcm9vZh0EAShQcm9vZk9mPFQ+AAFMbm9uX2luY2x1c2lvbl9wcm9vZrEFAWUBQm91bmRlZFZlYzxCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNQVhfVFJJRV9OT0RFX0xFTj4+LCBDb25zdFUzMjwKTUFYX1RSSUVfUFJPT0ZfTk9ERVM+LD4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeaEFASxGZWVDdXJyZW5jeQABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABGkBQFSZWNvdmVyIGEgY29pbiBmcm9tIGFuIGFyY2hpdmVkIHJlY3ljbGVyIGludG8gdGhlIGV4dGVybmFsIGFzc2V0LgBYVGhpcyBpcyBhIHNpZ25lZCBjYWxsLgDwSXQgYWxsb3dzIGEgdXNlciB0byB1bmxvYWQgYSBjb2luIGZyb20gYW4gYXJjaGl2ZWQgcmVjeWNsZXIuSQFUaGUgdW5sb2FkIHRva2VuIGZlZSBpcyBjaGFyZ2VkIHRvIHRoZSBzaWduZXIsIGFuZCB0aGUgY2FsbCBpcyBub3QgcmVmdW5kZWQsIGFzIGl0HQFhY2NvdW50cyBmb3IgdGhlIGV4dHJhIHByb29mIHZlcmlmaWNhdGlvbiBhbmQgYXJjaGl2ZWQgcmVjeWNsZXIgdXBkYXRlLgAsUGFyYW1ldGVyczopASogYGluc3RhbmNlX2lkYCwgYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZnkgdGhlIGFyY2hpdmVkIHJlY3ljbGVyIHJpbmcuMQEqIGByZWN5Y2xlcl9yb290YDogdGhlIGRlbGV0ZWQgcmluZydzIHJpbmctVlJGIHJvb3Q7IHZhbGlkYXRlZCB0b2dldGhlciB3aXRo5CAgYHVubG9hZGVkX3Jvb3RgIGFnYWluc3QgdGhlIHN0b3JlZCBhcmNoaXZhbCBjb21taXRtZW50LgUBKiBgdW5sb2FkZWRfcm9vdGA6IHRoZSBjdXJyZW50IHJvb3Qgb2YgdGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZS45ASogYGFsaWFzX3Byb29mYDogYSByaW5nLVZSRiBtZW1iZXJzaGlwIHByb29mLCBjcmVhdGVkIG92ZXIgdGhlIG1lc3NhZ2UgYmluZGluZ1kBICBgYmxha2UyXzI1NihVTkxPQURfQVJDSElWRURfTVNHX1BSRUZJWCArKyBzaWduZXIpYCBpbiB0aGUgcmVjeWNsZXIgdW5sb2FkaW5nIGNvbnRleHR0ICBVTkxPQURJTkdfUkVDWUNMRVJfQ09OVEVYVC41ASogYG5vbl9pbmNsdXNpb25fcHJvb2ZgOiB0cmllIG5vZGVzIHByb3ZpbmcgdGhlIGNhbGxlcidzIGFsaWFzIGlzIGFic2VudCBmcm9tVQEgIGB1bmxvYWRlZF9yb290YCAoaS5lLiBpdCB3YXMgbmV2ZXIgdW5sb2FkZWQpOyBtdXN0IGFsc28gY292ZXIgdGhlIGluc2VydGlvbiBwYXRoIG9muCAgdGhlIGFsaWFzIHNvIHRoZSBuZXcgcm9vdCBjYW4gYmUgcmVjb21wdXRlZC7kKiBgdG9gOiB0aGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHJlY292ZXJlZCBkZW5vbWluYXRpb24uWQEqIGBmZWVfY3VycmVuY3lgOiB3aGV0aGVyIHRoZSB1bmxvYWQgZmVlIGlzIHBhaWQgaW4gbmF0aXZlIGN1cnJlbmN5IG9yIGV4dGVybmFsIGFzc2V0LmEBKiBgbWF4X2ZlZWA6IHRoZSBtb3N0IHRoZSBmZWUgbWF5IGNvc3QgdGhlIHNpZ25lciwgaW4gYGZlZV9jdXJyZW5jeWA6IHRoZSBuYXRpdmUgZmVlIGZvclUBICBbRmVlQ3VycmVuY3k6Ok5hdGl2ZV0sIGFuZCB0aGUgYW1vdW50IG9mIHRoZSBzaWduZXIncyBhc3NldCB0aGUgY29udmVyc2lvbiBpbnRvIHRoZdwgIG5hdGl2ZSBmZWUgbWF5IHRha2UgZm9yIFtGZWVDdXJyZW5jeTo6RXh0ZXJuYWxBc3NldF0uAGEBT24gc3VjY2VzcyB0aGUgZnVsbCBkZW5vbWluYXRpb24gaXMgcmVsZWFzZWQgdG8gYHRvYCwgdGhlIGFsaWFzIGlzIGFkZGVkIHRvIHRoZSB1bmxvYWRlZDUBc2V0IChzbyBpdCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFnYWluKSwgYW5kIHRoZSBhcmNoaXZlJ3MgcmVjb3ZlcmFibGUgY291bnQgaXPAZGVjcmVtZW50ZWQgKHRoZSBlbnRyeSBpcyByZW1vdmVkIG9uY2UgZHJhaW5lZCkuVQEoTm8gW2BDb25maWc6OkxvYWREZXBvc2l0YF0gaXMgc2V0dGxlZCBoZXJlLCBpdCB3YXMgYWxyZWFkeSBzZXR0bGVkIHdoZW4gdGhlIHJlY3ljbGVyOHdhcyBhcmNoaXZlZC4pAFUBVGhlIHVubG9hZGVkLWFsaWFzZXMgdHJpZSBuZWVkZWQgZm9yIGB1bmxvYWRlZF9yb290YCBhbmQgYG5vbl9pbmNsdXNpb25fcHJvb2ZgIGNhbiBiZTEBcmVjb25zdHJ1Y3RlZCBvZmZjaGFpbiBieSBsaXN0ZW5pbmcgdG8gdGhlIFtgRXZlbnQ6OlJlY3ljbGVyQWxpYXNVbmxvYWRlZGBdLFEBW2BFdmVudDo6UmVjeWNsZXJBcmNoaXZlZGBdIGFuZCBbYEV2ZW50OjpBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldGBdHGV2ZW50cy4AVQFUaGlzIGNhbGwgY29uZmxpY3RzIHdpdGggYW55IG90aGVyIGNhbGwgdGhhdCB1bmxvYWRzIGZyb20gdGhlIHNhbWUgYXJjaGl2ZWQgcmVjeWNsZXI6YQFlYWNoIHVubG9hZCB1cGRhdGVzIHRoZSBjb21taXRtZW50LCBzbyB0aGUgcHJvb2ZzIGluIHRoZSBjb21wZXRpbmcgY2FsbCBiZWNvbWUgb3V0ZGF0ZWQuQQFgcmVjeWNsZXJfcm9vdGAgYW5kIGB1bmxvYWRlZF9yb290YCBhcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29tbWl0bWVudCBhdE0BdHJhbnNhY3Rpb24gdmFsaWRhdGlvbiwgdGhlcmVmb3JlIHJlc29sdmluZyBzdWNoIGNvbmZsaWN0cyB3aXRob3V0IGNoYXJnaW5nIGZlZXMgYnmMbWFya2luZyBvdXRkYXRlZCBwcm9vZnMgYXMgaW52YWxpZC5odW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnMcASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARxhbGlhc2VzjQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShzcGxpdF9pbnRvbQUBfQFCb3VuZGVkVmVjPAooRGVub21pbmF0aW9uLCBCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4U3BsaXRPdXRwdXRzPiksIFQ6OgpNYXhTcGxpdE91dHB1dHMsPgABHG1heF9mZWVFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA281FVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgbXVsdGlwbGUgbmV3IGNvaW5zIChzcGxpdCkuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC4ARQFUaGlzIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSBhbmRFAVtTZWxmOjpzcGxpdF0gaW4gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhlIHJlc3VsdGluZyBjb2lucycgYWdlIGlzIDEgYmVjYXVzZUUBdGhlIGFjdGlvbiBvZiBzcGxpdHRpbmcgYWdlIGNvaW5zLiBUaGlzIGlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgcmVzdWx0aW5nIGNvaW5z6GFyZSBub3QgZW50aXJlbHkgZnJlc2gsIHRoZXkgY2FuIGJlIGxpbmtlZCB0byBvdGhlciBjb2lucy4AWQFVbmxpa2UgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dLCB0aGlzIGNhbGwgZG9lcyAqKm5vdCoqIHJlcXVpcmUgdGhlIG51bWJlciBvZnRhbGlhc2VzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4uNQEqIGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLlEBKiBgc3BsaXRfaW50b2A6IGEgdmVjdG9yIG9mIHBhaXJzLCBlYWNoIHBhaXIgY29udGFpbmluZyBhIGRlbm9taW5hdGlvbiBhbmQgYSBsaXN0IG9maCAgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuWQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gZmVlIHRoZSBjYWxsZXIgaXMgd2lsbGluZyB0byBwYXksIGV4cHJlc3NlZCBpbiB0aGUgdW5kZXJseWluZ0kBICBhc3NldCBiYWxhbmNlLiBJdCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRvdGFsIHZhbHVlIG9mIHRoZTkBICB1bmxvYWRlZCBjb2lucyBhbmQgdGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AuAGEBICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBpdCBtdXN0IGJlIHplcm86IG5vdGhpbmcgaXMgc2V0IGFzaWRlIGZvciB0aGUgZmVlLCBzb7ggIGBzcGxpdF9pbnRvYCB0YWtlcyB0aGUgd2hvbGUgdW5sb2FkZWQgdmFsdWUuXQEgIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoaXMgYW1vdW50IGlzIGRlZHVjdGVkIGZyb20gdGhlIGlucHV0OiB0aGUgYXNzZXQNASAgaXMgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBuZXR3b3JrIGZlZSwgd2hpY2ggaXMgdHJhbnNmZXJyZWQgdG81ASAgW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLCBhbmQgYW55IHJlbWFpbmRlciBpcyBidXJuZWQuIFRoZSBjYWxsZXIgY2FuIHF1ZXJ57CAgYGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fYXNzZXRgIHRvIGVzdGltYXRlIHRoZSBmZWUuAGEBICBUaGlzIHBhcmFtZXRlciBzZXJ2ZXMgYXMgYSBzYWZlZ3VhcmQ6IHRoZSB0cmFuc2FjdGlvbiBpcyByZWplY3RlZCBhdCB2YWxpZGF0aW9uIGlmIHRoZUEBICBhY3R1YWwgbmV0d29yayBmZWUgZXhjZWVkcyBgbWF4X2ZlZWAsIHByb3RlY3RpbmcgdGhlIGNhbGxlciBmcm9tIGV4Y2Vzc2l2ZSBmZWVdASAgaW5jcmVhc2VzIHRoYXQgd291bGQgcmVuZGVyIHRoZSBhcmd1bWVudCBgc3BsaXRfaW50b2AgaW52YWxpZCAodW5sb2FkZWQgZnVuZHMgbXVzdCBiZZggIGhpZ2hlciB0aGFuIHRoZSBzcGxpdCBwbHVzIHRoZSBmZWUpLgA0UmVxdWlyZW1lbnRzOqwqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0uLQEqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGBpbnN0YW5jZV9pZGAsIGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMu4CogRWFjaCBkZXN0aW5hdGlvbiBhY2NvdW50IG11c3Qgbm90IGFscmVhZHkgaGF2ZSBhIGNvaW4uYQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gIHBsdXMgYG1heF9mZWVgIG11c3QgZXF1YWwgdGhlkCAgdG90YWwgdmFsdWUgb2YgdGhlIHVubG9hZGVkIGNvaW5zLlUBKiBgbWF4X2ZlZWAgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBtaW5pbXVtIGNvaW4uIChUaGlzIGlzIGltcGxpZWQgYnkgdGhlIGNvbmRpdGlvbiQgIGFib3ZlKS7cKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgbWF4X2ZlZWAgbXVzdCBiZSAwLi0BKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgbmV0d29yayBmZWUuoGRpcmVjdF9vZmZib2FyZF9jb2luX2ludG9fZXh0ZXJuYWxfYXNzZXQEAQh0bwQBMFQ6OkFjY291bnRJZAAOYPBEaXJlY3RseSBvZmZib2FyZCBhIGNvaW4gaW50byB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldC4A1FRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCBvYnRhaW5lZCB0aHJvdWdo6FtgQXNDb2luYWdlYF0oY3JhdGU6OmV4dGVuc2lvbjo6QXNDb2luYWdlKSB1c2luZyBgQXNDb2luYC4AOQFUaGlzIGNhbGwgYnlwYXNzZXMgdGhlIHJlY3ljbGVyL3VubG9hZC10b2tlbiBvZmZib2FyZGluZyBmbG93IGFuZCByZWxlYXNlcyB0aGXMdW5kZXJseWluZyBhc3NldCBkaXJlY3RseSwgd2hhdGV2ZXIgdGhlIGNvaW4ncyBhZ2UuAEQjIFByaXZhY3kgd2FybmluZwBBAURpcmVjdGx5IG9mZmJvYXJkaW5nIGEgY29pbiB3aXRoIG5vbi16ZXJvIGFnZSBwdWJsaWNseSBsaW5rcyB0aGUgY29pbidzIHRyYW5zZmVyVQFjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gYWNjb3VudCwgd2hpY2ggY29tcHJvbWlzZXMsIHRvIHNvbWUgZXh0ZW50LCB0aGUgYW5vbnltaXR5IG9mTQFldmVyeSBwcmV2aW91cyBob2xkZXIgaW4gdGhlIGNoYWluOiBpZiBBbGljZSBzZW5kcyBhIGNvaW4gdG8gQm9iIGFuZCBCb2IgdG8gQ2hhcmxpZUUBYW5kIENoYXJsaWUgZGlyZWN0bHkgb2ZmYm9hcmRzIGl0LCBBbGljZSBtYXkgZGVkdWNlIHdoYXQgQm9iIGRpZCB3aXRoIHRoZSBjb2luLiBBWQFmcmVzaCBjb2luIChgYWdlID09IDBgKSBoYXMganVzdCBiZWVuIHVubG9hZGVkIGZyb20gYSByZWN5Y2xlciBhbmQgY2FycmllcyBubyB0cmFuc2ZlckEBaGlzdG9yeSwgc28gaXQgY2FuIGJlIG9mZmJvYXJkZWQgZGlyZWN0bHkgd2l0aG91dCB0aGlzIHByaXZhY3kgbG9zcy4gRm9yIG1heGltdW0dAXByaXZhY3ksIG9mZmJvYXJkIGNvaW5zIHdpdGggbm9uLXplcm8gYWdlIHRocm91Z2ggdGhlIHJlY3ljbGVyIGluc3RlYWQuACxQYXJhbWV0ZXJzOj0BKiBgdG9gOiBkZXN0aW5hdGlvbiBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgdGhlIHJlbGVhc2VkIHVuZGVybHlpbmcgYXNzZXQgYW1vdW50LgA0UmVxdWlyZW1lbnRzOpAqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpDb2luXS4RASogVGhlIGRlbm9taW5hdGlvbiBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgdW5kZXJseWluZy1hc3NldCBhbW91bnQuaGNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlCAEgYXNzZXRfaWRxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEkD0Q3JlYXRlIGEgc3VmZmljaWVudCBjb2luYWdlIGluc3RhbmNlIGZvciBhbiB1bmRlcmx5aW5nIGFzc2V0LgAhAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdLiBUaGUgYXNzZXQgbXVzdCBleGlzdCBpbkUBW2BDb25maWc6OkZ1bmdpYmxlc2BdOyBpdCBtYXkgYWxyZWFkeSBiZSB3cmFwcGVkIGJ5IG90aGVyIGluc3RhbmNlcywgc28gYWRtaW4gY2FuIQFhbHdheXMgd3JhcCBpdCBhdCB0aGUgZ3JhbnVsYXJpdHkgaXQgd2FudHMsIHdoYXRldmVyIHdhcyBjcmVhdGVkIGJlZm9yZS4AUQFUaGUgaW5zdGFuY2UncyByZWN5Y2xlciBjb2xsZWN0aW9ucyBhcmUgY3JlYXRlZCB3aXRoaW4gdGhpcyBjYWxsLiBUaGUgcGFsbGV0IGFjY291bnRNAW11c3QgYWxyZWFkeSBiZSBhYmxlIHRvIHJlY2VpdmUgdGhlIHVuZGVybHlpbmcgYXNzZXQ6IGZvciBhIG5vbi1zdWZmaWNpZW50IGFzc2V0IGl0QQFtdXN0IGhhdmUgYmVlbiB0b3VjaGVkIGJlZm9yZWhhbmQuIEl0IG11c3QgYWxzbyBhbHJlYWR5IGhvbGQgdGhlIGFzc2V0J3MgbWluaW11bZhiYWxhbmNlIGFzIGEgYnVmZmVyIHRvIGF2b2lkIGR1c3RpbmdzLgAsUGFyYW1ldGVyczoFASogYGFzc2V0X2lkYDogdGhlIHVuZGVybHlpbmcgYXNzZXQgYmFja2luZyB0aGlzIGluc3RhbmNlJ3MgY29pbnMuWQEqIGBhc3NldF91bml0YDogdGhlIGFzc2V0IGFtb3VudCBvZiBhIGNvaW4gb2YgZGVub21pbmF0aW9uIHplcm8uIE11c3QgYmUgbm9uLXplcm8sIGFuZE0BICBtdXN0IHJlcHJlc2VudCBldmVyeSBkZW5vbWluYXRpb24gaW4gYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gIHdpdGhvdXQ0ICB0cnVuY2F0aW9uLmRjcmVhdGVfc3BvbnNvcmVkX2luc3RhbmNlDAEgYXNzZXRfaWRxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEoYXNzZXRfdW5pdEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATxpbml0aWFsX2Z1bmRpbme9BQHYT3B0aW9uPChGdW5naWJsZXNBc3NldElkT2Y8VD4sIEZ1bmdpYmxlc0JhbGFuY2VPZjxUPik+ABOA4ENyZWF0ZSBhIHNwb25zb3JlZCBjb2luYWdlIGluc3RhbmNlIHdyYXBwaW5nIGBhc3NldF9pZGAuAE0BVGhlIG9yaWdpbiBtdXN0IHNhdGlzZnkgW2BDb25maWc6OlNwb25zb3JPcmlnaW5gXSwgd2hpY2ggeWllbGRzIHRoZSBwYXlpbmcgYWNjb3VudDtJAXdpdGggYEVuc3VyZVNpZ25lZGAgYW55b25lIGNhbiBjYWxsIHRoaXMuIFtgQ29uZmlnOjpFbmFibGVQZXJtaXNzaW9ubGVzc2BdIG11c3QgYmVVAXRydWUsIG90aGVyd2lzZSBubyBzcG9uc29yZWQgaW5zdGFuY2UgY2FuIGJlIGNyZWF0ZWQgYXQgYWxsLiBUaGUgaW5zdGFuY2UncyBsb2FkLXNpZGUlAWNvc3RzIGFyZSB1bmRlcndyaXR0ZW4gYnkgYSBwb3QgYWNjb3VudCBkZXJpdmVkIGZyb20gdGhlIGluc3RhbmNlIGlkIChzZWU9AVtgUGFsbGV0Ojpwb3RfYWNjb3VudGBdKSwga2VwdCBmdW5kZWQgYnkgc3BvbnNvcnMgdGhyb3VnaCBbYFBhbGxldDo6ZnVuZF9wb3RgXS4AUFRoZSBjYWxsZXIgcHJvdmlkZXM6UQEtIHRoZSBpbnN0YW5jZSBjcmVhdGlvbiBkZXBvc2l0IChbYENvbmZpZzo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXRgXSwgdGFrZW4gZnJvbSB0aGVVASAgY2FsbGVyIGFuZCBrZXB0IGZvciBhcyBsb25nIGFzIHRoZSBpbnN0YW5jZSBpcyBzcG9uc29yZWQsIHNpbmNlIGluc3RhbmNlcyBhcmUgbmV2ZXJJASAgcmVtb3ZlZDsgdGhlIGNhbGxlciBhbmQgaXRzIHRpY2tldCBhcmUgcmVjb3JkZWQgaW4gW2BJbnN0YW5jZVJlY29yZDo6Y3JlYXRvcmBdKSxdAS0gdGhlIHBhbGxldCBhY2NvdW50J3MgbWluaW11bSBiYWxhbmNlIG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0ICh0cmFuc2ZlcnJlZCByYXRoZXIgdGhhbgUBICBtaW50ZWQsIHNvIGEgcGVybWlzc2lvbmxlc3MgY2FsbCBjYW5ub3QgY3JlYXRlIHVuYmFja2VkIGZ1bmRzKSxRAS0gb3B0aW9uYWxseSBgaW5pdGlhbF9mdW5kaW5nYCwgcmVjb3JkZWQgYXMgdGhlIGNhbGxlcidzIHBvdCBjb250cmlidXRpb24gZXhhY3RseSBhc00BICBbYFBhbGxldDo6ZnVuZF9wb3RgXSB3b3VsZC4gQnVuZGxlZCBoZXJlIGJlY2F1c2UgdGhlIGluc3RhbmNlIGlkIGlzIG9ubHkgYXNzaWduZWQ9ASAgaW5zaWRlIHRoZSBjYWxsLCBzbyBhIHNlcGFyYXRlIGBmdW5kX3BvdGAgY2Fubm90IGJlIGJhdGNoZWQgd2l0aCB0aGUgY3JlYXRpb24wICByYWNlLWZyZWUuAFkBYGFzc2V0X3VuaXRgIGlzIGZpeGVkIGF0IGNyZWF0aW9uIGFuZCBpbnN0YW5jZXMgYXJlIG5ldmVyIHJlbW92ZWQsIGJ1dCBhbiBhc3NldCBpcyBub3QxAWZpcnN0LWNvbWU6IGFueW9uZSwgYWRtaW4gaW5jbHVkZWQsIGNhbiB3cmFwIHRoZSBzYW1lIGFzc2V0IGFnYWluIGluIGl0cyBvd25RAWluc3RhbmNlIGF0IGFub3RoZXIgdW5pdCwgc28gb25lIGNyZWF0b3IgY2Fubm90IGZpeCB0aGUgY29pbiBncmFudWxhcml0eSBvZiBhbiBhc3NldBUBZm9yIGV2ZXJ5Ym9keSBlbHNlLiBXaGF0IHN0b3BzIGEgZmxvb2Qgb2YgbmVhci1kdXBsaWNhdGUgaW5zdGFuY2VzIGlzVQFbYENvbmZpZzo6SW5zdGFuY2VDcmVhdGlvbkRlcG9zaXRgXSwgaGVsZCBvbiBlYWNoIGNyZWF0b3IgZm9yIGFzIGxvbmcgYXMgaXRzIGluc3RhbmNlNGlzIHNwb25zb3JlZC4ALFBhcmFtZXRlcnM6BQEqIGBhc3NldF9pZGA6IHRoZSB1bmRlcmx5aW5nIGFzc2V0IGJhY2tpbmcgdGhpcyBpbnN0YW5jZSdzIGNvaW5zLlkBKiBgYXNzZXRfdW5pdGA6IHRoZSBhc3NldCBhbW91bnQgb2YgYSBjb2luIG9mIGRlbm9taW5hdGlvbiB6ZXJvLiBNdXN0IGJlIG5vbi16ZXJvLCBhbmRNASAgbXVzdCByZXByZXNlbnQgZXZlcnkgZGVub21pbmF0aW9uIGluIGBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYCB3aXRob3V0NCAgdHJ1bmNhdGlvbi4dASogYGluaXRpYWxfZnVuZGluZ2A6IGFuIG9wdGlvbmFsIGAoY3VycmVuY3ksIGFtb3VudClgIHBvdCBjb250cmlidXRpb24uIGZ1bmRfcG90DAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAUPEUBRnVuZCB0aGUgcG90IG9mIHRoZSBzcG9uc29yZWQgaW5zdGFuY2UgYGluc3RhbmNlX2lkYCB3aXRoIGBhbW91bnRgIG9mIGBjdXJyZW5jeWAuADEBVGhlIGNvbnRyaWJ1dGlvbiBpcyByZWNvcmRlZCBwZXIgZnVuZGVyIGFuZCBwZXIgY3VycmVuY3k6IHRoZSBwYXJ0IG9mIGl0IG5vdAEBY3VycmVudGx5IGhlbGQgYXMgbG9hZC1kZXBvc2l0IGNvbGxhdGVyYWwgY2FuIGJlIHRha2VuIGJhY2sgd2l0aE0BW2BQYWxsZXQ6OndpdGhkcmF3X3BvdF9mdW5kc2BdLiBBIHBsYWluIHRyYW5zZmVyIHRvIHRoZSBwb3QgYWNjb3VudCBiYWNrcyBsb2FkcyBhbGy0dGhlIHNhbWUgYnV0IGlzIGEgZG9uYXRpb24sIG5vdCB3aXRoZHJhd2FibGUuAEEBQW55IGV4aXN0aW5nIGBjdXJyZW5jeWAgaXMgYWNjZXB0ZWQsIG5vdCBqdXN0IHRoZSBjdXJyZW50IGRlcG9zaXQgY3VycmVuY3ksIHNvIGHYc3BvbnNvciBjYW4gcHJlZnVuZCBhaGVhZCBvZiBhbiBhZG1pbiBjdXJyZW5jeSBzd2l0Y2guAEkBQSBwb3Qgd2l0aCBubyBhY2NvdW50IGZvciBgY3VycmVuY3lgIGhhcyBvbmUgY3JlYXRlZCBmb3IgaXQgZmlyc3QsIGF0IHRoZSBjYWxsZXInc0kBZXhwZW5zZS4gV2hhdGV2ZXIgdGhhdCBjb3N0cyBpcyBub3QgcGFydCBvZiB0aGUgcmVjb3JkZWQgY29udHJpYnV0aW9uIGFuZCBpcyBuZXZlcjEBcmVmdW5kZWQuIFRoZSBgYW1vdW50YCBtdXN0IGJlIGF0IGxlYXN0IHRoZSBjdXJyZW5jeSdzIG1pbmltdW0gYmFsYW5jZSwgc28gYU0BZnVuZGluZyBjYW5ub3QgYmUgZHVzdGVkIG9uIGFycml2YWw7IHRoZSBwb3QncyBhY2NvdW50IHRoZW4gc3Vydml2ZXMgYW55IHdpdGhkcmF3YWwgb3IgaG9sZC5Id2l0aGRyYXdfcG90X2Z1bmRzDAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAVEEUBVGFrZSBiYWNrIHVwIHRvIHRoZSBjYWxsZXIncyByZWNvcmRlZCBjb250cmlidXRpb24gdG8gdGhlIHBvdCBvZiBgaW5zdGFuY2VfaWRgIGluLGBjdXJyZW5jeWAuADkBT25seSB0aGUgcG90J3MgZnJlZSBiYWxhbmNlIGNhbiBiZSB3aXRoZHJhd246IGhlbGQgY29sbGF0ZXJhbCBpcyBvdXQgb2YgcmVhY2guWGNvbGxhcHNlX2xvYWRfZGVwb3NpdHMEASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAFzQBAVJlLXByaWNlIGV2ZXJ5IGxpdmUgbG9hZCBkZXBvc2l0IG9mIGBpbnN0YW5jZV9pZGAgdG8gdGhlIGN1cnJlbnQtAVtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLCBjb252ZXJ0aW5nIHRoZSBjb2xsYXRlcmFsIHRvIHRoZSBjdXJyZW50IGN1cnJlbmN5LgBBAUFueWJvZHkgbWF5IGNhbGwgdGhpcy4gSXQgaXMgdGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgY2hhbmdlcyBob3cgbXVjaCBjb2xsYXRlcmFsVQFiYWNrcyBhbHJlYWR5LWxvYWRlZCBrZXlzLCBpbiBlaXRoZXIgZGlyZWN0aW9uOiB0aGUgcG90IGlzIGNoYXJnZWQgdGhlIHNob3J0ZmFsbCB3aGVuNQFhZG1pbiBoYXMgcmFpc2VkIHRoZSBwcmljZSBzaW5jZSB0aG9zZSBsb2FkcywgYW5kIHJlZnVuZGVkIHRoZSBleGNlc3Mgd2hlbiBpdE0BaGFzIGxvd2VyZWQgaXQuIE5vdGhpbmcgaXMgY29udmVydGVkIGJldHdlZW4gY3VycmVuY2llczogb2xkIGNvbGxhdGVyYWwgaXMgcmVsZWFzZWRRAXRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UgYW5kIHRoZSBuZXcgcmVxdWlyZW1lbnQgaXMgdGFrZW4gZnJlc2gsIHNvIG5vIHJhdGUgZmVlZCBpcyRpbnZvbHZlZC4AMQFUaGlzIGlzIHRoZSBjb21wYW5pb24gdG8gYW4gYWRtaW4gY2hhbmdlIG9mIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdLCBhbmQgdGhlVQFwZXJtaXNzaW9ubGVzcyByZW1lZHkgZm9yIGFuIGluc3RhbmNlIHdob3NlIGxvYWRzIGFyZSByZWZ1c2VkIGJlY2F1c2UgaXRzIG9sZCB0aWVyIGlzPHN0aWxsIG9jY3VwaWVkLmBtYWtlX2luc3RhbmNlX3N1ZmZpY2llbnQEASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAGCjoU3dpdGNoIGEgc3BvbnNvcmVkIGluc3RhbmNlIHRvIGBJbnN0YW5jZU1vZGU6OlN1ZmZpY2llbnRgLgAdAVRoZSBvcmlnaW4gbXVzdCBzYXRpc2Z5IFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdOiB0aGlzIGlzIGFkbWluIGJsZXNzaW5nUQFhbiBpbnN0YW5jZSBpbnRvIHRoZSBzdHJhbmRlZC12YWx1ZSBlY29ub21pY3MuIEV2ZXJ5IGxvYWQgZGVwb3NpdCBpcyByZWxlYXNlZCB0byB0aGUVAXBvdCdzIGZyZWUgYmFsYW5jZSwgd2hlcmUgZnVuZGVycyByZWNsYWltIHRoZWlyIGNvbnRyaWJ1dGlvbnMgdGhyb3VnaDkBW2BQYWxsZXQ6OndpdGhkcmF3X3BvdF9mdW5kc2BdICh3aXRoZHJhd2FsIGRvZXMgbm90IHJlcXVpcmUgdGhlIGluc3RhbmNlIHRvIGJlRQFzcG9uc29yZWQpOyBvbmx5IGRvbmF0aW9ucyBzdGF5IHN0cmFuZGVkLiBUaGUgbGVkZ2VyIGlzIHJlbW92ZWQsIGFuZCBmcm9tIGhlcmUgb268bG9hZHMgdGFrZSBubyBkZXBvc2l0IGFuZCB1bmxvYWRzIHJlbGVhc2Ugbm9uZS4AyFRoZSBpbnN0YW5jZSBjcmVhdGlvbiBkZXBvc2l0IGlzIHJlbGVhc2VkIGlmIHNvbWUuXG1ha2VfaW5zdGFuY2Vfc3BvbnNvcmVkBAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkABlA6FN3aXRjaCBhIHN1ZmZpY2llbnQgaW5zdGFuY2UgdG8gYEluc3RhbmNlTW9kZTo6U3BvbnNvcmVkYC4AMQFUaGUgb3JpZ2luIG11c3Qgc2F0aXNmeSBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4gVGhlIGRlcG9zaXQgbGVkZ2VyIHJlc3RhcnRzTQFmcm9tIHplcm86IGtleXMgbG9hZGVkIHdoaWxlIHRoZSBpbnN0YW5jZSB3YXMgc3VmZmljaWVudCBjYXJyeSBubyBkZXBvc2l0LCBzbyB0aGVpckEBdW5sb2FkcyBzZXR0bGUgYWdhaW5zdCB3aGF0ZXZlciB0aGUgbGVkZ2VyIGhvbGRzIGF0IHRoZSB0aW1lLCBwb3NzaWJseSByZWxlYXNpbmc5AWRlcG9zaXRzIHRha2VuIGZvciBrZXlzIGxvYWRlZCBhZnRlciB0aGUgc3dpdGNoLCBvciBub3RoaW5nIG9uY2UgdGhlIGxlZGdlciBpc00BZHJhaW5lZC4gVGhlIGluc3RhbmNlIHRoZXJlZm9yZSBydW5zIHVuZGVyLWNvbGxhdGVyYWxpemVkIHVudGlsIGl0cyBwcmUtc3dpdGNoIGtleXPkc3RvcCByZXNvbHZpbmcsIHdoaWNoIGFkbWluIGFjY2VwdHMgYnkgbWFraW5nIHRoZSBzd2l0Y2guAFUBTG9hZHMgc3RheSBpbnZhbGlkIHVudGlsIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdIGlzIHNldCBhbmQgdGhlIHBvdCBpcyBmdW5kZWQgdGhyb3VnaFRbYFBhbGxldDo6ZnVuZF9wb3RgXS4A0E5vIFtgQ29uZmlnOjpJbnN0YW5jZUNyZWF0aW9uRGVwb3NpdGBdIGlzIHRha2VuLCBhbmQxAVtgSW5zdGFuY2VSZWNvcmQ6OmNyZWF0b3JgXSBzdGF5cyBhcyBpdCBpcywgc28gYW4gaW5zdGFuY2UgdGhhdCB3ZW50IHRocm91Z2hNAVtgUGFsbGV0OjptYWtlX2luc3RhbmNlX3N1ZmZpY2llbnRgXSBjb21lcyBiYWNrIHdpdGggbm8gY3JlYXRvciBhbmQgbm8gZGVwb3NpdCwgdGhlaHNhbWUgYXMgb25lIGFkbWluIGNyZWF0ZWQuOGNsZWFuX3JlY3ljbGVyCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAGUsdENsZWFuIHVwIGFuIGV4cGlyZWQgcmVjeWNsZXIuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS4ADQFUaGlzIHJlbW92ZXMgYW4gb2xkIHJlY3ljbGVyIHRoYXQgaGFzIGV4Y2VlZGVkIGl0cyBleHBpcmF0aW9uIHRpbWUuYQFBbnkgcmVtYWluaW5nIChub3QteWV0LXVubG9hZGVkKSBjb2lucyBhcmUgbm90IGRlc3Ryb3llZDogdGhlIHJpbmcgaXMgYXJjaGl2ZWQgYW5kIHRoZWly/GJhY2tpbmcgYXNzZXQgc3RheXMgaGVsZCBpbiB0aGUgcGFsbGV0IGFjY291bnQsIHJlY292ZXJhYmxlIHZpYeRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS4ATQFPbiBhIHNwb25zb3JlZCBpbnN0YW5jZSB0aGlzIHNldHRsZXMgdGhlIFtgQ29uZmlnOjpMb2FkRGVwb3NpdGBdIG9mIGV2ZXJ5IHJlbWFpbmluZxBrZXkuZGNsZWFuX2NvbnN1bWVkX2ZyZWVfdG9rZW4EARhwZXJpb2Q4ARhQZXJpb2QAZgz8Q2xlYW51cCBzdG9yYWdlIGZvciBjb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgb2Ygb2xkIHBlcmlvZHMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZwgBGHBlcmlvZDgBGFBlcmlvZAABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaBgJAUNsZWFuIHVwIGEgc2luZ2xlIHJpbmcgaW4gYW4gZXhwaXJlZCBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuKQFSaW5ncyBtdXN0IGJlIGNsZWFuZWQgc2VxdWVudGlhbGx5IChyaW5nIDAgZmlyc3QsIHRoZW4gMSwgZXRjLikgYmVmb3JlIHRoZXRjb2xsZWN0aW9uIGNhbiBiZSBkZWxldGVkIHZpYY0BW2BkZWxldGVfZXhwaXJlZF9wYWlkX3VubG9hZF90b2tlbl9jb2xsZWN0aW9uYF0oU2VsZjo6ZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbikuTGNsZWFuX3JlY3ljbGVyX2R1c3QAaRRwQ2xlYW4gdXAgZHVzdCBmb3IgcmVjeWNsZXJzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuUQFSZW1vdmVzIHVwIHRvIERVU1RfQ0xFQU5VUF9CQVRDSF9TSVpFIGVudHJpZXMgZnJvbSBbUmVjeWNsZXJBbGlhc1N0YXRlc10gcGVyIGNhbGwgdG9QYm91bmQgdGhlIG9wZXJhdGlvbi5wY2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fZHVzdABqDJRDbGVhbiB1cCBkdXN0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6sZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbgQBGHBlcmlvZDgBGFBlcmlvZABrGEUBRGVsZXRlIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbiBhZnRlciBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAEEBVGhpcyBpcyBhIG1haW50ZW5hbmNlIGNhbGwuIFRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkIGFuZCBmcm9tIGxvY2FsIHNvdXJjZS6QQWxsIHJpbmdzIG11c3QgaGF2ZSBiZWVuIGNsZWFuZWQgdmlhQQFbYGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmdgXShTZWxmOjpjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nKSBiZWZvcmUgdGhpczhjYW4gYmUgY2FsbGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEFBFMAAAQAeQUBGFZlYzxUPgAAcQUAAAQIFQR1BQB1BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAB5BQAAAnEFAH0FDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXREQ29kZWNQcmVzZXJ2YXRpb24AAQwoRXhwZW5kYWJsZQAAABxQcm90ZWN0AAEAIFByZXNlcnZlAAIAAIEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQUEUwAABACJBQEYVmVjPFQ+AACFBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0PFVucGFpZExvYWRJbnB1dAQEVAAAEAEwcHJlc2VydmF0aW9ufQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwcQQBOFNpZ25hdHVyZU9mPFQ+AACJBQAAAoUFAI0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAJEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBlQUEUwAABACZBQEYVmVjPFQ+AACVBQAABAgVBAgAmQUAAAKVBQCdBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0TFVubG9hZFJlY3ljbGVySW5wdXQEMEFsaWFzZXNCb3VuZAAAEAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARxhbGlhc2VzjQUBfEJvdW5kZWRWZWM8QWxpYXMsIEFsaWFzZXNCb3VuZD4AAKEFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQsRmVlQ3VycmVuY3kAAQgYTmF0aXZlAAAANEV4dGVybmFsQXNzZXQAAQAApQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdBQRTAAAEAKkFARhWZWM8VD4AAKkFAAACnQUArQUMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADIAEAAAwAsQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG1BQRTAAAEALkFARhWZWM8VD4AALUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAuQUAAAK1BQC9BQQYT3B0aW9uBARUAcEFAQgQTm9uZQAAABBTb21lBADBBQAAAQAAwQUAAAQIcQFFAQDFBQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIYcGFsbGV0EENhbGwEBFQAASAkc3Vic2NyaWJlDAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWScARhQYXJhSWQAAUxtZW1iZXJzX2NvbGxlY3Rpb25zyQUBHQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXIsPgABMHBhbGxldF9pbmRleAwBCHU4AAAsoFJlZ2lzdGVycyB0aGUgcGFyYWNoYWluIGFzIGEgc3Vic2NyaWJlci7QVGhlIGluaXRpYWwgc3RhdGUgd2lsbCBiZSBzZW50IG92ZXIgc2hvcnRseSB2aWEgWENNLgAkIyMgT3JpZ2luqFJlcXVpcmVzIGBNYW5hZ2VPcmlnaW5gIChnb3Zlcm5hbmNlL3Jvb3QpLgA0IyMgUGFyYW1ldGVycxUBLSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgOiBUaGUgUGFyYUlkIG9mIHRoZSBzdWJzY3JpYmluZyBwYXJhY2hhaW4uRQEtIGBtZW1iZXJzX2NvbGxlY3Rpb25zYDogTGlzdCBvZiBjb2xsZWN0aW9uIGlkZW50aWZpZXJzIHRvIHN1YnNjcmliZSB0byBhbmQgdGhlaXJwICByZXNwZWN0aXZlIHJpbmcgZXhwb25lbnRzLjUBLSBgcGFsbGV0X2luZGV4YDogUGFsbGV0IGluZGV4IG9mIG1lbWJlcnMtc3Vic2NyaWJlciBvbiB0aGUgc3Vic2NyaWJlciBjaGFpbi4sdW5zdWJzY3JpYmUEAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZNUFAThPcHRpb248UGFyYUlkPgABJGRVbnN1YnNjcmliZXMgYSBwYXJhY2hhaW4uACQjIyBPcmlnaW49AS0gKipTZWxmLXVuc3Vic2NyaWJlKio6IFN1YnNjcmliZXIgcGFyYWNoYWluIHZpYSBYQ00gKGBFbnN1cmVTdWJzY3JpYmVyT3JpZ2luYCnULSAqKkdvdmVybmFuY2UgdW5zdWJzY3JpYmUqKjogUmVxdWlyZXMgYE1hbmFnZU9yaWdpbmAANCMjIFBhcmFtZXRlcnNhAS0gYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYDogVGhlIFBhcmFJZCB0byB1bnN1YnNjcmliZS4gUmVxdWlyZWQgZm9yIGdvdmVybmFuY2UsIGlnbm9yZWTEICBmb3Igc2VsZi11bnN1YnNjcmliZSAoZGVyaXZlZCBmcm9tIFhDTSBvcmlnaW4pLjhyZXF1ZXN0X3JlcGxheQwBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lknAEYUGFyYUlkAAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAURyaW5nX3Jvb3RfaW5kaWNlc9kFAbBCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4VXBkYXRlc1BlckJhdGNoPgACJJxSZXF1ZXN0cyByZXBsYXkgb2Ygc3BlY2lmaWMgcmluZyByb290cy4ANQFQZXJtaXNzaW9ubGVzcyDigJQgYW55IHNpZ25lZCBvcmlnaW4gY2FuIHJlcXVlc3QgYSByZXBsYXkgZm9yIGFueSBzdWJzY3JpYmVyLkkBVGhlIHN1YnNjcmliZXIgcGFyYWNoYWluIGlzIGlkZW50aWZpZWQgYnkgdGhlIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGAgcGFyYW1ldGVyLgAsUGFyYW1ldGVyczroLSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgOiBUaGUgUGFyYUlkIG9mIHRoZSBzdWJzY3JpYmVyLpgtIGBpZGVudGlmaWVyYDogQ29sbGVjdGlvbiBpZGVudGlmaWVyLlkBLSBgcmluZ19yb290X2luZGljZXNgOiBMaXN0IG9mIHJpbmcgcm9vdCBpbmRpY2VzLCBtdXN0IGJlIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlci48ZW5xdWV1ZV91cGRhdGVzCAEkc2VuZF9wYWdlzQMBDHUxNgABNGRpc2NyaW1pbmF0b3I4AURCbG9ja051bWJlckZvcjxUPgADDPhFbnF1ZXVlcyBwZW5kaW5nIHVwZGF0ZXMgaW50byBhIHNlYWxlZCBiYXRjaCBmb3IgZGlzdHJpYnV0aW9uLgDEQXV0aG9yaXplZCBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLihzZW5kX2JhdGNoDAEccGFyYV9pZJwBGFBhcmFJZAABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4ABAzEU2VuZHMgdGhlIGN1cnJlbnQgYmF0Y2ggdG8gYSBzcGVjaWZpYyBzdWJzY3JpYmVyLgD0QXV0aG9yaXplZCBtYWludGVuYW5jZSBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLjhzZW5kX2luaXRfcGFnZRABHHBhcmFfaWScARhQYXJhSWQAAWBjdXJyZW50X2NvbGxlY3Rpb25faW5kZXg4AQx1MzIAAUBhZnRlcl9yaW5nX2luZGV45AFET3B0aW9uPFJpbmdJbmRleD4AATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4ABQzYU2VuZHMgb25lIHBhZ2Ugb2YgaW5pdGlhbGl6YXRpb24gZGF0YSB0byBhIHN1YnNjcmliZXIuAPRBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuTGFiYW5kb25fc3R1Y2tfYmF0Y2gEATRkaXNjcmltaW5hdG9yOAFEQmxvY2tOdW1iZXJGb3I8VD4ABhTkQWJhbmRvbnMgYSBzdHVjayBiYXRjaCB0aGF0IGV4Y2VlZGVkIGBTdHVja0JhdGNoVGltZW91dGAuMQFTdWJzY3JpYmVycyB0aGF0IGRpZCBub3QgcmVjZWl2ZSB0aGUgYmF0Y2ggY2FuIHJlY292ZXIgdmlhIGByZXF1ZXN0X3JlcGxheWAuADUBQXV0aG9yaXplZCBtYWludGVuYW5jZSBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIHdoZW4gYSBiYXRjaCBoYXOwYmVlbiBhY3RpdmUgbG9uZ2VyIHRoYW4gYFN0dWNrQmF0Y2hUaW1lb3V0YC5Uc3Vic2NyaWJlX3doaXRlbGlzdGVkBAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWScARhQYXJhSWQABxRNAVJlZ2lzdGVycyBhIHdoaXRlbGlzdGVkIHBhcmFjaGFpbiBhcyBhIHN1YnNjcmliZXIsIHVzaW5nIHRoZSBjb2xsZWN0aW9ucyBhbmQgcGFsbGV0gGluZGV4IHJlY29yZGVkIGluIHRoZSB3aGl0ZWxpc3QuAD0BVGhlIHdoaXRlbGlzdCBlbnRyeSBpcyBjb25zdW1lZCwgc28gYSBwYXJhY2hhaW4gY2FuIGJlIHN1YnNjcmliZWQgdGhpcyB3YXkgb25seSUBb25jZS4gQWZ0ZXIgYW4gYHVuc3Vic2NyaWJlYCwgb25seSBgTWFuYWdlT3JpZ2luYCBjYW4gc3Vic2NyaWJlIGl0IGFnYWluLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAc0FBFMAAAQA0QUBGFZlYzxUPgAAzQUAAAQICFUFANEFAAACzQUA1QUEGE9wdGlvbgQEVAGcAQgQTm9uZQAAABBTb21lBACcAAABAADZBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABpBAEYVmVjPFQ+AADdBQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0EENhbGwEBFQAATQ4c2NoZWR1bGVfZXZlbnQIASBldmVudF9pZAgBHEV2ZW50SWQAARBpbmZv4QUBOEV2ZW50SW5mb09mPFQ+AAAUVQFTY2hlZHVsZSBhIG5ldyBhaXJkcm9wIGV2ZW50LiBPcmlnaW4gbXVzdCBiZSBgTWFuYWdlck9yaWdpbmAuIFRoZSBwcml6ZSBhbGxvY2F0aW9uIGlzGQFoZWxkIGluIHRoZSBwYWxsZXQncyBwb3QgYWNjb3VudC4gVGhlIHBvdCBpcyBhc3N1bWVkIHRvIGJlIHByZS1mdW5kZWQuAFEBQ3Jvc3MtcGFsbGV0IGNhbGxlcnMgc2hvdWxkIHVzZSB0aGUgW2BjcmF0ZTo6dHlwZXM6OkFpcmRyb3A6OnNjaGVkdWxlYF0gdHJhaXQgbWV0aG9k5Gluc3RlYWQsIHdoaWNoIGRlYml0cyBhIGNhbGxlci1zdXBwbGllZCBgc291cmNlYCBhY2NvdW50LlhyZW1vdmVfc2NoZWR1bGVkX2V2ZW50BAEgZXZlbnRfaWQIARxFdmVudElkAAEIEQFSZW1vdmUgYSBwcmV2aW91c2x5IHNjaGVkdWxlZCBldmVudC4gVGhlIGV2ZW50IG11c3Qgbm90IGhhdmUgYWxyZWFkeZxzdGFydGVkLCBvdGhlcndpc2UgdGhpcyBjYWxsIHdpbGwgZmFpbC4wZW5hYmxlX2Fzc2V0CAEgYXNzZXRfaWRxAQEwQXNzZXRJZE9mPFQ+AAEYc291cmNlBAEwVDo6QWNjb3VudElkAAoQTQFFbmFibGUgYW4gYXNzZXQgZm9yIHVzZSBpbiBhaXJkcm9wIGV2ZW50cy4gVGhlIG9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYCBvbmx5LgBZAVRyYW5zZmVycyB0aGUgYXNzZXQncyBjdXJyZW50IG1pbmltdW0gYmFsYW5jZSBmcm9tIGBzb3VyY2VgIHRvIHRoZSBwYWxsZXQncyBwb3Qgc28gdGhlJQFwb3QncyBhc3NldCBhY2NvdW50IHN0YXlzIGFsaXZlIHdoaWxlIGV2ZW50cyBob2xkIHByaXplIGZ1bmRzIGFnYWluc3QgaXQuNGRpc2FibGVfYXNzZXQIASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAALFFkBRGlzYWJsZSBhbiBhc3NldCBwcmV2aW91c2x5IGVuYWJsZWQgd2l0aCBgZW5hYmxlX2Fzc2V0YC4gUmVmdW5kcyB0aGUgb3JpZ2luYWxseS1mdW5kZWQ5AWFtb3VudCBmcm9tIHRoZSBwb3QgdG8gYGJlbmVmaWNpYXJ5YC4gVGhlIG9yaWdpbiBtdXN0IGJlIGBNYW5hZ2VyT3JpZ2luYCBvbmx5LgBNAVRoZSBtYW5hZ2VyIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyBubyBldmVudHMgc3RpbGwgcmVmZXJlbmNlIHRoaXMgYXNzZXQgYmVmb3JlGQFkaXNhYmxpbmcsIGJ1dCB0aGlzIGlzIHNhZmUgc2luY2Ugc2NoZWR1bGluZyBhbiBldmVudCBpcyBwZXJtaXNzaW9uZWQudHN0YXJ0X3JlZ2lzdHJhdGlvbl9hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgACHNxPQ1ctZHJpdmVuOiB0cmFuc2l0aW9uIGBTY2hlZHVsZWQg4oaSIFJlZ2lzdGVyaW5nYCB3aGVuhGByZWdpc3RyYXRpb25fc3RhcnRzYCBpcyByZWFjaGVkLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC50Y2xvc2VfcmVnaXN0cmF0aW9uX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAM0bE9DVy1kcml2ZW46IGF0IGBkcmF3X3RpbWVgOlAtIGNsb3NlIHJlZ2lzdHJhdGlvboQtIGNvbXB1dGUgdGhlIHRhcmdldCB3aW5uZXIgY291bnTMLSByZWxlYXNlIHRoZSB1bnVzZWQtc2xvdCBwcml6ZSBhbGxvY2F0aW9uIHVwLWZyb250+C0gcmVjb3JkIHRoZSByYW5kb21uZXNzIHNvdXJjZSdzIGN1cnJlbnQgbW9tZW50IGFzIGEgd2F0ZXJtYXJruC0gdHJhbnNpdGlvbiBgUmVnaXN0ZXJpbmcg4oaSIEF3YWl0aW5nRW50cm9weWAAHQFUaGUgZW50cm9weSBjYXB0dXJlIGFuZCB0aGUgd2lubmVyIGRyYXdzIGFyZSBwZXJmb3JtZWQgaW4gbGF0ZXIgc3RhZ2VzLgBFAWBkaXNjcmltaW5hdG9yYCBpcyBhbnkgYHUzMmA7IGl0IGxldHMgdGhlIE9DVyBzZW5kIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uIHdoZW4gYVUBcHJldmlvdXMgb25lIGlzIGJhbm5lZCBieSB0aGUgcG9vbCBiZWNhdXNlIGl0IHdhcyB2YWxpZGF0ZWQgYWdhaW5zdCBhIGRpZmZlcmVudCBzdGF0ZVkBYWZ0ZXIgYSByZS1vcmcuIEFzIHRoZSBhY2NlcHRlZCB0cmFuc2FjdGlvbiBzb3VyY2UgaXMgb25seSBsb2NhbCwgaXQgY2Fubm90IGJlIHVzZWQgdG84c3BhbSB0aGUgcG9vbC5oY2FwdHVyZV9lbnRyb3B5X2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAwsWQFPQ1ctZHJpdmVuOiBzZWVkIHRoZSBkcmF3IHdpdGggZnJlc2ggcmFuZG9tbmVzcyBwcm9kdWNlZCBhZnRlciByZWdpc3RyYXRpb24gY2xvc2VkIGFuZLR0cmFuc2l0aW9uIGBBd2FpdGluZ0VudHJvcHkg4oaSIERyYXdXaW5uZXJzYC4ALQFUaGUgYGF1dGhvcml6ZWAgZ2F0ZSBvbmx5IGxldHMgdGhpcyBjYWxsIHRocm91Z2ggb25jZSB0aGUgcmFuZG9tbmVzcyBzb3VyY2UpAXJlcG9ydHMgYSB2YWx1ZSB3aXRoIGEgbW9tZW50IHN0cmljdGx5IGdyZWF0ZXIgdGhhbiB0aGUgd2F0ZXJtYXJrIHJlY29yZGVkAQF3aGVuIHJlZ2lzdHJhdGlvbiBjbG9zZWQ7IHVudGlsIHRoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGludmFsaWQuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlXQFhZnRlciBhIHJlLW9yZywgb3IgaW52YWxpZGF0ZWQgYmVjYXVzZSB0aGUgcmFuZG9tbmVzcyBpcyBub3QgZnJlc2ggeWV0LiBBcyB0aGUgYWNjZXB0ZWQVAXRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0byBzcGFtIHRoZSBwb29sLlxkcmF3X3dpbm5lcnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABCTQT0NXLWRyaXZlbjogZHJhdyB1cCB0byBgRHJhd0xpbWl0YCB3aW5uZXJzIHBlciBjYWxsLgBFAUFmdGVyIGFsbCB0aGUgd2lubmVycyBhcmUgZHJhd24sIHRoZSB0cmFuc2l0aW9uIHRvIGBDbGFpbWluZ2AgaXMgcGVyZm9ybWVkIGJ5IHRoZZBzZXBhcmF0ZSBgY2xvc2VfZHJhd2luZ19hdXRob3JpemVkYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuYGNsb3NlX2RyYXdpbmdfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIABRxRAU9DVy1kcml2ZW46IG9uY2UgYGRyYXdfd2lubmVyc19hdXRob3JpemVkYCBoYXMgZmlsbGVkIHRoZSB3aW5uZXIgc2V0LCB0cmFuc2l0aW9uIHRoZZxldmVudCBmcm9tIGBEcmF3V2lubmVyc2AgdG8gYENsYWltaW5nYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuZGNsb3NlX2NsYWltaW5nX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAYYMQFPQ1ctZHJpdmVuOiBhdCBgZW5kX3RpbWVgIGNsb3NlIGNsYWltaW5nIGFuZCBlbnRlciB0aGUgZmlyc3QgY2xlYW4tdXAgcGhhc2UuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLoRjbGVhbl91cF9yZWdpc3RyYXRpb25zX2F1dGhvcml6ZWQIASBldmVudF9pZAgBHEV2ZW50SWQAATRkaXNjcmltaW5hdG9yOAEMdTMyAAccOQFPQ1ctZHJpdmVuOiBGaXJzdCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIGNsZWFyIHVwIHRvIGBDbGVhckxpbWl0YCBlbnRyaWVzIGZyb21VAWBSZWdpc3RyYXRpb25zYC4gV2hlbiB0aGUgc3RvcmFnZSBpcyBmdWxseSBkcmFpbmVkLCB0cmFuc2l0aW9ucyB0byBgQ2xlYXJpbmdXaW5uZXJzYC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wubGNsZWFuX3VwX3dpbm5lcnNfYXV0aG9yaXplZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABNGRpc2NyaW1pbmF0b3I4AQx1MzIACBw9AU9DVy1kcml2ZW46IFNlY29uZCBzdGVwIG9mIGNsZWFuLXVwIGlzIHRvIGNsZWFyIHVwIHRvIGBDbGVhckxpbWl0YCBlbnRyaWVzIGZyb20pAWBXaW5uZXJzYC4gV2hlbiB0aGUgc3RvcmFnZSBpcyBmdWxseSBkcmFpbmVkLCB0cmFuc2l0aW9ucyB0byBgRmluYWxpemluZ2AuAEUBYGRpc2NyaW1pbmF0b3JgIGlzIGFueSBgdTMyYDsgaXQgbGV0cyB0aGUgT0NXIHNlbmQgYSBkaWZmZXJlbnQgdHJhbnNhY3Rpb24gd2hlbiBhVQFwcmV2aW91cyBvbmUgaXMgYmFubmVkIGJ5IHRoZSBwb29sIGJlY2F1c2UgaXQgd2FzIHZhbGlkYXRlZCBhZ2FpbnN0IGEgZGlmZmVyZW50IHN0YXRlWQFhZnRlciBhIHJlLW9yZy4gQXMgdGhlIGFjY2VwdGVkIHRyYW5zYWN0aW9uIHNvdXJjZSBpcyBvbmx5IGxvY2FsLCBpdCBjYW5ub3QgYmUgdXNlZCB0bzhzcGFtIHRoZSBwb29sLkxmaW5hbGl6ZV9hdXRob3JpemVkCAEgZXZlbnRfaWQIARxFdmVudElkAAE0ZGlzY3JpbWluYXRvcjgBDHUzMgAJHE0BT0NXLWRyaXZlbjogVGhpcmQgc3RlcCBvZiBjbGVhbi11cCBpcyB0byByZWxlYXNlIHRoZSB1bmNsYWltZWQgcHJpemUgYWxsb2NhdGlvbiBhbmREcmVtb3ZlIHRoZSBldmVudC4ARQFgZGlzY3JpbWluYXRvcmAgaXMgYW55IGB1MzJgOyBpdCBsZXRzIHRoZSBPQ1cgc2VuZCBhIGRpZmZlcmVudCB0cmFuc2FjdGlvbiB3aGVuIGFVAXByZXZpb3VzIG9uZSBpcyBiYW5uZWQgYnkgdGhlIHBvb2wgYmVjYXVzZSBpdCB3YXMgdmFsaWRhdGVkIGFnYWluc3QgYSBkaWZmZXJlbnQgc3RhdGVZAWFmdGVyIGEgcmUtb3JnLiBBcyB0aGUgYWNjZXB0ZWQgdHJhbnNhY3Rpb24gc291cmNlIGlzIG9ubHkgbG9jYWwsIGl0IGNhbm5vdCBiZSB1c2VkIHRvOHNwYW0gdGhlIHBvb2wuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuEFDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBR0eXBlcyRFdmVudEluZm8IHEFzc2V0SWQBcQEwQXNzZXRCYWxhbmNlAUUBABABFHByaXpl1QQBjEFpcmRyb3BQcml6ZTxBc3NldElkLCBBc3NldEJhbGFuY2U+AAFMcmVnaXN0cmF0aW9uX3N0YXJ0cygBDHU2NAABJGRyYXdfdGltZSgBDHU2NAABIGVuZF90aW1lKAEMdTY0AADlBQxMaW5kaXZfcGFsbGV0X2hvbm91chhwYWxsZXQQQ2FsbAQEVAABBBhiZXN0b3cIARB2b3Rl6QUBIFZvdGVEYXRhAAE8Y2FsbF92YWxpZF9mcm9tKAEcU2Vjb25kcwAAEDhCZXN0b3cgYSB2b3RlLgBVAUFjY2VwdHMgb25seSB0aGUgW2BPcmlnaW46OlZvdGVyYF0gb3JpZ2luLCB3aGljaCBpcyBjcmVhdGVkIGJ5IHZlcmlmeWluZyBhIHJpbmcgcHJvb2YFAWluIHRoZSBbYFZvdGVyQXV0aGBdKGV4dGVuc2lvbjo6Vm90ZXJBdXRoKSB0cmFuc2FjdGlvbiBleHRlbnNpb24uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukFDExpbmRpdl9wYWxsZXRfaG9ub3VyFHR5cGVzIFZvdGVEYXRhAAAMARxzdWJqZWN0CAEkU3ViamVjdElkAAEUcG9pbnQMARxQb2ludElkAAEkZGlyZWN0aW9u7QUBJERpcmVjdGlvbgAA7QUMTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMkRGlyZWN0aW9uAAEIKEhvbm91cmFibGUAAAA0RGlzaG9ub3VyYWJsZQABAADxBQxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQQQ2FsbAQEVAABGDhzY2hlZHVsZV9kcmF3cwQBFGRyYXdz9QUB2EJvdW5kZWRWZWM8QWlyZHJvcEV2ZW50SW5mb09mPFQ+LCBUOjpNYXhTY2hlZHVsZUJhdGNoPgAAFEkBU2NoZWR1bGUgYSBiYXRjaCBvZiBkcmF3cywgaW4gb3JkZXIsIGFzc2lnbmluZyBlYWNoIHRoZSBuZXh0IGRyYXcgaW5kZXguIFRoZSBwcml6ZVUBYWxsb2NhdGlvbiBvZiBldmVyeSBkcmF3IGlzIHRyYW5zZmVycmVkIGZyb20gW2BDb25maWc6OlByaXplU291cmNlYF0gaW50byB0aGUgYWlyZHJvcBBwb3QuAFUBSWYgYW55IGV2ZW50IGZhaWxzIHRvIGJlIHNjaGVkdWxlZCwgdGhlIHdob2xlIGNhbGwgZmFpbHMgYW5kIG5vIGV2ZW50cyBhcmUgc2NoZWR1bGVkLlRyZW1vdmVfc2NoZWR1bGVkX2RyYXcEASBldmVudF9pZAgBHEV2ZW50SWQAAQxJAVJlbW92ZSBhIHNjaGVkdWxlZCBkcmF3IHRoYXQgaGFzIG5vdCBvcGVuZWQgeWV0LCByZWZ1bmRpbmcgaXRzIHByaXplIGFsbG9jYXRpb24gdG9RAVtgQ29uZmlnOjpQcml6ZVNvdXJjZWBdLiBCZXN0LWVmZm9ydDogYSBuby1vcCBmb3IgYW4gdW5rbm93biBvciBhbHJlYWR5LW9wZW5lZCBkcmF3LjkBVGhlIGRyYXcncyBzYWx0IGlzIGtlcHQsIHNpbmNlIHRoZSBkcmF3IG1heSBzdGlsbCBiZSBsaXZlIChzZWUgW2BEcmF3U2FsdHNgXSkuLGNhbmNlbF9kcmF3BAEgZXZlbnRfaWQIARxFdmVudElkAAIMOQFDYW5jZWwgYSBkcmF3IGluIGFueSBzdGF0ZTogcGFydGljaXBhdGlvbiBhbmQgY2xhaW1zIGNsb3NlIGltbWVkaWF0ZWx5IGFuZCB0aGVFAXN0aWxsLWhlbGQgcHJpemUgYWxsb2NhdGlvbiBpcyByZWZ1bmRlZCB0byBbYENvbmZpZzo6UHJpemVTb3VyY2VgXSBieSB0aGUgYWlyZHJvcCkBY2xlYW4tdXAuIEJlc3QtZWZmb3J0OiBhIG5vLW9wIGZvciBhbiB1bmtub3duIG9yIGFscmVhZHktdGVybWluYXRpbmcgZHJhdy4gcmVnaXN0ZXIEASRldmVudF9pZHP9BQGgQm91bmRlZFZlYzxFdmVudElkLCBUOjpNYXhSZWdpc3RlckJhdGNoPgADFFkBUmVnaXN0ZXIgdGhlIGNhbGxpbmcgcGVyc29uIGZvciBldmVyeSBkcmF3IGluIGBldmVudF9pZHNgLiBBbGwgb3Igbm90aGluZzogYW55IGZhaWx1cmUpASh1bmtub3duIGRyYXcsIGRyYXcgbm90IG9wZW4sIGFscmVhZHkgcmVnaXN0ZXJlZCkgcmV2ZXJ0cyB0aGUgd2hvbGUgYmF0Y2guAD0BRnJlZSBvbiBzdWNjZXNzLiBTdWNjZXNzIGlzIGJvdW5kZWQgdG8gb25lIHJlZ2lzdHJhdGlvbiBwZXIgcGVyc29uIGFuZCBkcmF3LCBzb3ByZXBlYXRlZCBjYWxscyBmYWlsIGFuZCBwYXkuFGNsYWltCAEgZXZlbnRfaWQIARxFdmVudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABBglAUNsYWltIHRoZSBjYWxsaW5nIHBlcnNvbidzIHByaXplIGluIHRoZSBkcmF3IGBldmVudF9pZGAsIHBheWluZyBpdCBvdXQgdG9NAWBkZXN0aW5hdGlvbmAuIE9ubHkgZHJhd24gd2lubmVycyBob2xkIGEgY2xhaW1hYmxlIHByaXplLCBhbmQgb25seSB1bnRpbCB0aGUgZHJhdydzUGNsYWltIHdpbmRvdyBjbG9zZXMuAAEBU3VjY2VzcyBpcyBib3VuZGVkIHRvIG9uZSBjbGFpbSBwZXIgcGVyc29uIGFuZCBkcmF3LCBzbyByZXBlYXRlZExjYWxscyBmYWlsIGFuZCBwYXkuSGNsZWFuX3VwX2RyYXdfc2FsdAQBIGV2ZW50X2lkCAEcRXZlbnRJZAAFGGEBT0NXLWRyaXZlbjogcmVtb3ZlIGEgZHJhdydzIFtgRHJhd1NhbHRzYF0gZW50cnkgb25jZSB0aGUgZHJhdydzIGVuZCB0aW1lIGhhcyBwYXNzZWQuIFRoZVEBc2FsdCBpcyBvbmx5IHJlYWQgZHVyaW5nIHJlZ2lzdHJhdGlvbiwgd2hpY2ggY2xvc2VzIHN0cmljdGx5IGJlZm9yZSB0aGUgZW5kIHRpbWUsIHNvaHRoZSBlbnRyeSBpcyBkZWFkIGJ5IHRoZW4uAEUBVGhlIHRyYW5zYWN0aW9uIGlzIG9ubHkgYWNjZXB0ZWQgZnJvbSBhIGxvY2FsIG9yIGluLWJsb2NrIHNvdXJjZSwgc28gaXQgY2Fubm90IGJlVHN1Ym1pdHRlZCBleHRlcm5hbGx5LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy71BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeEFBFMAAAQA+QUBGFZlYzxUPgAA+QUAAALhBQD9BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABABRBAEYVmVjPFQ+AAABBgxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvcgUGAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3IVBgFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTkAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yGQYBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUGBBhPcHRpb24EBFQBCQYBCBBOb25lAAAAEFNvbWUEAAkGAAABAAAJBghEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBDQYsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAEQYBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAANBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AABEGCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgENBixCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yFQYBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAAAVBgQYT3B0aW9uBARUAQ0GAQgQTm9uZQAAABBTb21lBAANBgAAAQAAGQYIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAEdBgEIIFNwZWNpZmljBAAhBgEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl05AEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3IlBgE8T3B0aW9uPFZlYzx1OD4+AAEAAB0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAIQYAAAIdBgAlBgQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAACkGDFxwYWxsZXRfdmVyaWZ5X3NpZ25hdHVyZSRleHRlbnNpb248VmVyaWZ5U2lnbmF0dXJlBARUAAEIIERpc2FibGVkAAAAGFNpZ25lZAgBJHNpZ25hdHVyZXkEATBUOjpTaWduYXR1cmUAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEAAC0GDExpbmRpdl9wYWxsZXRfcGVvcGxlJGV4dGVuc2lvbiBBc1BlcnNvbgQEVAAABAAxBgFcT3B0aW9uPEFzUGVyc29uSW5mbzxUPj4AADEGBBhPcHRpb24EBFQBNQYBCBBOb25lAAAAEFNvbWUEADUGAAABAAA1BgxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24wQXNQZXJzb25JbmZvBARUAAEUaEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50BAA4ASBUOjpOb25jZQAAAGBBc1BlcnNvbmFsQWxpYXNXaXRoUHJvb2YQAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQAAQBsQXNQZXJzb25hbElkZW50aXR5V2l0aFByb29mCABxBAE4U2lnbmF0dXJlT2Y8VD4AACgBKFBlcnNvbmFsSWQAAgB0QXNQZXJzb25hbElkZW50aXR5V2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAMAhEFzUGVyc29uYWxBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBQAOAEgVDo6Tm9uY2UAAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAAgBHENvbnRleHQABAAAOQYMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmskZXh0ZW5zaW9uXEFzUHJvb2ZPZklua1BhcnRpY2lwYW50BARUAAAEAD0GAZhPcHRpb248QXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvPFQ+PgAAPQYEGE9wdGlvbgQEVAFBBgEIEE5vbmUAAAAQU29tZQQAQQYAAAEAAEEGDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvbmxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudEluZm8EBFQAAQw4QXNBcHBseVdpdGhTaWcEADgBIFQ6Ok5vbmNlAAAAKEFzUmVmZXJyZWQEADgBIFQ6Ok5vbmNlAAEAJEFzSW52aXRlZAQAOAEgVDo6Tm9uY2UAAgAARQYMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25IU2NvcmVBc1BhcnRpY2lwYW50BARUAAAEAEkGAaBPcHRpb248U2NvcmVBc1BhcnRpY2lwYW50RGF0YTxUOjpOb25jZT4+AABJBgQYT3B0aW9uBARUAU0GAQgQTm9uZQAAABBTb21lBABNBgAAAQAATQYMSGluZGl2X3BhbGxldF9zY29yZSRleHRlbnNpb25YU2NvcmVBc1BhcnRpY2lwYW50RGF0YQQUTm9uY2UBOAAEARRub25jZTgBFE5vbmNlAABRBgxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uNEdhbWVBc0ludml0ZWQEBFQAAAQAVQYBcE9wdGlvbjxHYW1lQXNJbnZpdGVkRGF0YTxUPj4AAFUGBBhPcHRpb24EBFQBWQYBCBBOb25lAAAAEFNvbWUEAFkGAAABAABZBgxEaW5kaXZfcGFsbGV0X2dhbWUkZXh0ZW5zaW9uREdhbWVBc0ludml0ZWREYXRhBARUAAAQARRub25jZTgBIFQ6Ok5vbmNlAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAABGHRpY2tldAQBLFRpY2tldE9mPFQ+AAEkc2lnbmF0dXJleQQBSFQ6OlRpY2tldFNpZ25hdHVyZQAAXQYMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb244UGVvcGxlTGl0ZUF1dGgEBFQAAAQAYQYBfE9wdGlvbjxQZW9wbGVMaXRlQXV0aERhdGFPZjxUPj4AAGEGBBhPcHRpb24EBFQBZQYBCBBOb25lAAAAEFNvbWUEAGUGAAABAABlBgxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlJGV4dGVuc2lvbkhQZW9wbGVMaXRlQXV0aERhdGEIFE5vbmNlATgUUHJvb2YBHQQBEDBBc0xpdGVQZXJzb24EADgBFE5vbmNlAAAAWEFzTGl0ZUFsaWFzV2l0aEFjY291bnQEADgBFE5vbmNlAAEAUEFzTGl0ZUFsaWFzV2l0aFByb29mEAAdBAEUUHJvb2YAADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAACAEcQ29udGV4dAACAHRBc0xpdGVBbGlhc1dpdGhBY2NvdW50UmV2aXNlZBQAOAEUTm9uY2UAAB0EARRQcm9vZgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAAIARxDb250ZXh0AAMAAGkGDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24gQXNNZW1iZXIEBFQAAAQAbQYBXE9wdGlvbjxBc01lbWJlckluZm88VD4+AABtBgQYT3B0aW9uBARUAXEGAQgQTm9uZQAAABBTb21lBABxBgAAAQAAcQYMUGluZGl2X3BhbGxldF9tZW1iZXJzJGV4dGVuc2lvbjBBc01lbWJlckluZm8EBFQAAQQsU2VsZkluY2x1ZGUEAHEEAThTaWduYXR1cmVPZjxUPgAAAAB1BgxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UkZXh0ZW5zaW9uJEFzQ29pbmFnZQQEVAAABAB5BgFgT3B0aW9uPEFzQ29pbmFnZUluZm88VD4+AAB5BgQYT3B0aW9uBARUAX0GAQgQTm9uZQAAABBTb21lBAB9BgAAAQAAfQYMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbjRBc0NvaW5hZ2VJbmZvBARUAAEYGEFzQ29pbgAAAExBc1VubG9hZFRva2VuUGVvcGxlEAEUcHJvb2aBBgGwPFQ6Ok1lbWJlcnNoaXBQcm9vZiBhcyBWYWxpZGF0ZVByb29mPjo6UHJvb2YAARhwZXJpb2Q4ARhQZXJpb2QAARxjb3VudGVyOAEMdTMyAAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQBcQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGUQARRwcm9vZoEGAbA8VDo6TWVtYmVyc2hpcFByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgACAERBc1VubG9hZFRva2VuUGFpZBQBFHByb29mHQQBKFByb29mT2Y8VD4AARhwZXJpb2Q4ARhQZXJpb2QAAVRwYWlkX3Rva2VuX3JpbmdfaW5kZXg4AQx1MzIAAWBwYWlkX3Rva2VuX3JpbmdfcmV2aXNpb244AQx1MzIAATBhbGlhc19wcm9vZnMZBAGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgADAFxBc1VubG9hZFRva2VuRnJvbU91dHB1dBQBSGZlZV9yZWN5Y2xlcl92YWx1ZRUEATBEZW5vbWluYXRpb24AAUhmZWVfcmVjeWNsZXJfaW5kZXg4ASRSaW5nSW5kZXgAAVRmZWVfcmVjeWNsZXJfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE0cmV0cnlfY291bnRlcgwBCHU4AAEwYWxpYXNfcHJvb2ZzGQQBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4ABABYSW5mYWxsaWJsZVVucGFpZFNpZ25lZAQBFG5vbmNlOAEgVDo6Tm9uY2UABQAAgQYMTGluZGl2X3BhbGxldF9wZW9wbGUUdHlwZXM8TWVtYmVyc2hpcFByb29mBARUAAAMARRwcm9vZh0EAShQcm9vZk9mPFQ+AAEQcmluZzgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAAAhQYMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uLEFzUmVzb3VyY2VzBARUAAAEAIkGAWhPcHRpb248QXNSZXNvdXJjZXNJbmZvPFQ+PgAAiQYEGE9wdGlvbgQEVAGNBgEIEE5vbmUAAAAQU29tZQQAjQYAAAEAAI0GDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzJGV4dGVuc2lvbjxBc1Jlc291cmNlc0luZm8EBFQAARB0UmVnaXN0ZXJOb3RpZmljYXRpb25XaXRoUHJvb2YMAB0EAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAACEUmVnaXN0ZXJOb3RpZmljYXRpb25Gb3JDb2xsZWN0aW9uEAAdBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAABBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAQB8UmVnaXN0ZXJTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZRAAHQQBKFByb29mT2Y8VD4AADgBJFJpbmdJbmRleAAAOAE0UmV2aXNpb25JbmRleAAAAQQBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAIAUENsYWltTG9uZ1Rlcm1TdG9yYWdlEAAdBAEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAA4ATRSZXZpc2lvbkluZGV4AAABBAFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAwAAkQYMTGluZGl2X3BhbGxldF9ob25vdXIkZXh0ZW5zaW9uJFZvdGVyQXV0aAQEVAAABACVBgFgT3B0aW9uPFZvdGVyQXV0aERhdGE8VD4+AACVBgQYT3B0aW9uBARUAZkGAQgQTm9uZQAAABBTb21lBACZBgAAAQAAmQYMTGluZGl2X3BhbGxldF9ob25vdXIkZXh0ZW5zaW9uNFZvdGVyQXV0aERhdGEEBFQAAAwBFHByb29mHQQBOFJpbmdQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAAAnQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zOGF1dGhvcml6ZV9jYWxsNEF1dGhvcml6ZUNhbGwEBFQAAAAAoQYIfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb244UmVzdHJpY3RPcmlnaW4EBFQAAAQAWQEBEGJvb2wAAKUGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAKkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAACtBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAACxBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAtQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABAC5BgEMRXJhAAC5BhAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AAL0GEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAADBBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAMUGCFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwVQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkRQMBaE9wdGlvbjxDaGFyZ2VBc3NldElkT2Y8VD4+AADJBggwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAc0GABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGHNBgEsQWNjb3VudERhdGEAAM0GDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBRQEAEAEQZnJlZUUBARxCYWxhbmNlAAEgcmVzZXJ2ZWRFAQEcQmFsYW5jZQABGGZyb3plbkUBARxCYWxhbmNlAAEUZmxhZ3PRBgEoRXh0cmFGbGFncwAA0QYMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAEUBARB1MTI4AADVBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAXkCAAwBGG5vcm1hbHkCAQRUAAEsb3BlcmF0aW9uYWx5AgEEVAABJG1hbmRhdG9yeXkCAQRUAADZBgAAAt0GAN0GCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUB4QYEVAE8AAwBFHBoYXNlQQgBFFBoYXNlAAEUZXZlbnThBgEERQABGHRvcGljc0UIARhWZWM8VD4AAOEGCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABpBhTeXN0ZW0EAOUGAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQADQcBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAKFBhcmFtZXRlcnMEABEHAYRwYWxsZXRfcGFyYW1ldGVyczo6RXZlbnQ8UnVudGltZT4ASQA0TmV0d29ya1N1ZmZpeAQAQQcBrGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeDo6RXZlbnQ8UnVudGltZT4ASgAgQmFsYW5jZXMEAEUHAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQAdQcBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALAEhTa2lwRmVlbGVzc1BheW1lbnQEAHkHAaxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAwARE9yaWdpblJlc3RyaWN0aW9uBAB9BwG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXZlbnQ8UnVudGltZT4ADQAYQXNzZXRzBACBBwF0cGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZT4ADgAwQXNzZXRzSG9sZGVyBACFBwGQcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWU+AA8AJEFzc2V0UmF0ZQQAiQcBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgAQADhBc3NldFR4UGF5bWVudAQAjQcBnHBhbGxldF9hc3NldF90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgARADxBc3NldENvbnZlcnNpb24EAJEHAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4AEgAoUG9vbEFzc2V0cwQAnQcB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AEwBEQ29sbGF0b3JTZWxlY3Rpb24EAKEHAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBAClBwF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAqQcBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBACtBwFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAvQcBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIAAwTWVzc2FnZVF1ZXVlBADBBwGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACIAHFV0aWxpdHkEAMkHAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEANEHAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAEFN1ZG8EANUHAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4AKgAUUHJveHkEANkHAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACwAGFBlb3BsZQQA4QcBjGluZGl2X3BhbGxldF9wZW9wbGU6OkV2ZW50PFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAOUHAZRpbmRpdl9wYWxsZXRfbW9iX3J1bGU6OkV2ZW50PFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAO0HAaRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpFdmVudDxSdW50aW1lPgA1ABBHYW1lBADxBwGEaW5kaXZfcGFsbGV0X2dhbWU6OkV2ZW50PFJ1bnRpbWU+ADcAFFNjb3JlBAD1BwGIaW5kaXZfcGFsbGV0X3Njb3JlOjpFdmVudDxSdW50aW1lPgA4AChOZnRDcmVkaXRzBAD5BwGgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzOjpFdmVudDxSdW50aW1lPgA5ACBEdW1teURpbQQABQgBmGluZGl2X3BhbGxldF9kdW1teV9kaW06OkV2ZW50PFJ1bnRpbWU+ADsAKFBlb3BsZUxpdGUEAAkIAaBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGU6OkV2ZW50PFJ1bnRpbWU+AD4AJFJlc291cmNlcwQADQgBmGluZGl2X3BhbGxldF9yZXNvdXJjZXM6OkV2ZW50PFJ1bnRpbWU+AD8ANENodW5rc01hbmFnZXIEABEIAaxpbmRpdl9wYWxsZXRfY2h1bmtzX21hbmFnZXI6OkV2ZW50PFJ1bnRpbWU+AEAAHE1lbWJlcnMEABUIAZBpbmRpdl9wYWxsZXRfbWVtYmVyczo6RXZlbnQ8UnVudGltZT4AQwAcQ29pbmFnZQQAGQgBkGluZGl2X3BhbGxldF9jb2luYWdlOjpFdmVudDxSdW50aW1lPgBEADxNZW1iZXJzTm90aWZpZXIEACEIAbRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllcjo6RXZlbnQ8UnVudGltZT4ARQAcQWlyZHJvcAQAJQgBkGluZGl2X3BhbGxldF9haXJkcm9wOjpFdmVudDxSdW50aW1lPgBGABhIb25vdXIEADEIAYxpbmRpdl9wYWxsZXRfaG9ub3VyOjpFdmVudDxSdW50aW1lPgBHADhQZW9wbGVBaXJkcm9wcwQAOQgBsGluZGl2X3BhbGxldF9wZW9wbGVfYWlyZHJvcHM6OkV2ZW50PFJ1bnRpbWU+AEgAUE11bHRpQmxvY2tNaWdyYXRpb25zBAA9CAGEcGFsbGV0X21pZ3JhdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AGIAAOUGDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv6QYBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcvUGATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb+kGAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2g8ARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2g8ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvblkBARBib29sAAYEaEFuIHVwZ3JhZGUgd2FzIGF1dGhvcml6ZWQugFJlamVjdGVkSW52YWxpZEF1dGhvcml6ZWRVcGdyYWRlCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABFGVycm9y9QYBNERpc3BhdGNoRXJyb3IABwQRAUFuIGludmFsaWQgYXV0aG9yaXplZCB1cGdyYWRlIHdhcyByZWplY3RlZCB3aGlsZSB0cnlpbmcgdG8gYXBwbHkgaXQuBHBFdmVudCBmb3IgdGhlIFN5c3RlbSBwYWxsZXQu6QYIMGZyYW1lX3N5c3RlbUREaXNwYXRjaEV2ZW50SW5mbwAADAEYd2VpZ2h0eQIBGFdlaWdodAABFGNsYXNz7QYBNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZfEGARBQYXlzAADtBgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaDREaXNwYXRjaENsYXNzAAEMGE5vcm1hbAAAACxPcGVyYXRpb25hbAABACRNYW5kYXRvcnkAAgAA8QYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAA9QYIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABPBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQA+QYBLE1vZHVsZUVycm9yAAMARENvbnN1bWVyUmVtYWluaW5nAAQALE5vUHJvdmlkZXJzAAUAQFRvb01hbnlDb25zdW1lcnMABgAUVG9rZW4EAP0GAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAAEHATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQABQcBSFRyYW5zYWN0aW9uYWxFcnJvcgAJACRFeGhhdXN0ZWQACgAoQ29ycnVwdGlvbgALACxVbmF2YWlsYWJsZQAMADhSb290Tm90QWxsb3dlZAANABBUcmllBAAJBwEkVHJpZUVycm9yAA4AAPkGCChzcF9ydW50aW1lLE1vZHVsZUVycm9yAAAIARRpbmRleAwBCHU4AAEUZXJyb3JwAYxbdTg7IE1BWF9NT0RVTEVfRVJST1JfRU5DT0RFRF9TSVpFXQAA/QYIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAAQcINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAAFBwgoc3BfcnVudGltZUhUcmFuc2FjdGlvbmFsRXJyb3IAAQgwTGltaXRSZWFjaGVkAAAAHE5vTGF5ZXIAAQAACQcMKHNwX3J1bnRpbWUwcHJvdmluZ190cmllJFRyaWVFcnJvcgABOEBJbnZhbGlkU3RhdGVSb290AAAASEluY29tcGxldGVEYXRhYmFzZQABAFBWYWx1ZUF0SW5jb21wbGV0ZUtleQACADBEZWNvZGVyRXJyb3IAAwAsSW52YWxpZEhhc2gABAAwRHVwbGljYXRlS2V5AAUAOEV4dHJhbmVvdXNOb2RlAAYAPEV4dHJhbmVvdXNWYWx1ZQAHAFxFeHRyYW5lb3VzSGFzaFJlZmVyZW5jZQAIAFRJbnZhbGlkQ2hpbGRSZWZlcmVuY2UACQA0VmFsdWVNaXNtYXRjaAAKADxJbmNvbXBsZXRlUHJvb2YACwAwUm9vdE1pc21hdGNoAAwALERlY29kZUVycm9yAA0AAA0HDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtOAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50OAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZHkCARhXZWlnaHQAASBkbXFfaGVhZDwBRHJlbGF5X2NoYWluOjpIYXNoAAQE4ERvd253YXJkIG1lc3NhZ2VzIHdlcmUgcHJvY2Vzc2VkIHVzaW5nIHRoZSBnaXZlbiB3ZWlnaHQuRFVwd2FyZE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoZQUBPE9wdGlvbjxYY21IYXNoPgAFBLhBbiB1cHdhcmQgbWVzc2FnZSB3YXMgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQcMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5FQcBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZSkHAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlKQcB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVBwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEQQFN0YXRlbWVudFN0b3JhZ2UEABkHAckBPGR5bmFtaWNfcGFyYW1zOjpzdGF0ZW1lbnRfc3RvcmFnZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAPEJ1bGxldGluU3RvcmFnZQQAHQcBxQE8ZHluYW1pY19wYXJhbXM6OmJ1bGxldGluX3N0b3JhZ2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQABADhQZW9wbGVBaXJkcm9wcwQAIQcBwQE8ZHluYW1pY19wYXJhbXM6OnBlb3BsZV9haXJkcm9wczo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAIAOExpdGVQZXJzb25ob29kBAAlBwHBATxkeW5hbWljX3BhcmFtczo6bGl0ZV9wZXJzb25ob29kOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAwAAGQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0RzdGF0ZW1lbnRfc3RvcmFnZTRQYXJhbWV0ZXJzS2V5AAEwUEFjY291bnRzQXBpQWxsb3dhbmNlBADIAVBBY2NvdW50c0FwaUFsbG93YW5jZQAAAFROb3RpZmljYXRpb25BbGxvd2FuY2UEANQBVE5vdGlmaWNhdGlvbkFsbG93YW5jZQAGAGBMaXRlUGVyc29uU3RhdGVtZW50TGltaXQEANgBYExpdGVQZXJzb25TdGF0ZW1lbnRMaW1pdAAKAFBQZXJzb25TdGF0ZW1lbnRMaW1pdAQA3AFQUGVyc29uU3RhdGVtZW50TGltaXQACwBcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2QEAOABXFN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAQA6AFsTGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kAAIAVFN0bXRTdG9yZUNsZWFudXBMaW1pdAQA7AFUU3RtdFN0b3JlQ2xlYW51cExpbWl0AAMAcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24EAPABcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24ABABQU3RtdFN0b3JlR3JhY2VXaW5kb3cEAPQBUFN0bXRTdG9yZUdyYWNlV2luZG93AAUAaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kBAD4AWhOb3RpZmljYXRpb25TbG90c1BlclBlcmlvZAAHAHhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAEBAXhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QACABoTm90aWZpY2F0aW9uUGVyaW9kRHVyYXRpb24EAAUBAWhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbgAJAAAdBxRkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzOGR5bmFtaWNfcGFyYW1zQGJ1bGxldGluX3N0b3JhZ2U0UGFyYW1ldGVyc0tleQABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbgQADQEBdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uAAAAaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93BAARAQFoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3cAAQB4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kBAAVAQF4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kAAIAbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAQAGQEBbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdAADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUEAB0BAYRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUABACUTG9uZ1Rlcm1TdG9yYWdlQWxsb3dhbmNlRm9yTGl0ZVBlb3BsZQQAKQEBlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUABQAAIQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxwZW9wbGVfYWlyZHJvcHM0UGFyYW1ldGVyc0tleQABBCxQcml6ZVNvdXJjZQQAMQEBLFByaXplU291cmNlAAAAACUHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8bGl0ZV9wZXJzb25ob29kNFBhcmFtZXRlcnNLZXkAAQQ8UmVnaXN0cmF0aW9uRmVlBAA9AQE8UmVnaXN0cmF0aW9uRmVlAAAAACkHBBhPcHRpb24EBFQBLQcBCBBOb25lAAAAEFNvbWUEAC0HAAABAAAtBwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZShwYXJhbWV0ZXJzWFJ1bnRpbWVQYXJhbWV0ZXJzVmFsdWUAARBAU3RhdGVtZW50U3RvcmFnZQQAMQcB0QE8ZHluYW1pY19wYXJhbXM6OnN0YXRlbWVudF9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAADxCdWxsZXRpblN0b3JhZ2UEADUHAc0BPGR5bmFtaWNfcGFyYW1zOjpidWxsZXRpbl9zdG9yYWdlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQABADhQZW9wbGVBaXJkcm9wcwQAOQcByQE8ZHluYW1pY19wYXJhbXM6OnBlb3BsZV9haXJkcm9wczo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgA4TGl0ZVBlcnNvbmhvb2QEAD0HAckBPGR5bmFtaWNfcGFyYW1zOjpsaXRlX3BlcnNvbmhvb2Q6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAMAADEHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXNEc3RhdGVtZW50X3N0b3JhZ2U8UGFyYW1ldGVyc1ZhbHVlAAEwUEFjY291bnRzQXBpQWxsb3dhbmNlBADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIAAABUTm90aWZpY2F0aW9uQWxsb3dhbmNlBADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIABgBgTGl0ZVBlcnNvblN0YXRlbWVudExpbWl0BADQAWxTdGF0ZW1lbnRBbGxvd2FuY2VQYXJhbWV0ZXIACgBQUGVyc29uU3RhdGVtZW50TGltaXQEANABbFN0YXRlbWVudEFsbG93YW5jZVBhcmFtZXRlcgALAFxTdG10U3RvcmVTbG90c1BlclBlcmlvZAQAOAEMdTMyAAEAbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZAQAOAEMdTMyAAIAVFN0bXRTdG9yZUNsZWFudXBMaW1pdAQAOAEMdTMyAAMAcFN0bXRTdG9yZVJlcGxhY2VtZW50Q29vbGRvd24EADgBDHUzMgAEAFBTdG10U3RvcmVHcmFjZVdpbmRvdwQAOAEMdTMyAAUAaE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kBAAMAQh1OAAHAHhMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2QEAAwBCHU4AAgAaE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uBAA4AQx1MzIACQAANQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtc0BidWxsZXRpbl9zdG9yYWdlPFBhcmFtZXRlcnNWYWx1ZQABGHRMb25nVGVybVN0b3JhZ2VQZXJpb2REdXJhdGlvbgQAOAEMdTMyAAAAaExvbmdUZXJtU3RvcmFnZUdyYWNlV2luZG93BAA4AQx1MzIAAQB4TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kBAAMAQh1OAACAGxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXQEADgBDHUzMgADAIRMb25nVGVybVN0b3JhZ2VBbGxvd2FuY2VGb3JQZW9wbGUEACUBAWRMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uAAQAlExvbmdUZXJtU3RvcmFnZUFsbG93YW5jZUZvckxpdGVQZW9wbGUEACUBAWRMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uAAUAADkHFGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lKHBhcmFtZXRlcnM4ZHluYW1pY19wYXJhbXM8cGVvcGxlX2FpcmRyb3BzPFBhcmFtZXRlcnNWYWx1ZQABBCxQcml6ZVNvdXJjZQQABAFcc3BfcnVudGltZTo6QWNjb3VudElkMzIAAAAAPQcUZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUocGFyYW1ldGVyczhkeW5hbWljX3BhcmFtczxsaXRlX3BlcnNvbmhvb2Q8UGFyYW1ldGVyc1ZhbHVlAAEEPFJlZ2lzdHJhdGlvbkZlZQQARQEBHEJhbGFuY2UAAAAAQQcMbGluZGl2X3BhbGxldF9uZXR3b3JrX3N1ZmZpeBhwYWxsZXQURXZlbnQEBFQAAQRATmV0d29ya1N1ZmZpeFNldAgBDG9sZE0BAWxQcm9kdWN0Q29udGV4dE5ldHdvcmtTdWZmaXgAAQxuZXdNAQFsUHJvZHVjdENvbnRleHROZXR3b3JrU3VmZml4AAAEbFRoZSBuZXR3b3JrIHN1ZmZpeCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUHDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVlRQEBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c0kHARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudEUBAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZEUBAShUOjpCYWxhbmNlAAEMbmV3RQEBKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29uTQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbk0HAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb25NBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb25NBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWRFAQEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29uTQcBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAHEHAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEkHFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAATQcIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AASAcU2Vzc2lvbgQAUQcBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBABVBwFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfABxNb2JSdWxlBABZBwGEaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpIb2xkUmVhc29uADQAKFByb29mT2ZJbmsEAF0HAZRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpIb2xkUmVhc29uADUAEEdhbWUEAGEHAXRpbmRpdl9wYWxsZXRfZ2FtZTo6SG9sZFJlYXNvbgA3ABRTY29yZQQAZQcBeGluZGl2X3BhbGxldF9zY29yZTo6SG9sZFJlYXNvbgA4ABxDb2luYWdlBABpBwGAaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkhvbGRSZWFzb24ARAAcQWlyZHJvcAQAbQcBgGluZGl2X3BhbGxldF9haXJkcm9wOjpIb2xkUmVhc29uAEYAAFEHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAFUHDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAFkHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAABdBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoSG9sZFJlYXNvbgABBChQcm9vZk9mSW5rAAAAAGEHDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQoSG9sZFJlYXNvbgABBCxQbGF5RGVwb3NpdAAAAABlBwxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldChIb2xkUmVhc29uAAEIGFBheW91dAAAABhDcmVkaXQAAQAAaQcMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChIb2xkUmVhc29uAAEMHFdyYXBwZWQAAAAsTG9hZERlcG9zaXQAAQBcSW5zdGFuY2VDcmVhdGlvbkRlcG9zaXQAAgAAbQcMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldChIb2xkUmVhc29uAAEEHEFpcmRyb3AAAAAAcQcMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAHUHDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZUUBATBCYWxhbmNlT2Y8VD4AAQx0aXBFAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHkHDGxwYWxsZXRfc2tpcF9mZWVsZXNzX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEEKEZlZVNraXBwZWQEARhvcmlnaW7RAwHAPFQ6OlJ1bnRpbWVPcmlnaW4gYXMgT3JpZ2luVHJhaXQ+OjpQYWxsZXRzT3JpZ2luAAAEeEEgdHJhbnNhY3Rpb24gZmVlIHdhcyBza2lwcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0HDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHlpAQFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQcMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlRQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZHEBAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZUUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZHEBAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAASByZXNlcnZlc7UBAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZHEBAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUHDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkcQEBKFQ6OkFzc2V0SWQAARhyZWFzb25NBwFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRFAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvbk0HAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YC4YQnVybmVkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWRxAQEoVDo6QXNzZXRJZAABGHJlYXNvbk0HAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJBwxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABEHJhdGW9AQEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kcQEBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZHEBATBUOjpBc3NldEtpbmQAAQxvbGS9AQEkRml4ZWRVMTI4AAEMbmV3vQEBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldI0HDFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQ4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEMdGlwRQEBREFzc2V0QmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRFAwFoT3B0aW9uPENoYXJnZUFzc2V0SWRPZjxUPj4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSRBwxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEV2ZW50BARUAAEYLFBvb2xDcmVhdGVkEAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZASIVGhlIGFjY291bnQgdGhhdCBjcmVhdGVkIHRoZSBwb29sLgEccG9vbF9pZJUHASRUOjpQb29sSWQISQFUaGUgcG9vbCBpZCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wuIE5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGFzc2V0cyBtYXkgbm90IGJl9HRoZSBzYW1lIGFzIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gdGhlIGNyZWF0ZSBwb29sIGV4dHJpbnNpYy4BMHBvb2xfYWNjb3VudAQBMFQ6OkFjY291bnRJZARsVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkCEEBVGhlIGlkIG9mIHRoZSBsaXF1aWRpdHkgdG9rZW5zIHRoYXQgd2lsbCBiZSBtaW50ZWQgd2hlbiBhc3NldHMgYXJlIGFkZGVkIHRvIHRoaXMUcG9vbC4ABB0BQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBDcmVhdGVQb29sYCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC44TGlxdWlkaXR5QWRkZWQcAQx3aG8EATBUOjpBY2NvdW50SWQEuFRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgdGFrZW4gZnJvbS4BHG1pbnRfdG8EATBUOjpBY2NvdW50SWQE1FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBtaW50ZWQgdG8uARxwb29sX2lklQcBJFQ6OlBvb2xJZATgVGhlIHBvb2wgaWQgb2YgdGhlIHBvb2wgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyBhZGRlZCB0by4BQGFtb3VudDFfcHJvdmlkZWRFAQEoVDo6QmFsYW5jZQTkVGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuAUBhbW91bnQyX3Byb3ZpZGVkRQEBKFQ6OkJhbGFuY2UE6FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgbWludGVkLgE8bHBfdG9rZW5fbWludGVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBtaW50ZWQgb2YgdGhhdCBpZC4BBCUBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBBZGRMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LkBMaXF1aWRpdHlSZW1vdmVkIAEMd2hvBAEwVDo6QWNjb3VudElkBNxUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgYnVybmVkIGZyb20uASx3aXRoZHJhd190bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uARxwb29sX2lklQcBJFQ6OlBvb2xJZATAVGhlIHBvb2wgaWQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyByZW1vdmVkIGZyb20uARxhbW91bnQxRQEBKFQ6OkJhbGFuY2UE9FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BHGFtb3VudDJFAQEoVDo6QmFsYW5jZQT4VGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgYnVybmVkLgE8bHBfdG9rZW5fYnVybmVkRQEBKFQ6OkJhbGFuY2UE0FRoZSBhbW91bnQgb2YgbHAgdG9rZW5zIHRoYXQgd2VyZSBidXJuZWQgb2YgdGhhdCBpZC4BOHdpdGhkcmF3YWxfZmVl2QQBHFBlcm1pbGwEdExpcXVpZGl0eSB3aXRoZHJhd2FsIGZlZSAoJSkuAgQxAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgUmVtb3ZlTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC4wU3dhcEV4ZWN1dGVkFAEMd2hvBAEwVDo6QWNjb3VudElkBLRXaGljaCBhY2NvdW50IHdhcyB0aGUgaW5zdGlnYXRvciBvZiB0aGUgc3dhcC4BHHNlbmRfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiZBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQMINQFBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLiBCb3RoIGBTd2FwRXhhY3RUb2tlbkZvclRva2VuYNhhbmQgYFN3YXBUb2tlbkZvckV4YWN0VG9rZW5gIHdpbGwgZ2VuZXJhdGUgdGhpcyBldmVudC5IU3dhcENyZWRpdEV4ZWN1dGVkDAEkYW1vdW50X2luRQEBKFQ6OkJhbGFuY2UEvFRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIHN3YXBwZWQuAShhbW91bnRfb3V0RQEBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGiZBwE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQQEvEFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuHFRvdWNoZWQIARxwb29sX2lklQcBJFQ6OlBvb2xJZARMVGhlIElEIG9mIHRoZSBwb29sLgEMd2hvBAEwVDo6QWNjb3VudElkBIRUaGUgYWNjb3VudCBpbml0aWF0aW5nIHRoZSB0b3VjaC4FBA0BUG9vbCBoYXMgYmVlbiB0b3VjaGVkIGluIG9yZGVyIHRvIGZ1bGZpbGwgb3BlcmF0aW9uYWwgcmVxdWlyZW1lbnRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJUHAAAECHEBcQEAmQcAAALBBQCdBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZUUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VFAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVz0QEBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRFAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50RQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudEUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKEHDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFdmVudAQEVAABKEBOZXdJbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc10BAURWZWM8VDo6QWNjb3VudElkPgAABGxOZXcgSW52dWxuZXJhYmxlcyB3ZXJlIHNldC5ESW52dWxuZXJhYmxlQWRkZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEEdEEgbmV3IEludnVsbmVyYWJsZSB3YXMgYWRkZWQuTEludnVsbmVyYWJsZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAIEcEFuIEludnVsbmVyYWJsZSB3YXMgcmVtb3ZlZC5QTmV3RGVzaXJlZENhbmRpZGF0ZXMEAUhkZXNpcmVkX2NhbmRpZGF0ZXM4AQx1MzIAAwSkVGhlIG51bWJlciBvZiBkZXNpcmVkIGNhbmRpZGF0ZXMgd2FzIHNldC5ATmV3Q2FuZGlkYWN5Qm9uZAQBLGJvbmRfYW1vdW50RQEBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABQRcQSBuZXcgY2FuZGlkYXRlIGpvaW5lZC5QQ2FuZGlkYXRlQm9uZFVwZGF0ZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdEUBATBCYWxhbmNlT2Y8VD4ABgRwQm9uZCBvZiBhIGNhbmRpZGF0ZSB1cGRhdGVkLkBDYW5kaWRhdGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAHBGBBIGNhbmRpZGF0ZSB3YXMgcmVtb3ZlZC5EQ2FuZGlkYXRlUmVwbGFjZWQMAQxvbGQEATBUOjpBY2NvdW50SWQAAQxuZXcEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUHDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkHDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldK0HDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21lsQcBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lucQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARxtZXNzYWdlAQMBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAABBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC4oU2VuZEZhaWxlZBABGG9yaWdpbnEBASBMb2NhdGlvbgABLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEUZXJyb3K5BwEkU2VuZEVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAgR4QW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHNlbmQuPFByb2Nlc3NYY21FcnJvcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABFGVycm9yMQMBIFhjbUVycm9yAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAwSEQW4gWENNIG1lc3NhZ2UgZmFpbGVkIHRvIHByb2Nlc3MuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2UlAwEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodHkCARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h0eQIBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9uRQMBQE9wdGlvbjxMb2NhdGlvbj4ACgxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAALHFEBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBvcmlnaW4gbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjRSZXNwb25zZVRha2VuBAEgcXVlcnlfaWQoARxRdWVyeUlkAAwEyFJlY2VpdmVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlYWQgYW5kIHJlbW92ZWQuNEFzc2V0c1RyYXBwZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbnEBASBMb2NhdGlvbgABGGFzc2V0c30DATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABGHJlc3VsdDgBKFhjbVZlcnNpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoAA4MJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9ucQEBIExvY2F0aW9uAAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ADwg5AVRoZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQuIFRoaXMgbWlnaHQgYmUgdGhyb3VnaCBhbsBhdXRvbWF0aWMgbm90aWZpY2F0aW9uIG9yIGEgbWFudWFsIGludGVydmVudGlvbi5QTm90aWZ5VGFyZ2V0U2VuZEZhaWwMASBsb2NhdGlvbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9yMQMBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbu0BAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbnEBASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAASHFUBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBleHBlY3RlZCBxdWVyaWVyIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC44SW52YWxpZFF1ZXJpZXIQARhvcmlnaW5xAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAUBleHBlY3RlZF9xdWVyaWVycQEBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJFAwFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb25xAQEgTG9jYXRpb24AARBjb3N0DQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABQIWQFBIHJlbW90ZSBoYXMgcmVxdWVzdGVkIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gZnJvbSB1cyBhbmQgd2UgaGF2ZSBob25vcmVkIGl0Lh0BQSB2ZXJzaW9uIGluZm9ybWF0aW9uIG1lc3NhZ2UgaXMgc2VudCB0byB0aGVtIGFuZCBpdHMgY29zdCBpcyBpbmNsdWRlZC5YVmVyc2lvbk5vdGlmeVJlcXVlc3RlZAwBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEQY29zdA0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAVBD0BV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzZW5kIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb25zLmBWZXJzaW9uTm90aWZ5VW5yZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbnEBASBMb2NhdGlvbgABEGNvc3QNAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmdxAQEgTG9jYXRpb24AARBmZWVzDQMBGEFzc2V0cwAXBDEBRmVlcyB3ZXJlIHBhaWQgZnJvbSBhIGxvY2F0aW9uIGZvciBhbiBvcGVyYXRpb24gKG9mdGVuIGZvciB1c2luZyBgU2VuZFhjbWApLjRBc3NldHNDbGFpbWVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW5xAQEgTG9jYXRpb24AARhhc3NldHN9AwE8VmVyc2lvbmVkQXNzZXRzABgEwFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBjbGFpbWVkIGZyb20gYW4gYXNzZXQgdHJhcGBWZXJzaW9uTWlncmF0aW9uRmluaXNoZWQEARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAZBIRBIFhDTSB2ZXJzaW9uIG1pZ3JhdGlvbiBmaW5pc2hlZC48QWxpYXNBdXRob3JpemVkDAEcYWxpYXNlcnEBASBMb2NhdGlvbgABGHRhcmdldHEBASBMb2NhdGlvbgABGGV4cGlyebUDASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXJxAQEgTG9jYXRpb24AARh0YXJnZXRxAQEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXRxAQEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZHkCARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWR5AgEYV2VpZ2h0AAEUZXJyb3K1BwFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQAtQcBQEluc3RydWN0aW9uRXJyb3IAAgAAtQcQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcjEDARRFcnJvcgAAuQcQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAvQcMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAAsQcBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEHDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LFBwFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luwQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWR5AgEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7BAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUHEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEAHkCARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAyQcMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcvUGATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcvUGATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcvUGATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0HBBhSZXN1bHQIBFQBEARFAfUGAQgIT2sEABAAAAAADEVycgQA9QYAAAEAANEHDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50OQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQ5BAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDkEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRFAQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNUHDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdM0HAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAARwQSBzdWRvIGNhbGwganVzdCB0b29rIHBsYWNlLihLZXlDaGFuZ2VkCAEMb2xkNQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+BLRUaGUgb2xkIHN1ZG8ga2V5IChpZiBvbmUgd2FzIHByZXZpb3VzbHkgc2V0KS4BDG5ldwQBMFQ6OkFjY291bnRJZASIVGhlIG5ldyBzdWRvIGtleSAoaWYgb25lIHdhcyBzZXQpLgEEeFRoZSBzdWRvIGtleSBoYXMgYmVlbiB1cGRhdGVkLihLZXlSZW1vdmVkAAIEgFRoZSBrZXkgd2FzIHBlcm1hbmVudGx5IHJlbW92ZWQuKFN1ZG9Bc0RvbmUEASxzdWRvX3Jlc3VsdM0HAThEaXNwYXRjaFJlc3VsdAS0VGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBtYWRlIGJ5IHRoZSBzdWRvIHVzZXIuAwTIQSBbc3Vkb19hc10oUGFsbGV0OjpzdWRvX2FzKSBjYWxsIGp1c3QgdG9vayBwbGFjZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTZBwwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0zQcBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVJBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjNAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4zQMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZUkEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlSQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZN0HASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0RQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV03QcIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA4QcMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEV2ZW50BARUAAEoUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvKAEoUGVyc29uYWxJZAABDGtleQgBLE1lbWJlck9mPFQ+AAAE+EFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuQFBlcnNvbk9uYm9hcmRpbmcIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQQRAUFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYWdhaW4gYW5kIGluZGV4ZWQuPEFsaWFzRGlzcGF0Y2hlZAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgSUQSBjYWxsIHdhcyBkaXNwYXRjaGVkIHVuZGVyIGFuIGFsaWFzLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXPpAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuUFBlcnNvbmFsSWRBY2NvdW50U2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQTQQSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLlhQZXJzb25hbElkQWNjb3VudFVuc2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABgS0QSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEiFRoZSBwZW9wbGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC5kRm9yY2VQZXJzb25ob29kUmVjb2duaXplZAQBGHBlb3BsZVEEAUBWZWM8TWVtYmVyT2Y8VD4+AAgEtFBlcnNvbmhvb2Qgd2FzIGZvcmNlZnVsbHkgcmVjb2duaXplZCBieSByb290LjhBbGlhc0NsZWFuZWRVcAgBFGFsaWFz6QMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQACQSsQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOUHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEV2ZW50BARUAAFELENhc2VDcmVhdGVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASAVGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY3JlYXRlZC4ABGBBIGNhc2UgaGFzIGJlZW4gY3JlYXRlZC4gQ2FsbGJhY2sEARhyZXN1bHTNBwE4RGlzcGF0Y2hSZXN1bHQEbFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLgEEnEEgY2FsbGJhY2sgd2FzIHRyaWdnZXJlZCBmcm9tIG1vYi1ydWxlLjRDYWxsYmFja0Vycm9yCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASkVGhlIGNhc2Ugd2hvc2UgY2FsbGJhY2sgZmFpbGVkIHRvIGRlY29kZS4BHHRyaWdnZXLpBwE8Q2FsbGJhY2tUcmlnZ2VyBBEBVGhlIG1vYi1ydWxlIGV4dHJpbnNpYyBjYWxsIHdoaWNoIGF0dGVtcHRlZCB0byB0cmlnZ2VyIHRoZSBjYWxsYmFjay4CBAEBVGhlcmUgd2FzIGEgY29kZWMgZXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVjb2RlIHRoZSBjYWxsYmFjayBjYWxsLihDYXNlQ2xvc2VkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAR8VGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY2xvc2VkLgEcdmVyZGljdGEEASRKdWRnZW1lbnQEfFRoZSB2ZXJkaWN0IG9mIHRoZSBjbG9zZWQgY2FzZS4DBMxUaGUgY2FzZSBoYXMgYmVlbiBjbG9zZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJlc3VsdC4UVm90ZWQMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEcb3BpbmlvbmEEASRKdWRnZW1lbnQEZFRoZSBvcGluaW9uIG9mIHRoZSB2b3Rlci4EBIRBIHZvdGUgaGFzIGJlZW4gcGxhY2VkIG9uIGEgY2FzZS4sVm90ZUNsZWFuZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgUEYEEgdm90ZSBoYXMgYmVlbiBjbGVhbmVkLixDYXNlUmVtb3ZlZAQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgYEYEEgY2FzZSBoYXMgYmVlbiByZW1vdmVkLjhDYXNlSW50ZXJ2ZW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEiFRoZSBjYXNlIHRoYXQgaGFzIGJlZW4gaW50ZXJ2ZW5lZC4BHHZlcmRpY3RhBAEkSnVkZ2VtZW50BIBUaGUgdmVyZGljdCBhcHBsaWVkIHRvIHRoZSBjYXNlLgcEbEEgY2FzZSBoYXMgYmVlbiBpbnRlcnZlbmVkLjBWb3Rlc0NsYWltZWQIARR2b3RlcggBFEFsaWFzBFRUaGUgYWxpYXMgdGhhdCB2b3RlZC4BMGNhc2VfaW5kaWNlc2kEAThWZWM8Q2FzZUluZGV4PgSIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLggEkENyZWRpdHMgZm9yIHZvdGVzIGhhdmUgYmVlbiBjbGFpbWVkLjBSZXdhcmRQYXlvdXQMARR2b3RlcggBFEFsaWFzBHxUaGUgYWxpYXMgdGhhdCBlYXJuZWQgYSByZXdhcmQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAScVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBwYXlvdXQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BJxUaGUgcGF5b3V0IGFtb3VudCB0aGF0IHdhcyB0cmFuc2ZlcnJlZC4JBIBBIHJld2FyZCB0aGF0IGhhcyBiZWVuIHBhaWQgb3V0LkhQYXlvdXRSb3VuZFN0YXJ0ZWQMARRyb3VuZDgBKFJvdW5kSW5kZXgEiFRoZSBpbmRleCBvZiB0aGUgbmV3IHBheW91dCByb3VuZC4BPGluaXRpYWxfYmFsYW5jZUUBATBCYWxhbmNlT2Y8VD4EsFRoZSBpbml0aWFsIGJhbGFuY2UgYWxsb2NhdGVkIGZvciB0aGUgcm91bmQuATB0b3RhbF9wb2ludHMoASRWb3RlQ291bnQExFRvdGFsIGFjY3VtdWxhdGVkIHBvaW50cyBjbGFpbWFibGUgaW4gdGhpcyByb3VuZC4KBJBBIG5ldyBwYXlvdXQgcm91bmQgaGFzIGJlZW4gc3RhcnRlZC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50RQEBMEJhbGFuY2VPZjxUPgR4VGhlIGFtb3VudCBvZiBmdW5kcyBwZXIgcm91bmQuARRjb3VudDgBDHUzMgR8VGhlIG51bWJlciBvZiByb3VuZHMgc2NoZWR1bGVkLgEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4EuFRoZSBtaW5pbXVtIHBlcmlvZCAoaW4gYmxvY2tzKSBiZXR3ZWVuIHJvdW5kcy4LBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuDASMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC40Q3JlZGl0Q2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEjFRoZSBhbGlhcyBvZiB0aGUgdm90ZXIgd2hvIGNsYWltZWQuARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BHRUaGUgYW1vdW50IG9mIGNyZWRpdCBjbGFpbWVkLg0E1ENyZWRpdCBoYXMgYmVlbiBjbGFpbWVkIGZyb20gdGhlIHBheW91dCBkaXN0cmlidXRpb24uNFBvaW50c0NsZWFuZWQIARRyb3VuZDgBKFJvdW5kSW5kZXgEvFRoZSByb3VuZCBpbmRleCBmcm9tIHdoaWNoIHBvaW50cyB3ZXJlIHJlbW92ZWQuARR2b3RlcggBFEFsaWFzBJBUaGUgYWxpYXMgd2hvc2UgcG9pbnRzIHdlcmUgcmVtb3ZlZC4OBJhTdGFsZSB2b3RpbmcgcG9pbnRzIGhhdmUgYmVlbiBjbGVhbmVkLixDYXNlVG91Y2hlZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEaFRoZSBjYXNlIHRoYXQgd2FzIHRvdWNoZWQuARxyaXBlbmVkWQEBEGJvb2wEpFdoZXRoZXIgdGhlIGNhc2Ugd2FzIHJpcGVuZWQgYXMgYSByZXN1bHQuDwScQSBjYXNlIGhhcyBiZWVuIHRvdWNoZWQgKHJlLWV2YWx1YXRlZCkuUFZvdGluZ1BlbmFsdHlDbGVhcmVkBAEMd2hvCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwZW5hbHR5IHdhcyBjbGVhcmVkLhAEiEEgdm90aW5nIHBlbmFsdHkgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpBwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDxDYWxsYmFja1RyaWdnZXIAAQgkQ2xvc2VDYXNlAAAAJEludGVydmVuZQABAADtBwxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQURXZlbnQEBFQAAVxAQ2FuZGlkYXRlQXBwbGllZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAASMQ2FuZGlkYXRlIGFwcGxpZWQgZm9yIHZlcmlmaWNhdGlvbi5ISnVkZ2VtZW50UmVxdWVzdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBAUBQ2FuZGlkYXRlIG9wZW5lZCBhIE1vYiBSdWxlIGNhc2UgZm9yIHRoZWlyIHZlcmlmaWNhdGlvbiBldmlkZW5jZS5ESnVkZ2VtZW50UHJvdmlkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEkanVkZ2VtZW50YQQBJEp1ZGdlbWVudAACBNhPcmFjbGUgaGFzIHByb3ZpZGVkIHRoZSBqdWRnZW1lbnQgZm9yIGEgTW9iIFJ1bGUgY2FzZS4wUmV0cnlHcmFudGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIGZhaWx1cmVzOAEMdTMyAAMIRQFBIGNhbmRpZGF0ZSBoYXMgYmVlbiBncmFudGVkIGEgZnJlZSByZXRyeSBhdHRlbXB0IGFmdGVyIGEgZmFpbHVyZSB0byB2ZXJpZnkgdGhlaXIkZXZpZGVuY2UuQFBlcnNvblJlZ2lzdGVyZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEscGVyc29uYWxfaWQoAShQZXJzb25hbElkAAQEgFJlZ2lzdGVyIGFuIGFjY291bnQgYXMgYSBwZXJzb24uRENhbmRpZGF0ZVJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEgcmVmZXJyZWQEATBUOjpBY2NvdW50SWQABQRsUGVyc29uIHJlZmVycmVkIGFuIGFjY291bnQuIFJlcm9sbGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAGBLRFbnRyb3B5IGZvciBhIGNhbmRpZGF0ZSBjaGFuZ2VkIGFmdGVyIGV4cGlyeS48RGVzaWduQ29tbWl0dGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHJlc2VydmVkX2lkKAEoUGVyc29uYWxJZAAHBJRDYW5kaWRhdGUgY29tbWl0dGVkIHRvIGFuIGluayBkZXNpZ24uOEZ1bGx5QWxsb2NhdGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIBLxTdG9yYWdlIGZ1bGx5IGFsbG9jYXRlZCBmb3IgYSBjb21taXR0ZWQgZGVzaWduLiBUaW1lZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQSAQ2FuZGlkYXRlIHJlbW92ZWQgYWZ0ZXIgdGltZW91dC4kRmxha2VkT3V0BAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAKBHhVbmNvbW1pdHRlZCBjYW5kaWRhdGUgcmVtb3ZlZC44VGlja2V0UmVmZXJyZWQIASByZWZlcnJlcigBKFBlcnNvbmFsSWQAARh0aWNrZXQEASRUOjpUaWNrZXQACwTsUmVmZXJyYWwgdGlja2V0IGNyZWF0ZWQgYnkgc3RvcmluZyB0aGUgcHVibGljIGtleSBvbiBjaGFpbi48VGlja2V0Q2FuY2VsbGVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAwEGQFSZWZlcnJhbCB0aWNrZXQgcmVtb3ZlZCBieSByZW1vdmluZyB0aGUgcHVibGljIGtleSBmcm9tIGNoYWluIHN0b3JhZ2UuNFRpY2tldEFwcGxpZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEgcmVmZXJyZXIoAShQZXJzb25hbElkAA0EqENhbmRpZGF0ZSBhcHBsaWVkIHVzaW5nIGEgcmVmZXJyYWwgdGlja2V0LixGYW1pbHlBZGRlZAwBFGluZGV4zQMBLEZhbWlseUluZGV4AAEQa2luZIEEAShGYW1pbHlLaW5kAAEIaWQIASBGYW1pbHlJZAAOBFBEZXNpZ24gZmFtaWx5IGFkZGVkLkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkABAEDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuXEludml0ZWRDYW5kaWRhdGVBcHBsaWVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAARBJhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhbiBpbnZpdGF0aW9uLmRSZWZlcnJhbFZvdWNoZXJSZWdpc3RlcmVkBAEgcmVmZXJyZXIoAShQZXJzb25hbElkABIEwEEgcmVmZXJyZXIncyByZXdhcmQgdm91Y2hlciBoYXMgYmVlbiByZWdpc3RlcmVkLjhJbnZpdGVzR3JhbnRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgATBKBJbnZpdGVzIGhhdmUgYmVlbiBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFAR4QW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAgBHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASRUOjpUaWNrZXQAFQSQQW4gaW52aXRlIHRpY2tldCBoYXMgYmVlbiBjYW5jZWxsZWQuQENvbmZpZ3VyYXRpb25TZXQEARhjb25maWeFBAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAWBKhUaGUgcGFsbGV0IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTxBwxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0FEV2ZW50BARUAAFQHE5ld0dhbWUMAURyZWdpc3RyYXRpb25fZW5kczgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAAEXEEgbmV3IGdhbWUgaXMgc3RhcnRpbmcuJEdhbWVFbmRlZAQBFGluZGV4OAEcR2FtZUlkeAABBKBUaGUgZ2FtZSBhbmQgaXRzIHBvc3QtcHJvY2VzcyBoYXMgZW5kZWQuNEdhbWVQaGFzZXNTZXQEARhwaGFzZXPhBAFMUGhhc2VEdXJhdGlvblZhbHVlcwACBBkBVGhlIGdhbWUgcGhhc2UgZHVyYXRpb25zIHdlcmUgb3ZlcnJpZGRlbiBieSBbYENvbmZpZzo6TWFuYWdlck9yaWdpbmBdLiBTaWduZWRVcAQBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgADBIBBIHBsYXllciBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLjxSZXBvcnRTdWJtaXR0ZWQIAQx3aG8JBQF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4AAShnYW1lX2luZGV4OAEcR2FtZUlkeAAEBIBBIHBsYXllciBzdWJtaXR0ZWQgdGhlaXIgcmVwb3J0LihPZmZib2FyZGVkBAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAUEiEEgcGxheWVyIG9mZmJvYXJkZWQgZnJvbSB0aGUgZ2FtZS4kS2lja2VkT3V0BAEYcGxheWVyCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAYEiEFuIGFyY2hpdmVkIHBsYXllciB3YXMga2lja2VkIG91dC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIABwSMSW52aXRlcyB3ZXJlIGdyYW50ZWQgdG8gYW4gYWNjb3VudC48SW52aXRlVGlja2V0U2V0BAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAIBGRBbiBpbnZpdGUgdGlja2V0IHdhcyBzZXQuVEludml0ZVRpY2tldENhbmNlbGxlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQACQR8QW4gaW52aXRlIHRpY2tldCB3YXMgY2FuY2VsbGVkLixMaXRlSW52aXRlZAQBGHBsYXllcgQBMFQ6OkFjY291bnRJZAAKCEkBQSBsaXRlIHBlcnNvbiBpbnZpdGVkIHRoZSBhY2NvdW50IGBwbGF5ZXJgIHRvIHBsYXkgb24gdGhlaXIgYmVoYWxmLCB3aGljaCBpcyBub3cgYYxwbGF5ZXIgd2l0aCBhbiBpbnZpdGVkIGNyZWRpYmlsaXR5LjhHYW1lc1NjaGVkdWxlZAQBFGNvdW50OAEMdTMyAAsEVEdhbWVzIHdlcmUgc2NoZWR1bGVkLlBTY2hlZHVsZWRHYW1lUmVtb3ZlZAQBOGdhbWVfcGxheV90aW1lOAEMdTMyAAwEdEEgc2NoZWR1bGVkIGdhbWUgd2FzIHJlbW92ZWQuQFN0bXRVc2FnZVJlbW92ZWQEAQx3aG8IASBbdTg7IDMyXQANBLhTdGF0ZW1lbnQgc3RvcmUgdXNhZ2UgcmVtb3ZlZCBmb3IgdGhlIGFjY291bnQuREFsbEludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAOBLhBbGwgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIuSFNvbWVJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADwQNAVNvbWUgaW52aXRlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGludml0ZXIsIHNvbWUgYXJlIHJlbWFpbmluZy44UGxheURlcG9zaXRTZXQEARhhbW91bnRFAQFITmF0aXZlQmFsYW5jZU9mPFQ+ABAEoFRoZSBjb25maWd1cmVkIHBsYXkgZGVwb3NpdCB3YXMgdXBkYXRlZC5AQWlyZHJvcFNjaGVkdWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEgZXZlbnRfaWQIAThBaXJkcm9wRXZlbnRJZAARBNBBbiBhaXJkcm9wIGV2ZW50IHdhcyBzY2hlZHVsZWQgZm9yIHRoZSBjdXJyZW50IGdhbWUuVEFpcmRyb3BTY2hlZHVsZUZhaWxlZAwBKGdhbWVfaW5kZXg4ARxHYW1lSWR4AAE0YWlyZHJvcF9pbmRleAwBCHU4AAEUZXJyb3L1BgE0RGlzcGF0Y2hFcnJvcgASBORBbiBhaXJkcm9wIGV2ZW50IGZvciB0aGUgY3VycmVudCBnYW1lIGZhaWxlZCB0byBzY2hlZHVsZS40R2FtZUNhbmNlbGxlZAQBKGdhbWVfaW5kZXg4ARxHYW1lSWR4ABMEgEdhbWUgYGdhbWVfaW5kZXhgIHdhcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXZlbnQEBFQAASg0Q3JlZGl0Q2xhaW1lZAwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR4VGhlIHBlcnNvbiB3aG8gY2xhaW1lZCBjcmVkaXQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAS8RGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVkIHRoZSB0cmFuc2Zlci4BGGFtb3VudEUBATBCYWxhbmNlT2Y8VD4ETEFtb3VudCB0cmFuc2ZlcnJlZC4ABHBBIHBlcnNvbiBoYXMgY2xhaW1lZCBjcmVkaXQuUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvCQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+BLBUaGUgYWNjb3VudCB3aG9zZSBwZXJzb25ob29kIHdhcyByZWNvZ25pemVkLgEccmVzdW1lZFkBARBib29sBBEBV2hldGhlciB0aGlzIHdhcyByZXN1bWluZyBmcm9tIHN1c3BlbnNpb24gb3IgZmlyc3QtdGltZSByZWNvZ25pdGlvbi4BBKRQZXJzb25ob29kIHdhcyByZWNvZ25pemVkIGZvciBhbiBhY2NvdW50LlRQYXlvdXRSb3VuZHNTY2hlZHVsZWQMARhhbW91bnRFAQEwQmFsYW5jZU9mPFQ+BFRUaGUgYW1vdW50IHBlciByb3VuZC4BFGNvdW50OAEMdTMyBFRUaGUgbnVtYmVyIG9mIHJvdW5kcy4BIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4EhFRoZSBkdXJhdGlvbiBwZXIgcm91bmQgaW4gYmxvY2tzLgIEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4DBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLkRSb3VuZFRyYW5zaXRpb25lZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASYVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIHRyYW5zaXRpb25lZC4EBHhBIHJvdW5kIGhhcyBiZWVuIHRyYW5zaXRpb25lZC5MUGF5b3V0Um91bmRPcGVyYXRlZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASIVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIG9wZXJhdGVkLgUEGQFBIHBheW91dCByb3VuZCBoYXMgYmVlbiBvcGVyYXRlZCAoY3JlZGl0IGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cykuJENhc2hlZE91dAQBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR8VGhlIHBhcnRpY2lwYW50IHdobyBjYXNoZWQgb3V0LgYEuEEgcGFydGljaXBhbnQgaGFzIGNhc2hlZCBvdXQgc2NvcmUgZm9yIHBvaW50cy54UGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlU2V0AAcEvFRoZSBwZXJzb25ob29kLXRocmVzaG9sZCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuXEFic2VuY2VHcmFjZVNjaGVkdWxlU2V0AAgEoFRoZSBhYnNlbmNlLWdyYWNlIHNjaGVkdWxlIGhhcyBiZWVuIHNldC5AQXR0ZW5kYW5jZUZvcmNlZAwBDHdobwkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgSkVGhlIHBhcnRpY2lwYW50IHdob3NlIGF0dGVuZGFuY2Ugd2FzIHNldC4BIGF0dGVuZGVkWQEBEGJvb2wEvFdoZXRoZXIgdGhlIHBhcnRpY2lwYW50IHdhcyBtYXJrZWQgYXMgYXR0ZW5kZWQuAShnYW1lX2luZGV4OAEMdTMyBLxUaGUgZ2FtZSBpbmRleCB0aGUgYXR0ZW5kYW5jZSB3YXMgcmVjb3JkZWQgZm9yLgkEwFRoZSBhdHRlbmRhbmNlIG9mIGEgcGFydGljaXBhbnQgd2FzIHNldCBieSByb290LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPkHDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEV2ZW50BARUAAEoVE5mdENsYWltQ3JlZGl0QXdhcmRlZBABIGNsYWltYW50CQUBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEobGVhZl9pbmRleDgBDHUzMgAALFkBQW4gTkZUIGNsYWltIGNyZWRpdCB3YXMgYXdhcmRlZCB0byBgY2xhaW1hbnRgIGFuZCByZWNvcmRlZCBhcyBsZWFmIGBsZWFmX2luZGV4YCBvZiB0aGVAdHJlZSBvZiBgYmxvY2tgLgBdAWBibG9ja2AgaXMgdGhlIGJsb2NrIHdob3NlIHJvb3QgY29tbWl0cyB0aGUgY3JlZGl0LCB3aGljaCBpcyB0aGUgY3VycmVudCBvbmUgdW5sZXNzIGl0c1kBdHJlZSB3YXMgYWxyZWFkeSBmdWxsLiBBbiBpbmRleGVyIGtleXMgdGhlIGxlYWYgYnkgYGJsb2NrYCwgbm90IGJ5IHRoZSBibG9jayB0aGUgZXZlbnQ8d2FzIGVtaXR0ZWQgaW4uAE0BT25lIGV2ZW50IHBlciBhd2FyZGVkIGNyZWRpdCwgaW4gbGVhZiBvcmRlciwgbGV0cyBhbiBpbmNsdXNpb24gcHJvb2Ygc3RpbGwgYmUgYnVpbHRRAW9uY2UgYSBibG9jaydzIGF3YXJkcyBoYXZlIGJlZW4gcHJ1bmVkOiB0aGUgbGVhZiBpcyBgYmxha2UyXzI1NihjbGFpbWFudCArKyBjcmVkaXQpYEkBYW5kIHRoZSBibG9jaydzIGxlYWYgc2V0IGlzIHRoZSBgbGVhZl9pbmRleGAtb3JkZXJlZCBzZXF1ZW5jZSBvZiB0aGUgZXZlbnRzIG5hbWluZ4RpdCwgc28gbm8gYmxvY2sgcmVwbGF5IGlzIG5lZWRlZC5oTmZ0Q2xhaW1DcmVkaXRSb290UmVjb3JkZWQIARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEsY3JlZGl0X3Jvb3T9BwFITmZ0Q2xhaW1DcmVkaXRUcmVlAAEIVQFUaGUgY3JlZGl0cyBgYmxvY2tgIGNvbW1pdHRlZCBjYW4gYmUgbWludGVkIGZyb20gbm93IG9uOiBgY3JlZGl0X3Jvb3RgJ3Mgcm9vdCBpcyB3aGF0HQFhbiBpbmNsdXNpb24gcHJvb2YgZm9yIGFueSBvZiB0aGVtIHZlcmlmaWVzIGFnYWluc3QsIGFuZCBuZXZlciBjaGFuZ2VzLlROZnRDbGFpbUNyZWRpdERyb3BwZWQIASBjbGFpbWFudAkFAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABGGNyZWRpdAgBOE5mdENsYWltQ3JlZGl0AAIUKQFBbiBlYXJuZWQgTkZUIGNsYWltIGNyZWRpdCB3YXMgbm90IHJlY29yZGVkLCBubyBidWZmZXIgaGF2aW5nIHJvb20gZm9yIGl0LgBdAVRoZSBjcmVkaXQgaXMgY29tbWl0dGVkIHRvIG5vIHJvb3QgYW5kIGNhbm5vdCBiZSBtaW50ZWQuIEl0cyBzbG90IGlzIGxlZnQgdW5zZXQsIHNvIHRoZU0BYXR0ZW5kYW5jZSBiYWNrZmlsbCBhd2FyZHMgaXQgYWdhaW4gaWYgdGhlIGNsYWltYW50IGdvZXMgb24gdG8gYXR0ZW5kLiBFdmVyeSBjYWxsZXJBAWNoZWNrcyBbYFBhbGxldDo6cmVtYWluaW5nX2NyZWRpdF9jYXBhY2l0eWBdIGZpcnN0LCBzbyB0aGlzIGV2ZW50IHJlcG9ydHMgYSBidWcuPENyZWRpdFRyZWVzU2VudAQBFHRyZWVzEQUB4EJvdW5kZWRWZWM8Q3JlZGl0VHJlZUJsb2NrLCBUOjpNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2U+GC0BVGhlIHRyZWUgYmxvY2sgb2YgZXZlcnkgdHJlZSB0aGUgbWVzc2FnZSBjYXJyaWVzLCBpbiB0aGUgb3JkZXIgdGhleSBnbyBvdXQuOQFFbXB0eSBtZWFucyBldmVyeSB0cmVlIG9mIHRoaXMgbWVzc2FnZSBoYWQgbG9zdCBpdHMgcm9vdCwgc28gbm90aGluZyB3YXMgc2VudC4ANQFUaGUgc2VxdWVuY2UgZWFjaCBibG9jayB0cmF2ZWxzIHVuZGVyIGlzIG5vdCBzcGVsbGVkIG91dDogdGhlIG1lc3NhZ2UgdGFrZXMgYU0BY29udGlndW91cyBydW4gb2Ygc2VxdWVuY2VzIG9mZiB0aGUgcXVldWUsIHN0YXJ0aW5nIGF0IHRoZSBjYWxsJ3MgYGZpcnN0X3NlcXVlbmNlYCwdAW1pbnVzIHRoZSBvbmVzIHRoaXMgYmxvY2sncyBbYEV2ZW50OjpDcmVkaXRUcmVlRGVsaXZlcnlTa2lwcGVkYF0gbmFtZXMuAwRBAUNyZWRpdCB0cmVlcyB3ZXJlIGhhbmRlZCB0byB0aGUgWENNIHJvdXRlciBmb3IgZGVsaXZlcnkgdG8gdGhlIE5GVCBjbGFpbXMgY2hhaW4uZENyZWRpdFRyZWVEZWxpdmVyeVNraXBwZWQIASBzZXF1ZW5jZSgBMFRyZWVTZXF1ZW5jZQABFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABBAlAUEgcXVldWVkIGNyZWRpdCB0cmVlIHdhcyBub3Qgc2VudCBiZWNhdXNlIGl0cyByb290IGlzIG5vIGxvbmdlciByZWNvcmRlZC4AWQFJdHMgc2VxdWVuY2UgaXMgc3BlbnQgd2l0aG91dCBhIHRyZWUgZXZlciBhcnJpdmluZywgc28gdGhlIGNsYWltcyBjaGFpbiByZXBvcnRzIGEgZ2FwLl0BTm8gW2BQYWxsZXQ6OnJlcGxheV9jcmVkaXRfdHJlZXNgXSBjYW4gZmlsbCBpdDogdGhlIHJvb3QgcHJvb2ZzIHZlcmlmeSBhZ2FpbnN0IGlzIGdvbmUuUENyZWRpdFRyZWVTZW5kRmFpbGVkAAUIVQFEZWxpdmVyaW5nIGNyZWRpdCB0cmVlcyB0byB0aGUgTkZUIGNsYWltcyBjaGFpbiBmYWlsZWQuIFRoZSB0cmVlcyBzdGF5IHF1ZXVlZCBhbmQgdGhloG5leHQgb2ZmY2hhaW4gd29ya2VyIGN5Y2xlIHJldHJpZXMgdGhlbS5MQ3JlZGl0VHJlZXNSZXBsYXllZAQBFGNvdW50OAEMdTMyAAYE9ENyZWRpdCB0cmVlcyB3ZXJlIHJlc2VudCB0byB0aGUgTkZUIGNsYWltcyBjaGFpbiBvdXQgb2YgYmFuZC5kQ3JlZGl0VHJlZURlbGl2ZXJ5RHJvcHBlZAQBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4ABxARAUEgZnJlc2hseSBidWlsdCBjcmVkaXQgdHJlZSBjb3VsZCBub3QgYmUgcXVldWVkIGZvciBkZWxpdmVyeSBiZWNhdXNlMQFgQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWVgIGlzIGZ1bGwsIHdoaWNoIG1lYW5zIGRlbGl2ZXJ5IGhhcyBiZWVuIGZhaWxpbmcgZm9yBQFgTWF4UXVldWVkQ3JlZGl0VHJlZXNgIHRyZWVzLiBJdHMgY3JlZGl0cyBzdGF5IHVubWludGFibGUgdW50aWwgYbhbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdIG5hbWVzIGBibG9ja2AuSENyZWRpdFJvb3RzRGVsZXRlZAgBFG5hbWVkOAEMdTMyAAEUY291bnQ4AQx1MzIACBRdAVRoZSBjbGFpbXMgY2hhaW4gaGFzIGZpbmlzaGVkIHdpdGggdGhlc2Ugcm9vdHMsIHNvIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtIHRvby4gYGNvdW50YIhvZiB0aGUgYG5hbWVkYCBibG9ja3MgaGVsZCBhIHJvb3QuAFUBRXZlcnkgY3JlZGl0IHRob3NlIHJvb3RzIGNvbW1pdHRlZCB0byBoYXMgYmVlbiBtaW50ZWQsIG9yIHRoZSBjbGFpbXMgY2hhaW4ncyBkZWFkbGluZfhmb3IgdGhlbSBoYXMgcGFzc2VkLiBObyBwcm9vZiBjYW4gYmUgYnVpbHQgYWdhaW5zdCB0aGVtIGFnYWluLkhDcmVkaXRSb290c0V4cGlyZWQEARRjb3VudDgBDHUzMgAJGEkBYGNvdW50YCByb290cyBvdXRsaXZlZCBbYFBhbGxldDo6cm9vdF90dGxgXSB3aXRoIHRoZSBjbGFpbXMgY2hhaW4gbmV2ZXIgYXNraW5nIGZvckkBdGhlaXIgZGVsZXRpb24sIHNvIHRoaXMgY2hhaW4gcmVtb3ZlZCB0aGVtLiBJdHMgZGVhZGxpbmUgZm9yIHRoZW0gcGFzc2VkIGZpcnN0LCBzb2Rub3RoaW5nIG1pbnRhYmxlIGlzIGxvc3QuAFkBVGhlIGJsb2NrcyBhcmUgbm90IG5hbWVkLiBBIHJvb3QgdGhpcyBzd2VlcCByZW1vdmVzIGlzIG9uZSB0aGUgY2xhaW1zIGNoYWluIGdhdmUgdXAgb27IbG9uZyBiZWZvcmUsIHNvIG5vdGhpbmcgaXMgd2FpdGluZyBvbiB0aGUgcmVtb3ZhbC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9Bww0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXNITmZ0Q2xhaW1DcmVkaXRUcmVlAAAQAShnYW1lX2luZGV4OAEMdTMyAAEQcm9vdAEIATxDcmVkaXRQcm9vZk5vZGUAAShsZWFmX2NvdW50OAEMdTMyAAEkdGltZXN0YW1wOAEMdTMyAAABCAw0aW5kaXZfc3VwcG9ydDBjcmVkaXRfdHJlZXM8Q3JlZGl0UHJvb2ZOb2RlAAAEAAgBIFt1ODsgMzJdAAAFCAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXZlbnQEBFQAASAsSWRzUmVzZXJ2ZWQEARRjb3VudDgBDHUzMgAABHRBIG51bWJlciBvZiBJRHMgd2FzIHJlc2VydmVkLiRJZFJlbmV3ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAQRIQW4gSUQgd2FzIHJlbmV3ZWQuMElkVW5yZXNlcnZlZAQBCGlkKAEoUGVyc29uYWxJZAACBGhBIHJlc2VydmVkIElEIHdhcyByZW1vdmVkLkBQZW9wbGVSZWdpc3RlcmVkBAEUY291bnQ4AQx1MzIAAwRkUmVnaXN0ZXIgbXVsdGlwbGUgcGVvcGxlLjxQZW9wbGVTdXNwZW5kZWQEARRjb3VudDgBDHUzMgAEBGxTdXNwZW5kIGEgbnVtYmVyIG9mIHBlb3BsZS5EUGVyc29uaG9vZFJlc3VtZWQEAQhpZCgBKFBlcnNvbmFsSWQABQSEU29tZW9uZSdzIHBlcnNvbmhvb2Qgd2FzIHJlc3VtZWQuSFN1c3BlbnNpb25zU3RhcnRlZAAGBHxUaGUgcGFsbGV0IGVuYWJsZWQgc3VzcGVuc2lvbnMuQFN1c3BlbnNpb25zRW5kZWQABwSAVGhlIHBhbGxldCBkaXNhYmxlZCBzdXNwZW5zaW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCAxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBRFdmVudAQEVAABIHhBbGxBdHRlc3RhdGlvbkFsbG93YW5jZUNsZWFyZWQEASB2ZXJpZmllcgQBMFQ6OkFjY291bnRJZAAABPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSB2ZXJpZmllci50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAAQQtAUF0dGVzdGF0aW9uIGFsbG93YW5jZSB3YXMgaW5jcmVhc2VkIGZvciBhbiBhY2NvdW50IGJ5IGBjb3VudGAgYXR0ZXN0YXRpb25zLjhQZXJzb25BdHRlc3RlZAgBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAIE1EEgbmV3IGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIHRocm91Z2ggYXR0ZXN0YXRpb24uXFBlcnNvblJlZ2lzdGVyZWRXaXRoRmVlBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAMEAQFBIG5ldyBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCBieSBwYXlpbmcgdGhlIHJlZ2lzdHJhdGlvbiBmZWUuSENvbnN1bWVyUmVnaXN0ZXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASsQSBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc+kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAUEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXPpAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAGBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEuFRoZSBsaXRlIHBlb3BsZSBtZW1iZXIgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNCAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxhwYWxsZXQURXZlbnQEBFQAAThAUGVyc29uUmVnaXN0ZXJlZAgBFGFsaWFzCAEUQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAAEmEEgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuUExpdGVQZXJzb25SZWdpc3RlcmVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBKxBIGxpdGUgcGVyc29uIGhhcyByZWdpc3RlcmVkIGFzIGEgY29uc3VtZXIuYE5vdGlmaWNhdGlvblN0bXRVc2FnZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgT4Tm90aWZpY2F0aW9uIHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiBhc3NpZ25lZCBmb3IgYSBzZXF1ZW5jZS5wTm90aWZpY2F0aW9uU3RtdFVzYWdlUmVtb3ZlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwS4Tm90aWZpY2F0aW9uIHN0YXRlbWVudCB1c2FnZSBoYXMgYmVlbiByZW1vdmVkLmhQZXJzb25BdXRob3JpemF0aW9uVG91Y2hlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABASUQSBwZXJzb24ncyBhdXRob3JpemF0aW9uIHdhcyB0b3VjaGVkLoRFeHBpcmVkVXNlcm5hbWVSZXNlcnZhdGlvblJlbW92ZWQIASB1c2VybmFtZT0FASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQSwQW4gZXhwaXJlZCB1c2VybmFtZSByZXNlcnZhdGlvbiB3YXMgcmVtb3ZlZC5QSWRlbnRpZmllcktleVVwZGF0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAYEoEEgY29uc3VtZXIncyBpZGVudGlmaWVyIGtleSB3YXMgdXBkYXRlZC54VXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uU2V0BAEgZHVyYXRpb24oAQx1NjQABwSoVGhlIHVzZXJuYW1lIHJlc2VydmF0aW9uIGR1cmF0aW9uIHdhcyBzZXQuVFN0bXRTdG9yZUFsbG93YW5jZVNldBABFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgEzEFuIGFub255bW91cyBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHdhcyBncmFudGVkLmhTdG10U3RvcmVBbGxvd2FuY2VzQ2xlYXJlZAwBGHBlcmlvZDgBDHUzMgABJGZpcnN0X2tleQgBFEFsaWFzAAEUY291bnQ4AQx1MzIACQTMRXhwaXJlZCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlcyB3ZXJlIGNsZWFuZWQgdXAuNFBlcnNvbkRlbW90ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAoE3EEgZnVsbCBwZXJzb24gd2FzIGRlbW90ZWQgZHVlIHRvIGV4cGlyZWQgYXV0aG9yaXphdGlvbi5YTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARhwZXJpb2Q4AQx1MzIAARxjb3VudGVyDAEIdTgAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEoY29sbGVjdGlvbgEEAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgALBMhMb25nLXRlcm0gc3RvcmFnZSBoYXMgYmVlbiBjbGFpbWVkIGZvciBhbiBhY2NvdW50LnxMb25nVGVybVN0b3JhZ2VBbGxvY2F0aW9uRmFpbGVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uAQQBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAwIWQFBIGxvbmctdGVybSBzdG9yYWdlIGNsYWltIHdhcyBhY2NlcHRlZCBidXQgdGhlIGRvd25zdHJlYW0gYWxsb2NhdGlvbiBmYWlsZWQuIFRoZSBhbGlhc5RpcyBzdGlsbCBtYXJrZWQgc3BlbnQgZm9yIHRoZSBwZXJpb2QudExvbmdUZXJtU3RvcmFnZUFsaWFzZXNDbGVhcmVkCAEYcGVyaW9kOAEMdTMyAAEUY291bnQ4AQx1MzIADQQFAUV4cGlyZWQgbG9uZy10ZXJtIHN0b3JhZ2UgYWxpYXNlcyBoYXZlIGJlZW4gY2xlYXJlZCBmb3IgYSBwZXJpb2QuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQgMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXZlbnQEBFQAAQhoQ2h1bmtQYWdlSGFzaGVzSW5pdGlhbGl6ZWQIATRyaW5nX2V4cG9uZW50VQUBMFJpbmdFeHBvbmVudAABLHRvdGFsX3BhZ2VzOAEMdTMyAAAEGQFBIG5ldyBjaHVuayBwYWdlIGhhc2ggc2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIChlLmcuLCBkdXJpbmcgZ2VuZXNpcykuLENodW5rc0FkZGVkDAE0cmluZ19leHBvbmVudFUFATBSaW5nRXhwb25lbnQAASxzdGFydF9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAEEIQFOZXcgY2h1bmtzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgb3IgbmV3IGNodW5rIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCAxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0FEV2ZW50BARUAAEoLE1lbWJlckFkZGVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAAToQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZWNvZ25pc2VkIGFuZCBpbmRleGVkLjRNZW1iZXJSZW1vdmVkBAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQSsQW4gZW50aXR5IGhhcyBoYWQgdGhlaXIgbWVtYmVyc2hpcCByZXZva2VkLmxDb2xsZWN0aW9uTWFya2VkRm9yRGVsZXRpb24EAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgACBKhBIGNvbGxlY3Rpb24gaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi5EQ29sbGVjdGlvbkRlbGV0ZWQEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgADBJBBIGNvbGxlY3Rpb24gaGFzIGJlZW4gZnVsbHkgZGVsZXRlZC4kUmluZ0J1aWx0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAQEWEEgcmluZyByb290IHdhcyBidWlsdC5ATWVtYmVyc09uYm9hcmRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAUEXE1lbWJlcnMgd2VyZSBvbmJvYXJkZWQuLFJpbmdzTWVyZ2VkDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxiYXNlX3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAUR0YXJnZXRfcmluZ19pbmRleDgBJFJpbmdJbmRleAAGBFhUd28gcmluZ3Mgd2VyZSBtZXJnZWQuRE9uYm9hcmRpbmdTaXplU2V0CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAATxvbmJvYXJkaW5nX3NpemU4AQx1MzIABwS0VGhlIG9uYm9hcmRpbmcgc2l6ZSB3YXMgc2V0IGZvciBhIGNvbGxlY3Rpb24uSE1lbWJlclNlbGZJbmNsdWRlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEMa2V5CAEsTWVtYmVyT2Y8VD4ACASMQSBtZW1iZXIgc2VsZi1pbmNsdWRlZCBpbnRvIGEgcmluZy5AT2xkUm9vdENsZWFuZWRVcAwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAEMdTMyAAkEpEFuIG9sZCByb290IHJldmlzaW9uIGhhcyBiZWVuIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQgMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFdmVudAQEVAABhCRDb2luU3BsaXQIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBvdXRwdXRfY291bnQ4AQx1MzIAAAA8Q29pblRyYW5zZmVycmVkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARxuZXdfYWdlzQMBDHUxNgABAFhSZWN5Y2xlckxvYWRlZFdpdGhDb2luCAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAIAfFJlY3ljbGVyTG9hZGVkV2l0aEV4dGVybmFsQXNzZXQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAMAYFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbhQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfdmFsdWUVBAEwRGVub21pbmF0aW9uAAEwb3V0cHV0X3ZhbHVlFQQBMERlbm9taW5hdGlvbgABLGlucHV0X2NvdW50OAEMdTMyAAQAhFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldBQBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAUAvFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldEFuZExvYWRlZENvaW5zGAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AAURsb2FkZWRfY29pbl9jb3VudDgBDHUzMgAGAFRSZWN5Y2xlckFsaWFzVW5sb2FkZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEUYWxpYXMIARRBbGlhcwAHIBkBQW4gYWxpYXMgd2FzIHBlcm1hbmVudGx5IG1hcmtlZCBhcyB1bmxvYWRlZCBmcm9tIGEgbGl2ZSByZWN5Y2xlciByaW5nLgAtAUVtaXR0ZWQgb25jZSBwZXIgYWxpYXMgb24gZXZlcnkgdW5sb2FkIGZyb20gYSBsaXZlIChub3QgeWV0IGFyY2hpdmVkKSByaW5nO5RyZWNvdmVyaWVzIGZyb20gYW4gYXJjaGl2ZWQgcmluZyBlbWl0UQFbYEV2ZW50OjpBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldGBdIGluc3RlYWQuIFRvZ2V0aGVyLCB0aGVzZSBldmVudHM1AWxldCBhbiBvZmZjaGFpbiBzZXJ2aWNlIHJlY29uc3RydWN0IHRoZSB1bmxvYWRlZC1hbGlhc2VzIHRyaWUgY29tbWl0dGVkIHRvIGJ5BQFbYEV2ZW50OjpSZWN5Y2xlckFyY2hpdmVkYF0sIGFuZCBoZW5jZSBidWlsZCB0aGUgcHJvb2ZzIG5lZWRlZCBieeRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS6EUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhDb2luDAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEMZmVlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABJGRlc3Ryb3llZEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACACMUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhOYXRpdmUIAQx3aG8EATBUOjpBY2NvdW50SWQAAQxmZWVFAQFITmF0aXZlQmFsYW5jZU9mPFQ+AAkAqFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoRXh0ZXJuYWxBc3NldAwBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABDGZlZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ACgB0UGVvcGxlRnJlZVVubG9hZFRva2VuQ29uc3VtZWQEARhwZXJpb2Q4ARhQZXJpb2QACwCETGl0ZVBlb3BsZUZyZWVVbmxvYWRUb2tlbkNvbnN1bWVkBAEYcGVyaW9kOAEYUGVyaW9kAAwAZFJlY3ljbGVyc1VubG9hZGVkSW50b0NvaW4QASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQh0bwQBMFQ6OkFjY291bnRJZAABMG91dHB1dF92YWx1ZRUEATBEZW5vbWluYXRpb24AASxpbnB1dF9jb3VudDgBDHUzMgANAIhSZWN5Y2xlcnNVbmxvYWRlZEludG9FeHRlcm5hbEFzc2V0EAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEIdG8EATBUOjpBY2NvdW50SWQAASxpbnB1dF9jb3VudDgBDHUzMgABGGFtb3VudEUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADgC4UmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldE5vbkFub255bW91cxgBLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5oQUBLEZlZUN1cnJlbmN5AA8AZFJlY3ljbGVyVW5sb2FkZWRJbnRvQ29pbnMIASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAATBvdXRwdXRfY291bnQ4AQx1MzIAEAB8Q29pbk9mZmJvYXJkZWRJbnRvRXh0ZXJuYWxBc3NldBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABCHRvBAEwVDo6QWNjb3VudElkAAEUdmFsdWUVBAEwRGVub21pbmF0aW9uAAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgARADxSZWN5Y2xlckNsZWFuZWQMASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AATxyZW1haW5pbmdfY29pbnM4AQx1MzIAEgxdAUEgcmVjeWNsZXIgcmluZyB3YXMgY2xlYW5lZC4gYHJlbWFpbmluZ19jb2luc2AgaXMgdGhlIG51bWJlciBvZiBub3QteWV0LXVubG9hZGVkIGNvaW5zO1EBd2hlbiBub24temVybyB0aGUgcmluZyBpcyBhcmNoaXZlZCAoc2VlIFtFdmVudDo6UmVjeWNsZXJBcmNoaXZlZF0pIGFuZCB0aGF0IHZhbHVlIGlzsHJldGFpbmVkIGZvciByZWNvdmVyeSByYXRoZXIgdGhhbiBkZXN0cm95ZWQuQFJlY3ljbGVyQXJjaGl2ZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARR2YWx1ZRUEATBEZW5vbWluYXRpb24AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAE0cmVjeWNsZXJfcm9vdK0FATBNZW1iZXJzT2Y8VD4AExxRAUEgY2xlYW5lZCByZWN5Y2xlciByaW5nIHdpdGggcmVjb3ZlcmFibGUgY29pbnMgd2FzIGFyY2hpdmVkOiBpdHMgYXJjaGl2YWwgY29tbWl0bWVudAUBKHNlZSBbYGFyY2hpdmVfY29tbWl0bWVudGBdKSB3YXMgcmVjb3JkZWQgaW4gW1JlY3ljbGVyc0FyY2hpdmVzXS4AVQFUaGUgcmluZy1WUkYgYHJlY3ljbGVyX3Jvb3RgIGlzIGVtaXR0ZWQgaGVyZSBiZWNhdXNlIHRoZSByaW5nIGlzIHJlbW92ZWQgZnJvbSBzdG9yYWdlQQFpbiB0aGUgc2FtZSBvcGVyYXRpb246IHRoaXMgZXZlbnQgaXMgdGhlIGxhc3Qgb24tY2hhaW4gc291cmNlIG9mIHRoZSByb290LCB3aGljaPhvZmZjaGFpbiBzZXJ2aWNlcyBtdXN0IHJldGFpbiB0byBidWlsZCB0aGUgcmVjb3ZlcnkgcHJvb2ZzIGZvcuRbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXS6kQXJjaGl2ZWRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXQgASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVlFQQBMERlbm9taW5hdGlvbgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEwZmVlX2N1cnJlbmN5oQUBLEZlZUN1cnJlbmN5AAEUYWxpYXMIARRBbGlhcwAUBDEBQSBjb2luIHdhcyByZWNvdmVyZWQgZnJvbSBhbiBhcmNoaXZlZCByZWN5Y2xlciByaW5nIGludG8gdGhlIGV4dGVybmFsIGFzc2V0LmRDb25zdW1lZEZyZWVUb2tlbnNDbGVhbmVkBAEYcGVyaW9kOAEYUGVyaW9kABUAaFBhaWRVbmxvYWRUb2tlblJpbmdDbGVhbmVkCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAAWAExSZWN5Y2xlckR1c3RDbGVhbmVkABcAaFBhaWRVbmxvYWRUb2tlbkR1c3RDbGVhbmVkABgAnEV4cGlyZWRQYWlkVW5sb2FkVG9rZW5Db2xsZWN0aW9uRGVsZXRlZAQBGHBlcmlvZDgBGFBlcmlvZAAZADxJbnN0YW5jZUNyZWF0ZWQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBhc3NldF9pZHEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AAShhc3NldF91bml0RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABEG1vZGUdCAEwSW5zdGFuY2VNb2RlABoE3EEgY29pbmFnZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCBmb3IgYW4gdW5kZXJseWluZyBhc3NldC4kUG90RnVuZGVkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEYZnVuZGVyBAEwVDo6QWNjb3VudElkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgAbBPxBIHRyYWNrZWQgY29udHJpYnV0aW9uIHdhcyBhZGRlZCB0byBhIHNwb25zb3JlZCBpbnN0YW5jZSdzIHBvdC5EUG90RnVuZHNXaXRoZHJhd24QASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAARhmdW5kZXIEATBUOjpBY2NvdW50SWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARhhbW91bnRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+ABwE7EEgZnVuZGVyIHRvb2sgYmFjayBwYXJ0IG9mIHRoZWlyIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24uQExvYWREZXBvc2l0c0hlbGQQASxpbnN0YW5jZV9pZDgBKEluc3RhbmNlSWQAASBjdXJyZW5jeXEBAVRGdW5naWJsZXNBc3NldElkT2Y8VD4AARRwcmljZUUBAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgAdBEUBYGNvdW50YCBsb2FkIGRlcG9zaXRzIG9mIGBwcmljZWAgZWFjaCB3ZXJlIHRha2VuIGZyb20gYSBzcG9uc29yZWQgaW5zdGFuY2UncyBwb3QuUExvYWREZXBvc2l0c1JlbGVhc2VkEAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEgY3VycmVuY3lxAQFURnVuZ2libGVzQXNzZXRJZE9mPFQ+AAEYYW1vdW50RQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB4EPQFgY291bnRgIHNldHRsZWQga2V5cyByZWxlYXNlZCBgYW1vdW50YCBvZiBgY3VycmVuY3lgIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2UuVExvYWREZXBvc2l0c0NvbGxhcHNlZBABLGluc3RhbmNlX2lkOAEoSW5zdGFuY2VJZAABIGN1cnJlbmN5cQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABFHByaWNlRQEBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABFGNvdW50OAEMdTMyAB8IEQFFdmVyeSBsaXZlIGxvYWQgZGVwb3NpdCBvZiB0aGUgaW5zdGFuY2Ugd2FzIHJlLXByaWNlZCB0byB0aGUgY3VycmVudGBbYENvbmZpZzo6TG9hZERlcG9zaXRgXS48SW5zdGFuY2VNb2RlU2V0CAEsaW5zdGFuY2VfaWQ4AShJbnN0YW5jZUlkAAEQbW9kZR0IATBJbnN0YW5jZU1vZGUAIASgR292ZXJuYW5jZSBzd2l0Y2hlZCB0aGUgaW5zdGFuY2UncyBtb2RlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0IDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQwSW5zdGFuY2VNb2RlAAEIKFN1ZmZpY2llbnQAAAAkU3BvbnNvcmVkAAEAACEIDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXZlbnQEBFQAARgoU3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAARcQSBwYXJhY2hhaW4gc3Vic2NyaWJlZC4wVW5zdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAABBGRBIHBhcmFjaGFpbiB1bnN1YnNjcmliZWQuLFVwZGF0ZXNTZW50CAEccGFyYV9pZJwBGFBhcmFJZAABMHVwZGF0ZV9jb3VudDgBDHUzMgACBIBVcGRhdGUgYmF0Y2ggc2VudCB0byBzdWJzY3JpYmVyLkBVcGRhdGVTZW5kRmFpbGVkBAEccGFyYV9pZJwBGFBhcmFJZAADBMRTZW5kaW5nIHJpbmcgcm9vdCB1cGRhdGVzIHRvIGEgc3Vic2NyaWJlciBmYWlsZWQuPFJlcGxheVJlcXVlc3RlZAwBHHBhcmFfaWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABNGluZGljZXNfY291bnQ4AQx1MzIABAS8UmVwbGF5IG9mIHJpbmcgcm9vdHMgcmVxdWVzdGVkIGJ5IGEgc3Vic2NyaWJlci44QmF0Y2hBYmFuZG9uZWQEASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAUEzEEgc3R1Y2sgYmF0Y2ggd2FzIGFiYW5kb25lZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCUIDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQURXZlbnQEBFQAAUg4RXZlbnRTY2hlZHVsZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAABUU2NoZWR1bGVkRXZlbnRSZW1vdmVkBAEgZXZlbnRfaWQIARxFdmVudElkAAEAOEV2ZW50Q2FuY2VsbGVkBAEgZXZlbnRfaWQIARxFdmVudElkAAIATFJlZ2lzdHJhdGlvblN0YXJ0ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAwA8QWxpYXNSZWdpc3RlcmVkDAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAFIcGFydGljaXBhbnRfb3JpZ2luLQgBWFJlZ2lzdHJhdGlvbkVudHJ5T2Y8VD4ABABEQWNjb3VudFJlZ2lzdGVyZWQMASBldmVudF9pZAgBHEV2ZW50SWQAARBzbG90KQgBNEJpZ0VuZGlhblUyNTYAAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAUAOFNsb3RSZWdpc3RlcmVkDAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAEUZW50cnktCAFYUmVnaXN0cmF0aW9uRW50cnlPZjxUPgAGAEhSZWdpc3RyYXRpb25DbG9zZWQIASBldmVudF9pZAgBHEV2ZW50SWQAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgAHADhEcmF3aW5nV2lubmVycwgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAgAPENsYWltaW5nU3RhcnRlZAgBIGV2ZW50X2lkCAEcRXZlbnRJZAABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAkANEV2ZW50Q2FuY2VsZWQEASBldmVudF9pZAgBHEV2ZW50SWQACgAwUHJpemVDbGFpbWVkFAEgZXZlbnRfaWQIARxFdmVudElkAAEQc2xvdCkIATRCaWdFbmRpYW5VMjU2AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AARhhbW91bnRFAQFEQXNzZXRCYWxhbmNlT2Y8VD4ACwBUQ2xlYXJpbmdSZWdpc3RyYXRpb25zCAEgZXZlbnRfaWQIARxFdmVudElkAAEkdW5jbGFpbWVkOAEMdTMyAAwAPENsZWFyaW5nV2lubmVycwQBIGV2ZW50X2lkCAEcRXZlbnRJZAANADxGaW5hbGl6aW5nRXZlbnQEASBldmVudF9pZAgBHEV2ZW50SWQADgA4RXZlbnRDb21wbGV0ZWQEASBldmVudF9pZAgBHEV2ZW50SWQADwAwQXNzZXRFbmFibGVkCAEgYXNzZXRfaWRxAQEwQXNzZXRJZE9mPFQ+AAEYZnVuZGVkRQEBREFzc2V0QmFsYW5jZU9mPFQ+ABAANEFzc2V0RGlzYWJsZWQIASBhc3NldF9pZHEBATBBc3NldElkT2Y8VD4AASByZWZ1bmRlZEUBAURBc3NldEJhbGFuY2VPZjxUPgARAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCkIDDRpbmRpdl9zdXBwb3J0FHV0aWxzNEJpZ0VuZGlhblUyNTYAAyAAAAAMBB0BQSBVMjU2IGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4tCAxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXNEUmVnaXN0cmF0aW9uRW50cnkEJEFjY291bnRJZAEEAQgUQWxpYXMEARRhbGlhcwgBFEFsaWFzAAAAHEFjY291bnQEAShhY2NvdW50X2lkBAEkQWNjb3VudElkAAEAADEIDExpbmRpdl9wYWxsZXRfaG9ub3VyGHBhbGxldBRFdmVudAQEVAABDCBWb3RlQ2FzdAgBHHN1YmplY3QIASRTdWJqZWN0SWQEeFRoZSBzdWJqZWN0IHRoYXQgd2FzIHZvdGVkIG9uLgEkZGlyZWN0aW9u7QUBJERpcmVjdGlvbgRoVGhlIGRpcmVjdGlvbiBvZiB0aGUgdm90ZS4ABNhBIHN1YmplY3Qgd2FzIHZvdGVkIG9uIHdpdGggYSBwcmV2aW91c2x5IHVudXNlZCBwb2ludC4oVm90ZVJldXNlZBABLG9sZF9zdWJqZWN0CAEkU3ViamVjdElkBNhUaGUgc3ViamVjdCB0aGF0IHByZXZpb3VzbHkgaGVsZCB0aGUgcmVkaXJlY3RlZCBwb2ludC4BNG9sZF9kaXJlY3Rpb27tBQEkRGlyZWN0aW9uBJBUaGUgcHJldmlvdXMgZGlyZWN0aW9uIG9mIHRoZSBwb2ludC4BLG5ld19zdWJqZWN0CAEkU3ViamVjdElkBMBUaGUgc3ViamVjdCB0aGF0IG5vdyBob2xkcyB0aGUgcmVkaXJlY3RlZCBwb2ludC4BNG5ld19kaXJlY3Rpb27tBQEkRGlyZWN0aW9uBHhUaGUgbmV3IGRpcmVjdGlvbiBvZiB0aGUgdm90ZS4BBMxBIHBvaW50IHdhcyByZWRpcmVjdGVkIGZyb20gb25lIHN1YmplY3QgdG8gYW5vdGhlci40SG9ub3VyQ2hhbmdlZAwBHHN1YmplY3QIASRTdWJqZWN0SWQEnFRoZSBzdWJqZWN0IHdob3NlIGhvbm91ciBzY29yZSBjaGFuZ2VkLgEkb2xkX3ZhbHVlNQgBGEhvbm91cgSMVGhlIGhvbm91ciB2YWx1ZSBiZWZvcmUgdGhlIHVwZGF0ZS4BJG5ld192YWx1ZTUIARhIb25vdXIEiFRoZSBob25vdXIgdmFsdWUgYWZ0ZXIgdGhlIHVwZGF0ZS4CBKhUaGUgaG9ub3VyIHNjb3JlIG9mIGEgc3ViamVjdCBoYXMgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1CAAABQsAOQgMcGluZGl2X3BhbGxldF9wZW9wbGVfYWlyZHJvcHMYcGFsbGV0FEV2ZW50BARUAAEQNERyYXdTY2hlZHVsZWQIAShkcmF3X2luZGV4KAEMdTY0AAEgZXZlbnRfaWQIARxFdmVudElkAAAIOQFBIGRyYXcgd2FzIHNjaGVkdWxlZC4gUmVnaXN0cmF0aW9uIGFuZCBjbGFpbSBldmVudHMgYXJlIGVtaXR0ZWQgYnkgdGhlIGFpcmRyb3CUaW1wbGVtZW50YXRpb24gdW5kZXIgdGhpcyBgZXZlbnRfaWRgLixEcmF3UmVtb3ZlZAQBIGV2ZW50X2lkCAEcRXZlbnRJZAABBOBBIHNjaGVkdWxlZCBkcmF3IHdhcyBhc2tlZCB0byBiZSByZW1vdmVkIGJlZm9yZSBvcGVuaW5nLjREcmF3Q2FuY2VsbGVkBAEgZXZlbnRfaWQIARxFdmVudElkAAIEhEEgZHJhdyB3YXMgYXNrZWQgdG8gYmUgY2FuY2VsbGVkLjxEcmF3U2FsdFJlbW92ZWQEASBldmVudF9pZAgBHEV2ZW50SWQAAwTMQSBkcmF3J3Mgc2FsdCBlbnRyeSB3YXMgcmVtb3ZlZCBhZnRlciBpdHMgZW5kIHRpbWUuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3IlBgE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCAgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAEUIAAACPABJCAAAAk0IAE0IAAAECDg4AFEICDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uYAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZVUIAURDb3c8J3N0YXRpYywgc3RyPgAAVQgEDENvdwQEVAFZCAAEAFkIAAAAWQgAAAUCAF0ICDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvblkBARBib29sAABhCAwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2t5AgEYV2VpZ2h0AAEkbWF4X2Jsb2NreQIBGFdlaWdodAABJHBlcl9jbGFzc2UIAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAGUIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBaQgADAEYbm9ybWFsaQgBBFQAASxvcGVyYXRpb25hbGkIAQRUAAEkbWFuZGF0b3J5aQgBBFQAAGkIDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWN5AgEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY0kDAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbEkDAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkSQMBOE9wdGlvbjxXZWlnaHQ+AABtCAwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF4cQgBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeQBLE9wdGlvbjx1MzI+AABxCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAHUICChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAB5CAgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lVQgBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1lVQgBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlzfQgBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAAfQgEDENvdwQEVAGBCAAEAIEIAAAAgQgAAAKFCACFCAAABAhhAjgAiQgMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0jQgMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAAJEIEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGVCAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzpQgBOFZlYzxFeHRyaW5zaWM+AACVCBAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQF5BBRFeHRyYQGZCAAEABgAAACZCAh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBnQgABACdCAEEUwAAnQgAAAQooQihBqUGqQatBrEGtQa9BsEGxQYAoQgAAAQwECkGLQY5BkUGUQZdBmkGdQaFBpEGnQYApQgAAAKVCACpCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHR5AgEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjkASxPcHRpb248dTMyPgACAACtCAAABs0DALEIAAACtQgAtQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50IEFuY2VzdG9yBARIATwADAE4dXNlZF9iYW5kd2lkdGi5CAE0VXNlZEJhbmR3aWR0aAABOHBhcmFfaGVhZF9oYXNozQgBJE9wdGlvbjxIPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbNEIAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAuQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50NFVzZWRCYW5kd2lkdGgAAAwBNHVtcF9tc2dfY291bnQ4AQx1MzIAATx1bXBfdG90YWxfYnl0ZXM4AQx1MzIAATRocm1wX291dGdvaW5nvQgBjEJUcmVlTWFwPFBhcmFJZCwgSHJtcENoYW5uZWxVcGRhdGU+AAC9CAQgQlRyZWVNYXAIBEsBnARWAcEIAAQAxQgAAADBCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnRESHJtcENoYW5uZWxVcGRhdGUAAAgBJG1zZ19jb3VudDgBDHUzMgABLHRvdGFsX2J5dGVzOAEMdTMyAADFCAAAAskIAMkIAAAECJzBCADNCAQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAANEIBBhPcHRpb24EBFQB1QgBCBBOb25lAAAAEFNvbWUEANUIAAABAADVCAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAANkIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDhTZWdtZW50VHJhY2tlcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRouQgBNFVzZWRCYW5kd2lkdGgAAThocm1wX3dhdGVybWFya+QBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFs0QgBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AADdCAQYT3B0aW9uBARUAeEIAQgQTm9uZQAAABBTb21lBADhCAAAAQAA4QgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAA5QgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHnpCAGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxz7QgBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHPtCAGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAA6QgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAADtCAAAAvEIAPEIAAAECJz1CAD1CAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWTNCAEwT3B0aW9uPEhhc2g+AAD5CAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc/0IAUhBc3luY0JhY2tpbmdQYXJhbXMAAP0IEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAAEJCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEADwBJFJlbGF5SGFzaAAABQkEIEJUcmVlTWFwCARLAZwEVgEBCQAEAAkJAAAACQkAAAINCQANCQAABAicAQkAEQkMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAAAVCQAAAhkJABkJCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBnAAIASRyZWNpcGllbnScAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AAAdCQh8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbSxQb1ZNZXNzYWdlcwAAGAFocmVsYXlfc3RvcmFnZV9yb290X29yX2hhc2g8AURyZWxheV9jaGFpbjo6SGFzaAABNGNvcmVfc2VsZWN0b3IMAQh1OAABMGJ1bmRsZV9pbmRleAwBCHU4AAE0dW1wX21zZ19jb3VudDgBDHUzMgABTGhybXBfb3V0Ym91bmRfY291bnQ4AQx1MzIAAWBocm1wX291dGJvdW5kX3JlY2lwaWVudHMhCQEsVmVjPFBhcmFJZD4AACEJAAACnAAlCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4pCQh0aW5kaXZfcGFsbGV0X3JlbGF5X3JhbmRvbW5lc3NAUmFuZG9tbmVzc1ZhbHVlcwAACAEUYmxvY2stCQFcT3B0aW9uPFJhbmRvbW5lc3NFbnRyeT4AATRvbmVfZXBvY2hfYWdvLQkBXE9wdGlvbjxSYW5kb21uZXNzRW50cnk+AAAtCQQYT3B0aW9uBARUATEJAQgQTm9uZQAAABBTb21lBAAxCQAAAQAAMQkIdGluZGl2X3BhbGxldF9yZWxheV9yYW5kb21uZXNzPFJhbmRvbW5lc3NFbnRyeQAACAEocmFuZG9tbmVzcwgBIFt1ODsgMzJdAAEYbW9tZW50OAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAA1CQxsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4GHBhbGxldBRFcnJvcgQEVAABBCxFbXB0eVN1ZmZpeAAABIRBIG5ldHdvcmsgc3VmZml4IGNhbm5vdCBiZSBlbXB0eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE9CQRTAAAEAEUJARhWZWM8VD4AAD0JDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQmFsYW5jZUxvY2sEHEJhbGFuY2UBRQEADAEIaWRhAgE4TG9ja0lkZW50aWZpZXIAARhhbW91bnRFAQEcQmFsYW5jZQABHHJlYXNvbnNBCQEcUmVhc29ucwAAQQkMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAABFCQAAAj0JAEkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBTQkEUwAABABRCQEYVmVjPFQ+AABNCQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgFhAhxCYWxhbmNlAUUBAAgBCGlkYQIBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50RQEBHEJhbGFuY2UAAFEJAAACTQkAVQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZCQRTAAAEAF0JARhWZWM8VD4AAFkJFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBTQccQmFsYW5jZQFFAQAIAQhpZE0HAQhJZAABGGFtb3VudEUBARxCYWxhbmNlAABdCQAAAlkJAGEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBZQkEUwAABABpCQEYVmVjPFQ+AABlCRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkARAcQmFsYW5jZQFFAQAIAQhpZBABCElkAAEYYW1vdW50RQEBHEJhbGFuY2UAAGkJAAACZQkAbQkMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnEJCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAAdQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUAXkJAAQAeQkBBFQAAHkJGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgFFARhPbkRyb3AAOE9wcG9zaXRlT25Ecm9wAAAEARhhbW91bnRFAQEEQgAAfQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlAUUBLEJsb2NrTnVtYmVyATgACAEQdXNlZEUBARxCYWxhbmNlAAEgYXRfYmxvY2s4ASxCbG9ja051bWJlcgAAgQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEVycm9yBARUAAEIHE5vVXNhZ2UAAASAVGhlIG9yaWdpbiBoYXMgbm8gdXNhZ2UgdHJhY2tlZC4cTm90WmVybwABBFhUaGUgdXNhZ2UgaXMgbm90IHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUJDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFFASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFFAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseUUBARxCYWxhbmNlAAEcZGVwb3NpdEUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlRQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVziQkBLEFzc2V0U3RhdHVzAACJCQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAI0JAAAECHEBBACRCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBRQE4RGVwb3NpdEJhbGFuY2UBRQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlRQEBHEJhbGFuY2UAARhzdGF0dXOVCQE0QWNjb3VudFN0YXR1cwABGHJlYXNvbpkJAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACVCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAACZCQw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBRQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBABFAQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAARQEBHEJhbGFuY2UABAAAnQkAAAQMcQEEBAChCQw0cGFsbGV0X2Fzc2V0cxR0eXBlcyBBcHByb3ZhbAgcQmFsYW5jZQFFAThEZXBvc2l0QmFsYW5jZQFFAQAIARhhbW91bnRFAQEcQmFsYW5jZQABHGRlcG9zaXRFAQE4RGVwb3NpdEJhbGFuY2UAAKUJDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAUUBNEJvdW5kZWRTdHJpbmcBqQkAFAEcZGVwb3NpdEUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWWpCQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbKkJATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAACpCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAK0JDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABZChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEFQFUaGUgYXNzZXQgSUQgaXMgbm90IHRoZSBvbmUgcmVxdWlyZWQgYnkgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXS5cQXNzZXRJZEFsbG9jYXRpb25GYWlsZWQAFQg5AVRoZSBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGNhbm5vdCBhbGxvY2F0ZSB0aGUgYXNzZXQgSUQ6IHRoZSBpZCBzcGFjZSBpcyhleGhhdXN0ZWQuPENvbnRhaW5zRnJlZXplcwAWBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAXBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAYBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6xCQQYT3B0aW9uBARUAYUJAQgQTm9uZQAAABBTb21lBACFCQAAAQAAtQkEGE9wdGlvbgQEVAGlCQEIEE5vbmUAAAAQU29tZQQApQkAAAEAALkJDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0JDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7BCQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAxQkINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAYQIBHFt1ODsgOF0AAMkJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXJyb3IEBFQAAWBASW52YWxpZEFzc2V0UGFpcgAABLhQcm92aWRlZCBhc3NldCBwYWlyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBvb2wuKFBvb2xFeGlzdHMAAQRQUG9vbCBhbHJlYWR5IGV4aXN0cy5IV3JvbmdEZXNpcmVkQW1vdW50AAIEdERlc2lyZWQgYW1vdW50IGNhbid0IGJlIHplcm8uYEFtb3VudE9uZUxlc3NUaGFuTWluaW1hbAADCEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5gQW1vdW50VHdvTGVzc1RoYW5NaW5pbWFsAAQISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmhSZXNlcnZlTGVmdExlc3NUaGFuTWluaW1hbAAFCE0BUmVzZXJ2ZSBuZWVkcyB0byBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuQEFtb3VudE91dFRvb0hpZ2gABgTIRGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgZXF1YWwgdG8gdGhlIHBvb2wgcmVzZXJ2ZS4wUG9vbE5vdEZvdW5kAAcEXFRoZSBwb29sIGRvZXNuJ3QgZXhpc3QuIE92ZXJmbG93AAgEVEFuIG92ZXJmbG93IGhhcHBlbmVkLoBBc3NldE9uZURlcG9zaXREaWROb3RNZWV0TWluaW11bQAJBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6AQXNzZXRUd29EZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACgQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldE9uZVdpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQALBCkBVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRUd29XaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ADAQtAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIHNlY29uZCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LnBPcHRpbWFsQW1vdW50TGVzc1RoYW5EZXNpcmVkAA0EvE9wdGltYWwgY2FsY3VsYXRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIGRlc2lyZWQubEluc3VmZmljaWVudExpcXVpZGl0eU1pbnRlZAAOBHhJbnN1ZmZpY2llbnQgbGlxdWlkaXR5IG1pbnRlZC40WmVyb0xpcXVpZGl0eQAPBIhSZXF1ZXN0ZWQgbGlxdWlkaXR5IGNhbid0IGJlIHplcm8uKFplcm9BbW91bnQAEARUQW1vdW50IGNhbid0IGJlIHplcm8ujFByb3ZpZGVkTWluaW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABEE7ENhbGN1bGF0ZWQgYW1vdW50IG91dCBpcyBsZXNzIHRoYW4gcHJvdmlkZWQgbWluaW11bSBhbW91bnQujFByb3ZpZGVkTWF4aW11bU5vdFN1ZmZpY2llbnRGb3JTd2FwABIEzFByb3ZpZGVkIG1heGltdW0gYW1vdW50IGlzIG5vdCBzdWZmaWNpZW50IGZvciBzd2FwLixJbnZhbGlkUGF0aAATBNRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIDIgYXNzZXRzIGF0IGxlYXN0LjROb25VbmlxdWVQYXRoABQExFRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgdW5pcXVlIGFzc2V0cy5QSW5jb3JyZWN0UG9vbEFzc2V0SWQAFQTsSXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZXQgb3IgaW5jcmVtZW50IHRoZSBJZCBvZiB0aGUgcG9vbC4wQmVsb3dNaW5pbXVtABYE8FRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGNhbm5vdCBleGlzdCB3aXRoIHRoZSBzd2FwcGVkIGZ1bmRzLiRQb29sRW1wdHkAFwQxAVRoZSBwb29sIGV4aXN0cyBidXQgaGFzIG5vIGxpcXVpZGl0eSAoYXQgbGVhc3Qgb25lIG9mIHRoZSByZXNlcnZlcyBpcyB6ZXJvKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuzQkEGFJlc3VsdAgEVAHRCQRFAckJAQgIT2sEANEJAAAAAAxFcnIEAMkJAAABAADRCQAABAhFAUUBANUJAAAECDgEANkJAAAEDDgEBADdCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBBUBVGhlIGFzc2V0IElEIGlzIG5vdCB0aGUgb25lIHJlcXVpcmVkIGJ5IFtgQ29uZmlnOjpBc3NldElkQWxsb2NhdG9yYF0uXEFzc2V0SWRBbGxvY2F0aW9uRmFpbGVkABUIOQFUaGUgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBjYW5ub3QgYWxsb2NhdGUgdGhlIGFzc2V0IElEOiB0aGUgaWQgc3BhY2UgaXMoZXhoYXVzdGVkLjxDb250YWluc0ZyZWV6ZXMAFgRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFwRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAGASAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAA5QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpCQRTAAAEAO0JARhWZWM8VD4AAOkJDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAUUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRFAQEcQmFsYW5jZQAA7QkAAALpCQDxCQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC71CQAAAvkJAPkJAAAECATdAQD9CQAAAgEKAAEKAAAECDgFCgAFCgwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABAAJCgEcUGVyYmlsbAAACQoMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAADQoAAAQIEQoYABEKDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAcAEcW3U4OyA0XQAAFQoMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4ZCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeEBBFMAAAQAHQoBGFZlYzxUPgAAHQoAAALhAQAhCghIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AAAlCgAABAghCjgAKQoMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAZwEUwAABAAtCgEsQlRyZWVTZXQ8VD4AAC0KBCBCVHJlZVNldAQEVAGcAAQAIQkAAAAxCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATUKBFMAAAQAQQoBGFZlYzxUPgAANQoIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAHAEkcmVjaXBpZW50nAEYUGFyYUlkAAEUc3RhdGU5CgE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3RZAQEQYm9vbAABLGZpcnN0X2luZGV4zQMBDHUxNgABKGxhc3RfaW5kZXjNAwEMdTE2AAEUZmxhZ3M9CgFQT3V0Ym91bmRDaGFubmVsRmxhZ3MAATBxdWV1ZWRfYnl0ZXM4AQx1MzIAADkKCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAAD0KCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAAEARBiaXRzOAEMdTMyAABBCgAAAjUKAEUKAAAECJzNAwBJCgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAE0KCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlPFF1ZXVlQ29uZmlnRGF0YQAADAFEc3VzcGVuZF90aHJlc2hvbGQ4AQx1MzIAAThkcm9wX3RocmVzaG9sZDgBDHUzMgABQHJlc3VtZV90aHJlc2hvbGQ4AQx1MzIAAFEKDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABFDhCYWRRdWV1ZUNvbmZpZwAABBEBU2V0dGluZyB0aGUgcXVldWUgY29uZmlnIGZhaWxlZCBzaW5jZSBvbmUgb2YgaXRzIHZhbHVlcyB3YXMgaW52YWxpZC5AQWxyZWFkeVN1c3BlbmRlZAABBIxUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgc3VzcGVuZGVkLjhBbHJlYWR5UmVzdW1lZAACBIRUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgcmVzdW1lZC50VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAwSwVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBvdXRib3VuZCBjaGFubmVscy4YVG9vQmlnAAQEXFRoZSBtZXNzYWdlIGlzIHRvbyBiaWcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlUKDChwYWxsZXRfeGNtGHBhbGxldCxRdWVyeVN0YXR1cwQsQmxvY2tOdW1iZXIBOAEMHFBlbmRpbmcQASRyZXNwb25kZXLtAQFEVmVyc2lvbmVkTG9jYXRpb24AAUxtYXliZV9tYXRjaF9xdWVyaWVyWQoBZE9wdGlvbjxWZXJzaW9uZWRMb2NhdGlvbj4AATBtYXliZV9ub3RpZnldCgFAT3B0aW9uPCh1OCwgdTgpPgABHHRpbWVvdXQ4ASxCbG9ja051bWJlcgAAADxWZXJzaW9uTm90aWZpZXIIARhvcmlnaW7tAQFEVmVyc2lvbmVkTG9jYXRpb24AASRpc19hY3RpdmVZAQEQYm9vbAABABRSZWFkeQgBIHJlc3BvbnNlZQoBRFZlcnNpb25lZFJlc3BvbnNlAAEIYXQ4ASxCbG9ja051bWJlcgACAABZCgQYT3B0aW9uBARUAe0BAQgQTm9uZQAAABBTb21lBADtAQAAAQAAXQoEGE9wdGlvbgQEVAFhCgEIEE5vbmUAAAAQU29tZQQAYQoAAAEAAGEKAAAECAwMAGUKCAx4Y21EVmVyc2lvbmVkUmVzcG9uc2UAAQwIVjMEAGkCATB2Mzo6UmVzcG9uc2UAAwAIVjQEANkCATB2NDo6UmVzcG9uc2UABAAIVjUEACUDATB2NTo6UmVzcG9uc2UABQAAaQoAAAQIOO0BAG0KAAAEDCh5AjgAcQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1CgRTAAAEAHkKARhWZWM8VD4AAHUKAAAECO0BOAB5CgAAAnUKAH0KDChwYWxsZXRfeGNtGHBhbGxldFRWZXJzaW9uTWlncmF0aW9uU3RhZ2UAARBcTWlncmF0ZVN1cHBvcnRlZFZlcnNpb24AAABcTWlncmF0ZVZlcnNpb25Ob3RpZmllcnMAAQBQTm90aWZ5Q3VycmVudFRhcmdldHMEACUGATxPcHRpb248VmVjPHU4Pj4AAgBoTWlncmF0ZUFuZE5vdGlmeU9sZFRhcmdldHMAAwAAgQoAAAQMOASxAwCFCgwocGFsbGV0X3hjbRhwYWxsZXRoUmVtb3RlTG9ja2VkRnVuZ2libGVSZWNvcmQISENvbnN1bWVySWRlbnRpZmllcgEQME1heENvbnN1bWVycwAAEAEYYW1vdW50RQEBEHUxMjgAARRvd25lcu0BAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlcu0BAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc4kKAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AACJCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0KBFMAAAQAkQoBGFZlYzxUPgAAjQoAAAQIEEUBAJEKAAACjQoAlQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCgRTAAAEAJ0KARhWZWM8VD4AAJkKAAAECEUB7QEAnQoAAAKZCgChCggocGFsbGV0X3hjbVhBdXRob3JpemVkQWxpYXNlc0VudHJ5CBhUaWNrZXQBpQoMTUFYAakKAAgBIGFsaWFzZXJzrQoBeEJvdW5kZWRWZWM8T3JpZ2luQWxpYXNlciwgTUFYPgABGHRpY2tldKUKARhUaWNrZXQAAKUKEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlIERpc2FibGVkAAAAAKkKDChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAACtCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbEKBFMAAAQAtQoBGFZlYzxUPgAAsQoMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9u7QEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5tQMBLE9wdGlvbjx1NjQ+AAC1CgAAArEKALkKDChwYWxsZXRfeGNtGHBhbGxldBRFcnJvcgQEVAABcCxVbnJlYWNoYWJsZQAACF0BVGhlIGRlc2lyZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLCBnZW5lcmFsbHkgYmVjYXVzZSB0aGVyZSBpcyBhIG5vIHdheSBvZiByb3V0aW5nGHRvIGl0LixTZW5kRmFpbHVyZQABCEEBVGhlcmUgd2FzIHNvbWUgb3RoZXIgaXNzdWUgKGkuZS4gbm90IHRvIGRvIHdpdGggcm91dGluZykgaW4gc2VuZGluZyB0aGUgbWVzc2FnZS7IUGVyaGFwcyBhIGxhY2sgb2Ygc3BhY2UgZm9yIGJ1ZmZlcmluZyB0aGUgbWVzc2FnZS4gRmlsdGVyZWQAAgScVGhlIG1lc3NhZ2UgZXhlY3V0aW9uIGZhaWxzIHRoZSBmaWx0ZXIuSFVud2VpZ2hhYmxlTWVzc2FnZQADBLRUaGUgbWVzc2FnZSdzIHdlaWdodCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC5gRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAQE3FRoZSBkZXN0aW5hdGlvbiBgTG9jYXRpb25gIHByb3ZpZGVkIGNhbm5vdCBiZSBpbnZlcnRlZC4URW1wdHkABQSAVGhlIGFzc2V0cyB0byBiZSBzZW50IGFyZSBlbXB0eS44Q2Fubm90UmVhbmNob3IABgQ1AUNvdWxkIG5vdCByZS1hbmNob3IgdGhlIGFzc2V0cyB0byBkZWNsYXJlIHRoZSBmZWVzIGZvciB0aGUgZGVzdGluYXRpb24gY2hhaW4uNFRvb01hbnlBc3NldHMABwTEVG9vIG1hbnkgYXNzZXRzIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLjRJbnZhbGlkT3JpZ2luAAgEeE9yaWdpbiBpcyBpbnZhbGlkIGZvciBzZW5kaW5nLihCYWRWZXJzaW9uAAkEIQFUaGUgdmVyc2lvbiBvZiB0aGUgYFZlcnNpb25lZGAgdmFsdWUgdXNlZCBpcyBub3QgYWJsZSB0byBiZSBpbnRlcnByZXRlZC4sQmFkTG9jYXRpb24ACghBAVRoZSBnaXZlbiBsb2NhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCAoZS5nLiBiZWNhdXNlIGl0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlYGRlc2lyZWQgdmVyc2lvbiBvZiBYQ00pLjhOb1N1YnNjcmlwdGlvbgALBLxUaGUgcmVmZXJlbmNlZCBzdWJzY3JpcHRpb24gY291bGQgbm90IGJlIGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAAMBBEBVGhlIGxvY2F0aW9uIGlzIGludmFsaWQgc2luY2UgaXQgYWxyZWFkeSBoYXMgYSBzdWJzY3JpcHRpb24gZnJvbSB1cy5YQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAANBCkBQ291bGQgbm90IGNoZWNrLW91dCB0aGUgYXNzZXRzIGZvciB0ZWxlcG9ydGF0aW9uIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4oTG93QmFsYW5jZQAOBEEBVGhlIG93bmVyIGRvZXMgbm90IG93biAoYWxsKSBvZiB0aGUgYXNzZXQgdGhhdCB0aGV5IHdpc2ggdG8gZG8gdGhlIG9wZXJhdGlvbiBvbi4wVG9vTWFueUxvY2tzAA8EwFRoZSBhc3NldCBvd25lciBoYXMgdG9vIG1hbnkgbG9ja3Mgb24gdGhlIGFzc2V0LkxBY2NvdW50Tm90U292ZXJlaWduABAEMQFUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYW4gaWRlbnRpZmlhYmxlIHNvdmVyZWlnbiBhY2NvdW50IGZvciBhbnkgbG9jYXRpb24uKEZlZXNOb3RNZXQAEQQpAVRoZSBvcGVyYXRpb24gcmVxdWlyZWQgZmVlcyB0byBiZSBwYWlkIHdoaWNoIHRoZSBpbml0aWF0b3IgY291bGQgbm90IG1lZXQuMExvY2tOb3RGb3VuZAASBPRBIHJlbW90ZSBsb2NrIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBjb3VsZCBub3QgYmUgZm91bmQuFEluVXNlABMESQFUaGUgdW5sb2NrIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBjb25zdW1lcnMgb2YgdGhlIGxvY2suaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlABUE8EludmFsaWQgYXNzZXQsIHJlc2VydmUgY2hhaW4gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIGl0LnhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAFgRFAUludmFsaWQgYXNzZXQsIGRvIG5vdCBzdXBwb3J0IHJlbW90ZSBhc3NldCByZXNlcnZlcyB3aXRoIGRpZmZlcmVudCBmZWVzIHJlc2VydmVzLjxUb29NYW55UmVzZXJ2ZXMAFwRJAVRvbyBtYW55IGFzc2V0cyB3aXRoIGRpZmZlcmVudCByZXNlcnZlIGxvY2F0aW9ucyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci5gTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlABgEfExvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZS5gVG9vTWFueUF1dGhvcml6ZWRBbGlhc2VzABkEuFRvbyBtYW55IGxvY2F0aW9ucyBhdXRob3JpemVkIHRvIGFsaWFzIG9yaWdpbi40RXhwaXJlc0luUGFzdAAaBIxFeHBpcnkgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LjRBbGlhc05vdEZvdW5kABsE0FRoZSBhbGlhcyB0byByZW1vdmUgYXV0aG9yaXphdGlvbiBmb3Igd2FzIG5vdCBmb3VuZC6ETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yCAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3K9CgE4RXhlY3V0aW9uRXJyb3IAHAg1AUxvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZSB3aXRoIHRoZSBhY3R1YWwgWENNIGVycm9yIGFuZCB0aGUgaW5kZXggb2YgdGhliGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuvQoMKHBhbGxldF94Y20YZXJyb3JzOEV4ZWN1dGlvbkVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAwQoIUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgHBAwAYARRiZWdpbjgBJFBhZ2VJbmRleAABDGVuZDgBJFBhZ2VJbmRleAABFGNvdW50OAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3Vyc8UKAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50KAEMdTY0AAEQc2l6ZSgBDHU2NAAAxQoEGE9wdGlvbgQEVAHJCgEIEE5vbmUAAAAQU29tZQQAyQoAAAEAAMkKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAcEDAAgBEHByZXbBAwE0TWVzc2FnZU9yaWdpbgABEG5leHTBAwE0TWVzc2FnZU9yaWdpbgAAzQoAAAQIwQM4ANEKCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplATggSGVhcFNpemUAABgBJHJlbWFpbmluZzgBEFNpemUAAThyZW1haW5pbmdfc2l6ZTgBEFNpemUAASxmaXJzdF9pbmRleDgBEFNpemUAARRmaXJzdDgBEFNpemUAARBsYXN0OAEQU2l6ZQABEGhlYXDVCgGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AADVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANkKDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu3QoMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu4QoAAAQIBAgA5QoIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAUUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbjkEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdEUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxz6QoBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AADpCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADtCgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvEKDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQu9QoAAAQI+QpFAQD5CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0KBFMAAAQAAQsBGFZlYzxUPgAA/QoIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQFJBCxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZUkEASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAAABCwAAAv0KAAULAAAECAkLRQEACQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAENCwRTAAAEABELARhWZWM8VD4AAA0LCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoATwsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoPAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAAARCwAAAg0LABULDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZCwxMaW5kaXZfcGFsbGV0X3Blb3BsZRR0eXBlczBQZXJzb25SZWNvcmQIGE1lbWJlcgEIJEFjY291bnRJZAEEAAgBDGtleQgBGE1lbWJlcgABHGFjY291bnQ1AQFET3B0aW9uPEFjY291bnRJZD4AAB0LDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBRFcnJvcgQEVAABlCROb3RQZXJzb24AAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgcGVyc29uLhROb0tleQABBJxUaGUgZ2l2ZW4gcGVyc29uIGhhcyBubyBhc3NvY2lhdGVkIGtleS44SW52YWxpZENvbnRleHQAAgQpAVRoZSBjb250ZXh0IGlzIG5vdCBhIG1lbWJlciBvZiB0aG9zZSBhbGxvd2VkIHRvIGhhdmUgYWNjb3VudCBhbGlhc2VzIGhlbGQuOEludmFsaWRBY2NvdW50AAMEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi4wQWNjb3VudEluVXNlAAQEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuMEludmFsaWRQcm9vZgAFBFRUaGUgcHJvb2YgaXMgaW52YWxpZC5ASW52YWxpZFNpZ25hdHVyZQAGBGRUaGUgc2lnbmF0dXJlIGlzIGludmFsaWQuJE5vTWVtYmVycwAHBNBUaGVyZSBhcmUgbm90IHlldCBhbnkgbWVtYmVycyBvZiBvdXIgcGVyc29uaG9vZCBzZXQuKEluY29tcGxldGUACAQFAVRoZSByb290IGNhbm5vdCBiZSBmaW5hbGl6ZWQgYXMgdGhlcmUgYXJlIHN0aWxsIHVucHVzaGVkIG1lbWJlcnMuKFN0aWxsRnJlc2gACQRgVGhlIHJvb3QgaXMgc3RpbGwgZnJlc2guOFRvb01hbnlNZW1iZXJzAAoEiFRvbyBtYW55IG1lbWJlcnMgaGF2ZSBiZWVuIHB1c2hlZC48S2V5QWxyZWFkeUluVXNlAAsElEtleSBhbHJlYWR5IGluIHVzZSBieSBhbm90aGVyIHBlcnNvbi4sS2V5Tm90Rm91bmQADASgVGhlIG9sZCBrZXkgd2FzIG5vdCBmb3VuZCB3aGVuIGV4cGVjdGVkLjBDb3VsZE5vdFB1c2gADQSQQ291bGQgbm90IHB1c2ggbWVtYmVyIGludG8gdGhlIHJpbmcuHFNhbWVLZXkADgSUVGhlIHJlY29yZCBpcyBhbHJlYWR5IHVzaW5nIHRoaXMga2V5LlRQZXJzb25hbElkTm90UmVzZXJ2ZWQADwR0UGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZC6AUGVyc29uYWxJZFJlc2VydmF0aW9uQ2Fubm90UmVuZXcAEASQUGVyc29uYWwgSWQgaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQukFBlcnNvbmFsSWROb3RSZXNlcnZlZE9yTm90UmVjb2duaXplZAARBNxQZXJzb25hbCBJZCB3YXMgbm90IHJlc2VydmVkIG9yIG5vdCBhbHJlYWR5IHJlY29nbml6ZWQuLEludmFsaWRSaW5nABIErFJpbmcgY2Fubm90IGJlIG1lcmdlZCBpZiBpdCdzIHRoZSB0b3AgcmluZy5IU3VzcGVuc2lvbnNQZW5kaW5nABME5FJpbmcgY2Fubm90IGJlIGJ1aWx0IHdoaWxlIHRoZXJlIGFyZSBzdXNwZW5zaW9ucyBwZW5kaW5nLlxSaW5nQWJvdmVNZXJnZVRocmVzaG9sZAAUBNRSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyBub3QgYmVsb3cgMS8yIGNhcGFjaXR5LkhJbnZhbGlkU3VzcGVuc2lvbnMAFQSgU3VzcGVuc2lvbiBpbmRpY2VzIHByb3ZpZGVkIGFyZSBpbnZhbGlkLkROb011dGF0aW9uU2Vzc2lvbgAWBDUBQW4gbXV0YXRpbmcgYWN0aW9uIHdhcyBxdWV1ZWQgd2hlbiB0aGVyZSB3YXMgbm8gbXV0YXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzcy5wQ291bGROb3RTdGFydE11dGF0aW9uU2Vzc2lvbgAXBKRBbiBtdXRhdGluZyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkLmxTdXNwZW5zaW9uU2Vzc2lvbkluUHJvZ3Jlc3MAGAT0Q2Fubm90IG1lcmdlIHJpbmdzIHdoaWxlIGEgc3VzcGVuc2lvbiBzZXNzaW9uIGlzIGluIHByb2dyZXNzLjRBbGlhc05vdFN0YWxlABkEfFRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZS44VGltZU91dE9mUmFuZ2UAGgR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuWEFsaWFzQWNjb3VudEFscmVhZHlTZXQAGwTAQWxpYXMgPC0+IEFjY291bnQgaXMgYWxyZWFkeSBzZXQgYW5kIHVwIHRvIGRhdGUuME5vdFN1c3BlbmRlZAAcBNBQZXJzb25ob29kIGNhbm5vdCBiZSByZXN1bWVkIGlmIGl0IGlzIG5vdCBzdXNwZW5kZWQuJFN1c3BlbmRlZAAdBGBQZXJzb25ob29kIGlzIHN1c3BlbmRlZC5MSW52YWxpZEtleU1pZ3JhdGlvbgAeBKhJbnZhbGlkIHN0YXRlIGZvciBhdHRlbXB0ZWQga2V5IG1pZ3JhdGlvbi5MS2V5QWxyZWFkeVN1c3BlbmRlZAAfCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIHBlcnNvbiB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAgBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAIQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLnRQZW9wbGVDb2xsZWN0aW9uQWxyZWFkeUV4aXN0cwAiBLxUaGUgcGVvcGxlIGNvbGxlY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLjRBbGlhc01pc21hdGNoACMEGQFUaGUgcHJvdmlkZWQgYWxpYXMgZG9lcyBub3QgbWF0Y2ggdGhlIGFjY291bnQncyBjdXJyZW50IGFsaWFzIG1hcHBpbmcuOE5vU3RhbGVBbGlhc2VzACQEoE5vbmUgb2YgdGhlIHN1cHBsaWVkIGFsaWFzZXMgd2VyZSBzdGFsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQkTW9iQ3JlZGl0BBxCYWxhbmNlAUUBABABFHZvdGVkOAEMdTMyAAEcY2xlYW5lZDgBDHUzMgABHGNvcnJlY3Q4AQx1MzIAARhjcmVkaXRFAQEcQmFsYW5jZQAAJQsAAAQIOAgAKQsMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQgT3BlbkNhc2UELFJ1bnRpbWVDYWxsASAADAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcZGV0YWlscy0LAWBDYXNlRGV0YWlsczxSdW50aW1lQ2FsbD4AARR0YWxseUELASRWb3RlVGFsbHkAAC0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0LENhc2VEZXRhaWxzBCxSdW50aW1lQ2FsbAEgAAwBJHN0YXRlbWVudDELASRTdGF0ZW1lbnQAARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABIGNhbGxiYWNrPQsB/ENhbGxiYWNrPChDYXNlSW5kZXgsIEp1ZGdlbWVudENvbnRleHQsIEp1ZGdlbWVudCksIFJ1bnRpbWVDYWxsPgAAMQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkU3RhdGVtZW50AAEMKFByb29mT2ZJbmsMARhkZXNpZ241CwFUcHJvb2Zfb2ZfaW5rOjpJbmtTcGVjAAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAAUxwcm9iYWJsZV9hY2NlcHRhYmxlWQEBEGJvb2wAAABISWRlbnRpdHlDcmVkZW50aWFsCAEgcGxhdGZvcm05CwFAaWRlbnRpdHk6OlNvY2lhbAABIGV2aWRlbmNlPQUBOGlkZW50aXR5OjpEYXRhAAEANFVzZXJuYW1lVmFsaWQEASB1c2VybmFtZT0FAThpZGVudGl0eTo6RGF0YQACAAA1CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBwcm9vZl9vZl9pbmscSW5rU3BlYwABEEBEZXNpZ25lZEVsZWN0aXZlCADNAwEsRmFtaWx5SW5kZXgAAM0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAgAzQMBLEZhbWlseUluZGV4AAAIASRBY2NvdW50SWQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsCADNAwEsRmFtaWx5SW5kZXgAACgBKFBlcnNvbmFsSWQAAgAoUHJvY2VkdXJhbAgAzQMBLEZhbWlseUluZGV4AABwAThQcm9jZWR1cmFsU2VlZAADAAA5CxQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBpZGVudGl0eRhTb2NpYWwAAQwcVHdpdHRlcgQBIHVzZXJuYW1lPQUBEERhdGEAAAAYR2l0aHViBAEgdXNlcm5hbWU9BQEQRGF0YQABABxEaXNjb3JkBAE8ZGlzcGxheV9hbmRfdGFnPQUBEERhdGEAAgAAPQsQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgQ2FsbGJhY2sIGFBhcmFtcwAsUnVudGltZUNhbGwAAAgBMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AABBCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRWb3RlVGFsbHkAAAwBDGF5ZTgBDHUzMgABDG5heTgBDHUzMgABIGNvbnRlbXB0OAEMdTMyAABFCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBSaXBlQ2FzZQQsUnVudGltZUNhbGwBIAAIARxkZXRhaWxzLQsBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABHHZlcmRpY3RhBAEkSnVkZ2VtZW50AABJCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBEb25lQ2FzZQAACAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcdmVyZGljdGEEASRKdWRnZW1lbnQAAE0LDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0SENyZWRpdERpc3RyaWJ1dGlvbggcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4ABQBFHJvdW5kOAEoUm91bmRJbmRleAABPGluaXRpYWxfYmFsYW5jZUUBARxCYWxhbmNlAAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudAABFHN0YXJ0OAEsQmxvY2tOdW1iZXIAAFELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQsEUwAABABZCwEYVmVjPFQ+AABVCwxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBKFJvdW5kSW5kZXgAAUBhbW91bnRfcGVyX3JvdW5kRQEBHEJhbGFuY2UAARhwZXJpb2Q4ASxCbG9ja051bWJlcgAAWQsAAAJVCwBdCww0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAGELDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEVycm9yBARUAAFUKE5vU3VjaENhc2UAAARgVGhlIGNhc2UgZG9lcyBub3QgZXhpc3QuKE5vU3VjaFZvdGUAAQRgVGhlIHZvdGUgZG9lcyBub3QgZXhpc3QuHE5vdE9wZW4AAgRUVGhlIGNhc2UgaXMgbm90IG9wZW4uHE5vdFJpcGUAAwRUVGhlIGNhc2UgaXMgbm90IHJpcGUuHE5vdERvbmUABARkVGhlIGNhc2UgaXMgbm90IHlldCBkb25lLihDb2RlY0Vycm9yAAUEVQFUaGUgZGVjb2RlIG9mIHRoZSBjYWxsIGZhaWxlZC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/NERpc3BhdGNoRXJyb3IABgRNAVRoZSBjYWxsIGZhaWxlZCB0byBkaXNwYXRjaC4gTWF5YmUgdGhlcmUgd2FzIGEgYnJlYWtpbmcgcnVudGltZSB1cGdyYWRlIGluIGJldHdlZW4/GFJlY2VudAAHBJBUaGUgY2FzZSBpcyB0b28gcmVjZW50IHRvIGJlIHJlYXBlZC4gTm9DcmVkaXQACASgTm90IGVub3VnaCBjcmVkaXQgdG8gcGF5b3V0IHRoZSByZXdhcmRzLiBOb1Jld2FyZAAJBNRObyBtb2IgY3JlZGl0IGRpc3RyaWJ1dGlvbiBpbiBwbGFjZSB0byByZXdhcmQgdm90ZXJzLiBOb1BvaW50cwAKBKBObyBwb2ludHMgdG8gYmUgY29udmVydGVkIHRvIG1vYiBjcmVkaXQuNFRvb01hbnlDbGFpbXMACwRUVG9vIG1hbnkgdm90ZSBjbGFpbXMuIE5vUGF5b3V0AAwEWE5vIHBheW91dCBpbiBwcm9ncmVzcy5IQXJpdGhtZXRpY092ZXJmbG93AA0EtFRoZSBwb2ludCBhbmQvb3IgY3JlZGl0IGFyaXRobWV0aWMgb3ZlcmZsb3dzLkBUb29NYW55U2NoZWR1bGVzAA4EgFRvbyBtYW55IHBheW91dCByb3VuZCBzY2hlZHVsZXMuKE5vU2NoZWR1bGUADwR8Tm8gcGF5b3V0IHJvdW5kIHNjaGVkdWxlIGZvdW5kLiROb1BlbmFsdHkAEARYTm8gdm90ZSBwZW5hbHR5IGZvdW5kLhRFYXJseQARBJRUaGUgdm90ZSBwZW5hbHR5IGhhcyBub3QgZXhwaXJlZCB5ZXQuMFVuZGVyUGVuYWx0eQASBOhUaGUgdm90ZSBjYW5ub3QgYmUgY2FzdCBkdWUgdG8gYSB2b3RpbmcgcGVuYWx0eSBpbiBlZmZlY3QuWENhc2VFeHBpcmF0aW9uRGlzYWJsZWQAEwQdAVRoZSBvcGVuIGNhc2UgZXhwaXJhdGlvbiBpcyBkaXNhYmxlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGFjdGl2ZSB2b3RlcnMuUENhbGxiYWNrV2VpZ2h0VG9vTG93ABQIRQFUaGUgZGlzcGF0Y2hlZCBjYWxsYmFjaydzIHdlaWdodCBleGNlZWRzIHRoZSBkZWNsYXJlZCBgbWF4X2NhbGxiYWNrX3dlaWdodGAgdXBwZXIYYm91bmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCRDYW5kaWRhdGUQLEp1ZGdlbWVudElkATgcRGVwb3NpdAFpCyxCbG9ja051bWJlcgE4JEFjY291bnRJZAEEAQwcQXBwbGllZAwBEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABHGVudHJvcHkIARxFbnRyb3B5AAE0ZW50cm9weV9zaW5jZTgBLEJsb2NrTnVtYmVyAAAAIFNlbGVjdGVkIAEUc2luY2U4ASxCbG9ja051bWJlcgABEGNyZWRtCwGsQ3JlZGliaWxpdHk8RGVwb3NpdCwgUGVyc29uYWxJZCwgQWNjb3VudElkPgABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABHGVudHJvcHkIARxFbnRyb3B5AAEYZGVzaWduNQsBHElua1NwZWMAAShhbGxvY2F0aW9ucQsBKEFsbG9jYXRpb24AARxqdWRnaW5n5AFMT3B0aW9uPEp1ZGdlbWVudElkPgABGGZhaWxlZDgBHENvdW50ZXIAAQAYUHJvdmVuEAEYZGVzaWduNQsBHElua1NwZWMAASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAATB3YXNfcmVmZXJyZWRZAQEQYm9vbAABLHdhc19pbnZpdGVkWQEBEGJvb2wAAgAAaQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQARQEBKEY6OkJhbGFuY2UAAG0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldCxDcmVkaWJpbGl0eQwcRGVwb3NpdAFpCyhQZXJzb25hbElkASgkQWNjb3VudElkAQQBDCBSZWZlcnJlZAQAKAEoUGVyc29uYWxJZAAAABxEZXBvc2l0BABpCwEcRGVwb3NpdAABABxJbnZpdGVkBAAEASRBY2NvdW50SWQAAgAAcQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0KEFsbG9jYXRpb24AAQwcSW5pdGlhbAAAACBJbml0RG9uZQABABBGdWxsAAIAAHULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhQZXJzb24EPEJvdW5kZWRBY2NvdW50cwF5CwAkARhkZXNpZ259CwE8T3B0aW9uPElua1NwZWM+AAFAYWN0aXZlX3JlZmVycmFsc3kLATxCb3VuZGVkQWNjb3VudHMAAWBhbGxvd2VkX3JlZmVycmFsX3RpY2tldHM4ARxDb3VudGVyAAE0YmFkX3JlZmVycmFsczgBHENvdW50ZXIAAVBzdWNjZXNzZnVsX3JlZmVycmFsczgBHENvdW50ZXIAASRyZWZlcnJhbHM4ARxDb3VudGVyAAEsZGVyaXZhdGl2ZXM4ARxDb3VudGVyAAEYYmFubmVkWQEBEGJvb2wAAWBwZW5kaW5nX3JlZmVycmFsX3Jld2FyZHM4ARxDb3VudGVyAAB5CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAB9CwQYT3B0aW9uBARUATULAQgQTm9uZQAAABBTb21lBAA1CwAAAQAAgQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFCwRTAAAEAIkLARhWZWM8VD4AAIULDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDhSZWZlcnJhbFRpY2tldAQYVGlja2V0AQQABAEYdGlja2V0BAEYVGlja2V0AACJCwAAAoULAI0LDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhGYW1pbHkAAAgBEGtpbmSBBAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQAAJELAAAECM0DzQMAlQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MERlc2lnblN0YXR1cwABCCBSZXNlcnZlZAAAACRDb21taXR0ZWQAAQAAmQsAAAQIBAQAnQsMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEVycm9yBARUAAGgKEluUHJvZ3Jlc3MAAATMQWNjb3VudCBpcyBhbHJlYWR5IGFwcGx5aW5nIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuKE5vUmVmZXJyYWwAAQR4QWNjb3VudCBoYXMgbm90IGJlZW4gcmVmZXJyZWQuKEJhZENvbnRleHQAAgToVGhlIGNhbGxiYWNrIGNvbnRleHQgaXMgaW52YWxpZDsgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLkxVbmV4cGVjdGVkSnVkZ2VtZW50AAMEIQFUaGUgaW5jb21pbmcganVkZ2VtZW50IElEIGlzIG5vdCB3aGF0IHdlIHdlcmUgZXhwZWN0aW5nIGZvciB0aGUgYWNjb3VudC4YTm9BcmdzAAQEuE5vIGFyZ3VtZW50cyB3ZXJlIHN1cHBsaWVkIHdpdGggdGhlIGp1ZGdlbWVudC4oTm90QXBwbGllZAAFBMxUaGUgYWNjb3VudCBoYXMgbm90IGFwcGxpZWQgdG8gbWFrZSBhIHByb29mLW9mLWluay4sTm90U2VsZWN0ZWQABgSwVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGNvbW1pdHRlZCB0byBhIGRlc2lnbi4kTm90UHJvdmVuAAcErFRoZSBjYW5kaWRhdGUgZGlkIG5vdCBwcm92ZSB0aGVtc2VsdmVzIHlldC44QWxyZWFkeVN0YXJ0ZWQACATIVGhlIGNhbmRpZGF0ZSBoYXMgYWxyZWFkeSBzdGFydGVkIHRoZWlyIGp1ZGdlbWVudC4oT3V0T2ZSYW5nZQAJBIBUaGUgcGVyc29uYWwgSUQgaXMgbm90IGluIHJhbmdlLjBBbHJlYWR5VGFrZW4ACgScVGhlIHBlcnNvbmFsIElEIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4uPE5vTW9yZVJlZmVycmFscwALBLhUaGUgcGVyc29uIGhhcyBubyBtb3JlIHJlZmVycmFscyBsZWZ0IHRvIGdpdmUuIFRvb0Vhcmx5AAwEYFRoZSByZXJvbGwgaXMgdG9vIGVhcmx5LjREZXNpZ25JbnZhbGlkAA0EoFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBub3QgcHJvY2VkdXJhbC4sRGVzaWduVGFrZW4ADgScVGhlIHJlZmVycmVyJ3MgZGVzaWduIGlzIGFscmVhZHkgdGFrZW4uJEJhZFBhcmVudAAPBBUBVGhlIHJlZmVycmVyIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgcGVyc29uLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJEJhZEZhbWlseQAQBIBUaGUgZGVzaWduIGZhbWlseSBkb2Vzbid0IGV4aXN0LixXcm9uZ0ZhbWlseQARBLRUaGUgZGVzaWduIGZhbWlseSBpcyBpbnZhbGlkIGZvciB0aGlzIGNob2ljZS4sSW5kZXhUb29CaWcAEgRBAVRoZSBpbmRleCBvZiB0aGUgZGVzaWduIG9yIHZhcmlhbnQgaXMgYmV5b25kIHRoZSBhbGxvd2VkIG1heGltdW0gZm9yIHRoZSBmYW1pbHkuEEJ1c3kAEwT4VGhlIHN5c3RlbSBpcyBidXN5IHdpdGggdG9vIG1hbnkgY29tbWl0bWVudHM7IHRyeSBhZ2FpbiBsYXRlci4YQmFubmVkABQEqFRoZSBwZXJzb24gaGFzIGJlZW4gYmFubmVkIGZyb20gcmVmZXJyaW5nLihJbXByb2JhYmxlABUEJQFUaGUgY2FuZGlkYXRlIGhhcyBub3QgZGVtb25zdHJhdGVkIHByb2JhYmx5IHRocm91Z2ggdGhlIGluaXRpYWwgZXZpZGVuY2UuKElkUmVzZXJ2ZWQAFgTAVGhlIHBlcnNvbmFsIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQuGElkVXNlZAAXBOhUaGUgcGVyc29uYWwgaWRlbnRpdHkgaXMgYWxyZWFkeSB0YWtlbiBieSBhIHByb3ZlbiBwZXJzb24uNEludmFsaWRUaWNrZXQAGAR8VGhlIHRpY2tldCBwcm92aWRlZCBpcyBpbnZhbGlkLiBOb1RpY2tldAAZBPBUaGUgY2FsbGVyIGhhcyBub3QgcHJvdmlkZWQgYSByZWZlcnJhbCBvciBpbnZpdGF0aW9uIHRpY2tldC40Tm90QXV0aG9yaXplZAAaBKRUaGUgYWNjb3VudCBpcyBub3QgYXV0aG9yaXplZCB0byBkbyB0aGlzLiROb3RQZXJzb24AGwSQVGhlIHBlcnNvbmFsIGlkZW50aXR5IGRvZXNuJ3QgZXhpc3QuRFJlZmVycmVkQ2FuZGlkYXRlABwEXQFUaGUgY2FuZGlkYXRlIGlzIHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIG5vdCBiZSByZWZlcnJlZC5QTm90UmVmZXJyZWRDYW5kaWRhdGUAHQRdAVRoZSBjYW5kaWRhdGUgaXMgbm90IHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIGJlIHJlZmVycmVkLkhOb1Jld2FyZFRvUmVnaXN0ZXIAHgSgVGhlcmUgaXMgbm8gcmVmZXJyYWwgcmV3YXJkIHRvIHJlZ2lzdGVyLkBSZXdhcmRUb1JlZ2lzdGVyAB8EBQFUaGVyZSBpcyBhIHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkIHRoYXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0LiROb0ludml0ZXIAIARETm8gaW52aXRlciBmb3VuZC5ASW52YWxpZFNpZ25hdHVyZQAhBEhJbnZhbGlkIHNpZ25hdHVyZS4kTm9JbnZpdGVzACIEUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkACMEWEludml0ZSBpcyBhbHJlYWR5IHNldC4oTm9SZWZlcnJlcgAkBHRUaGUgcmVmZXJyZXIgaXMgbm90IGEgcGVyc29uLjBOb3RQb2lQZXJzb24AJQToVGhlIGluZGl2aWR1YWwgaXMgbm90IGEgcGVyc29uIHJlY29nbml6ZWQgYnkgcHJvb2Ygb2YgaW5rLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAAmBIhUaGUgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuaEludmFsaWRSZWltYnVyc2VtZW50VmFsdWVzACcElFRoZSByZWltYnVyc2VtZW50IHZhbHVlcyBhcmUgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuoQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzOEFyY2hpdmVkUGxheWVyBCxCbG9ja051bWJlcgE4AQggS2lja2FibGUIAShmaXJzdF9nYW1lOAEcR2FtZUlkeAABOGFyY2hpdmVkX3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAoVW5raWNrYWJsZQQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEAAKULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcxhQbGF5ZXIELFBsYXlEZXBvc2l0AakLACQBKGZpcnN0X2dhbWU4ARxHYW1lSWR4AAEocmVnaXN0ZXJlZFkBARBib29sAAEsc2VudF9yZXBvcnRZAQEQYm9vbAABaGVhcmx5X2F0dGVuZGFuY2VfZW5hY3RtZW50rQsBgE9wdGlvbjxFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQ+AAEoeWVzX3BlcnNvbgwBCHU4AAE0bm9fbm90X3BlcnNvbgwBCHU4AAFgZXhwZWN0ZWRfbWF4X3ZvdGVfd2VpZ2h0zQMBDHUxNgABLHZvdGVfd2VpZ2h0DAEIdTgAASxjcmVkaWJpbGl0ebkLAXhQbGF5ZXJDcmVkaWJpbGl0eTxQbGF5RGVwb3NpdD4AAKkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAEUBAShGOjpCYWxhbmNlAACtCwQYT3B0aW9uBARUAbELAQgQTm9uZQAAABBTb21lBACxCwAAAQAAsQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzYEVhcmx5QXR0ZW5kYW5jZUVuYWN0bWVudAAACAEoYXR0ZW5kYW5jZVkBARBib29sAAEsZGlzcG9zaXRpb261CwFEUGxheWVyRGlzcG9zaXRpb24AALULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0RQbGF5ZXJEaXNwb3NpdGlvbgABDBBLZWVwAAAAPEFyY2hpdmVLaWNrYWJsZQABAERBcmNoaXZlVW5raWNrYWJsZQACAAC5CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyQ3JlZGliaWxpdHkELFBsYXlEZXBvc2l0AakLAQwcSW52aXRlZAAAAChSZWNvZ25pemVkAAEAHERlcG9zaXQEAKkLASxQbGF5RGVwb3NpdAACAAC9CwxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMgR2FtZUluZm8EJEFjY291bnRJZAEEACgBFGluZGV4OAEcR2FtZUlkeAABRHJlZ2lzdHJhdGlvbl9lbmRzOAEMdTMyAAFAc2h1ZmZsZV9kZWFkbGluZTgBDHUzMgABJGdhbWVfZGF0ZTgBDHUzMgABLHJlcG9ydF9lbmRzOAEMdTMyAAEUc3RhdGXBCwFQR2FtZVN0YXRlPEFjY291bnRJZD4AAThtYXhfZ3JvdXBfc2l6ZTgBDHUzMgABGHJvdW5kcwwBCHU4AAFIcGVuZGluZ19hdHRlbmRhbmNlOAEMdTMyAAFIYWlyZHJvcHNfc2NoZWR1bGVkDAEIdTgAAMELDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyRHYW1lU3RhdGUEJEFjY291bnRJZAEEARQwUmVnaXN0cmF0aW9uBAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAAAABxTaHVmZmxlBAEQc3RlcMULAVhTaHVmZmxlU3RlcDxBY2NvdW50SWQ+AAEAJFJlcG9ydGluZwQBMHBsYXllcl9jb3VudDgBDHUzMgACADRQbGF5ZXJQcm9jZXNzBAEQc3RlcNELAXBQbGF5ZXJQcm9jZXNzU3RlcDxBY2NvdW50SWQ+AAMAKENhbmNlbGxpbmcEARBzdGVw1QsBZENhbmNlbGxpbmdTdGVwPEFjY291bnRJZD4ABAAAxQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLFNodWZmbGVTdGVwBCRBY2NvdW50SWQBBAEQLFN0ZXAxSW5zZXJ0BAE4bGFzdF9pdGVyYXRpb27JCwGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAAADRTdGVwMlJldHJpZXZlCAFEbmV4dF9wbGF5ZXJfaW5kZXg4ASxQbGF5ZXJJbmRleAABFHBoYXNlzQsBUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEATFN0ZXAzQ29tcHV0ZVdlaWdodHMMAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAFAcmVjb2duaXplZF9jb3VudDgBDHUzMgACAERTdGVwNEF3YWl0U2Vzc2lvbgQBMHBsYXllcl9jb3VudDgBDHUzMgADAADJCwQYT3B0aW9uBARUAQkFAQgQTm9uZQAAABBTb21lBAAJBQAAAQAAzQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzUFNodWZmbGVSZXRyaWV2ZVBoYXNlAAEIKFJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAQBQHJlY29nbml6ZWRfY291bnQ4AQx1MzIAAQAA0QsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzRFBsYXllclByb2Nlc3NTdGVwBCRBY2NvdW50SWQBBAEITFN0ZXAxUHJvY2Vzc1BsYXllcnMIAThsYXN0X2l0ZXJhdGlvbskLAYhPcHRpb248QWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4+AAEwcGxheWVyX2NvdW50OAEMdTMyAAAARFN0ZXAyQ2xlYXJJbmRpY2VzAAEAANULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhDYW5jZWxsaW5nU3RlcAQkQWNjb3VudElkAQQBCERTdGVwMURyYWluU2h1ZmZsZQAAAERTdGVwMkRyYWluUGxheWVycwQBOGxhc3RfaXRlcmF0aW9uyQsBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AAQAA2QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA3QsAAAQIDDgA4QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAaQQBGFZlYzxUPgAA5QsAAAQIDAgA6QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJBARTAAAEAMUEARhWZWM8VD4AAO0LAAADGwAAAAwA8QsMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBRFcnJvcgQEVAABiCxHYW1lT25nb2luZwAABDRHYW1lIG9uZ29pbmcuOE5vUmVnaXN0cmF0aW9uAAEEeE5vIHJlZ2lzdHJhdGlvbiBwaGFzZSBvbmdvaW5nLkRPdXRkYXRlZEdhbWVTZXR1cAACBFhUaGUgc2V0dXAgaXMgb3V0ZGF0ZWQuQEludmFsaWRHYW1lU2V0dXAAAwQ4SW52YWxpZCBzZXR1cC40SW52YWxpZFJlcG9ydAAEBDxJbnZhbGlkIHJlcG9ydC4YTm9HYW1lAAUEQE5vIGdhbWUgb25nb2luZy4sTm9SZXBvcnRpbmcABgRgTm8gcmVwb3J0IHBoYXNlIG9uZ29pbmcuNE5vdFJlZ2lzdGVyZWQABwQ8Tm90IHJlZ2lzdGVyZWQuREFscmVhZHlSZWdpc3RlcmVkAAgEaFBsYXllciBhbHJlYWR5IHJlZ2lzdGVyZWQuRFJlcG9ydEFscmVhZHlTZW50AAkEUFJlcG9ydCBhbHJlYWR5IHNlbnQuFEVhcmx5AAoEbE9wZXJhdGlvbiBpcyBub3QgdmFsaWQgeWV0LkROb3RLaWNrYWJsZVBsYXllcgALBJhUaGUgb3BlcmF0aW9uIGV4cGVjdCBhIHBsYXllciBhY2NvdW50LkBOb0FyY2hpdmVkUGxheWVyAAwEZE5vIGFyY2hpdmVkIHBsYXllciBmb3VuZC4gTm9UaWNrZXQADQRATm8gdGlja2V0IGZvdW5kLiROb0ludml0ZXMADgRQTm8gaW52aXRlIGF2YWlsYWJsZS44QWxyZWFkeUludml0ZWQADwRYSW52aXRlIGlzIGFscmVhZHkgc2V0LkBOb3RBY2NvdW50UGxheWVyABAE+E5vdCBhbiBhY2NvdW50IGJhc2VkIHBsYXllciwgZXhwZWN0ZWQgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIuaFVzZUludml0ZUJ1dEFscmVhZHlQbGF5aW5nABEEyFRoZSBwbGF5ZXIgY2FuJ3QgdXNlIGFuIGludml0ZSBpZiBhbHJlYWR5IHBsYXlpbmcuVEFub3RoZXJBY2NvdW50SW52aXRlZAASBE0BVGhlIGxpdGUgcGVyc29uIGFscmVhZHkgaW52aXRlZCBhbm90aGVyIGFjY291bnQsIGFuZCBpbnZpdGVzIG9ubHkgb25lIGFjY291bnQgZXZlci5QVG9vTWFueUdhbWVTY2hlZHVsZXMAEwRBAVRoZSBudW1iZXIgb2YgZXhpc3Rpbmcgc2NoZWR1bGVzIGFuZCBuZXcgc2NoZWR1bGVzIGV4Y2VlZHMgdGhlIGNvbmZpZ3VyZWQgbGltaXQuTE5vU3VjaEdhbWVTY2hlZHVsZWQAFAQpAVRoZSBnYW1lIHRoYXQgd2FzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgd2FzIG5vdCBmb3VuZCBpbiBzY2hlZHVsZWQgZ2FtZXMugEludmFsaWRTdGF0ZW1lbnRBY2NvdW50U2lnbmF0dXJlABUErFRoZSBzdGF0ZW1lbnQgYWNjb3VudCBzaWduYXR1cmUgaXMgaW52YWxpZC5wU3RhdGVtZW50QWNjb3VudEFscmVhZHlJblVzZQAWBOxUaGUgc3RhdGVtZW50IGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2VkIGJ5IGFub3RoZXIgcGxheWVyLmRJbnRlcm5hbEVycm9ySW52YWxpZFN0YXRlABcEdEludGVybmFsIGVycm9yIGludmFsaWQgc3RhdGUuQEludmFsaWRHYW1lU3RhdGUAGATwVGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHRoZSBjdXJyZW50IGdhbWUgc3RhdGUuIE5vUGxheWVyABkEQE5vIHBsYXllciBmb3VuZC6QQ2Fubm90T2ZmYm9hcmRXaGlsZVJlZ2lzdGVyZWRGb3JHYW1lABoE3FRoZSBwbGF5ZXIgY2Fubm90IG9mZmJvYXJkIHdoaWxlIHJlZ2lzdGVyZWQgZm9yIGEgZ2FtZS4wSW52YWxpZFN0YXRlABsENEludmFsaWQgc3RhdGVISW52YWxpZFBsYXlEZXBvc2l0ABwE5GBzZXRfcGxheV9kZXBvc2l0YDogdGhlIHN1cHBsaWVkIGFtb3VudCBtdXN0IGJlIG5vbi16ZXJvLohJbnZhbGlkQWlyZHJvcFZyZlZhcmlhbnRGb3JBY2NvdW50AB0AmEludmFsaWRBaXJkcm9wVnJmVmFyaWFudEZvclJlY29nbml0aW9uAB4AWEludmFsaWRBaXJkcm9wVnJmQ291bnQAHwhFAVRoZSBudW1iZXIgb2Ygc3VwcGxpZWQgYWlyZHJvcCBWUkYgZW50cmllcyBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNjaGVkdWxlZDxhaXJkcm9wIGV2ZW50cy5UTm90RWxpZ2libGVGb3JBaXJkcm9wACAIVQFgY2xhaW1fYWlyZHJvcGA6IHRoZSBjbGFpbWFudCBpcyBub3QgcmVjb2duaXplZCBpbiBwYWxsZXQtc2NvcmUsIG9yIHRoZWlyIG1vc3QgcmVjZW509GF0dGVuZGVkIGdhbWUgZG9lcyBub3QgbWF0Y2ggdGhlIGBnYW1lX2luZGV4YCBvZiB0aGUgYWlyZHJvcC5cQ3JlZGl0Q2FwYWNpdHlFeGhhdXN0ZWQAIQhZAWByZXBvcnRgOiBmZXdlciBORlQgY2xhaW0gY3JlZGl0cyBjYW4gYmUgcmVjb3JkZWQgcmlnaHQgbm93IHRoYW4gdGhlIHJlcG9ydCBtYXkgYXdhcmQuGQFTdWJtaXQgaXQgYWdhaW4gb25jZSBsYXRlciBibG9ja3MgaGF2ZSBjb21taXR0ZWQgdGhlIGJ1ZmZlcmVkIGNyZWRpdHMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvULDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBRQEAJAEUc2NvcmUMAQh1OAABGHN0cmVha/kLARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3Rvcnn9CwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXRFAQEcQmFsYW5jZQABKGNhc2hlZF9vdXRZAQEQYm9vbAABSHJlYWNoZWRfcGVyc29uaG9vZFkBARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kWQEBEGJvb2wAASxyZWNvZ25pdGlvbgEMASxSZWNvZ25pdGlvbgABSGxhc3RfYXR0ZW5kZWRfZ2FtZeQBLE9wdGlvbjx1MzI+AAD5CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQADAEIdTgAAAAYQWJzZW50BAAMAQh1OAABAAD9CwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzREF0dGVuZGFuY2VIaXN0b3J5AAAEAAwBCHU4AAABDAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzLFJlY29nbml0aW9uAAEQUEV4dGVybmFsbHlSZWNvZ25pemVkAAAANE5vdFJlY29nbml6ZWQAAQAkU3VzcGVuZGVkBAAoAShQZXJzb25hbElkAAIAKFJlY29nbml6ZWQEACgBKFBlcnNvbmFsSWQAAwAABQwAAAQIOAkFAAkMDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUm91bmRQYXlvdXQEHEJhbGFuY2UBRQEAEAFEcmVtYWluaW5nX2JhbGFuY2VFAQEcQmFsYW5jZQABLHBvaW50X3ByaWNlRQEBHEJhbGFuY2UAASRyZW1haW5kZXJFAQEcQmFsYW5jZQABMHRvdGFsX3BvaW50czgBDHUzMgAADQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyRSb3VuZEluZm8ILEJsb2NrTnVtYmVyATgcQmFsYW5jZQFFAQAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdEUBARxCYWxhbmNlAAARDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUMBFMAAAQAGQwBGFZlYzxUPgAAFQwMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlczhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQFFASxCbG9ja051bWJlcgE4AAwBJHJlbWFpbmluZzgBDHUzMgABQGFtb3VudF9wZXJfcm91bmRFAQEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAABkMAAACFQwAHQwMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAWwkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5gQWJzZW5jZVNjaGVkdWxlTm90U29ydGVkABQEMQFBYnNlbmNlLWdyYWNlIHRpZXJzIG11c3QgYmUgc29ydGVkIGJ5IGFzY2VuZGluZyBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuXFBlcnNvbmhvb2RTY2hlZHVsZUVtcHR5ABUEBQFUaGUgcGVyc29uaG9vZC10aHJlc2hvbGQgc2NoZWR1bGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB0aWVyLnBQZXJzb25ob29kU2NvcmVUaHJlc2hvbGRaZXJvABYE3EEgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBoYXMgYHNjb3JlX3RocmVzaG9sZCA9PSAwYC6AUGVyc29uaG9vZFNjb3JlVGhyZXNob2xkVG9vTGFyZ2UAFwT8QSBwZXJzb25ob29kLXRocmVzaG9sZCB0aWVyIGV4Y2VlZHMgYE1BWF9QRVJTT05IT09EX1RIUkVTSE9MRGAubFBlcnNvbmhvb2RTY2hlZHVsZU5vdFNvcnRlZAAYCNhQZXJzb25ob29kLXRocmVzaG9sZCB0aWVycyBtdXN0IGJlIHNvcnRlZCBieSBhc2NlbmRpbmdwYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLnhQZXJzb25ob29kU2NoZWR1bGVOb3RNb25vdG9uaWMAGQgRAVBlcnNvbmhvb2QtdGhyZXNob2xkIGBzY29yZV90aHJlc2hvbGRgIHZhbHVlcyBtdXN0IGJlIG5vbi1kZWNyZWFzaW5n9GFjcm9zcyB0aWVycyAoYSBsYXJnZXIgcG9wdWxhdGlvbiBtdXN0IG5vdCBoYXZlIGEgbG93ZXIgYmFyKS5oUGVyc29uaG9vZFNjaGVkdWxlTm90VG90YWwAGgj0VGhlIGxhc3QgcGVyc29uaG9vZC10aHJlc2hvbGQgdGllciBtdXN0IGNvdmVyIGFsbCBwb3B1bGF0aW9uc6goYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQgPT0gdTMyOjpNQVhgKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQwMYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlczhBd2FyZGVkQ3JlZGl0cwAABABFAQEQdTEyOAAAJQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEpDARTAAAEAC0MARhWZWM8VD4AACkMDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNMTmZ0Q2xhaW1DcmVkaXRBd2FyZAQkQWNjb3VudElkAQQACAEgY2xhaW1hbnQJBQFoQWNjb3VudE9yUGVyc29uPEFjY291bnRJZD4AARhjcmVkaXQIAThOZnRDbGFpbUNyZWRpdAAALQwAAAIpDAAxDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABpBAEYVmVjPFQ+AAA1DAxgaW5kaXZfcGFsbGV0X25mdF9jcmVkaXRzFHR5cGVzMENyZWRpdEJ1ZmZlcgAADAEoZ2FtZV9pbmRleDgBHEdhbWVJZHgAASR0aW1lc3RhbXA4AQx1MzIAARhhd2FyZHM4AQx1MzIAADkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQwEUwAABABBDAEYVmVjPFQ+AAA9DAAABAgoOABBDAAAAj0MAEUMAAAECEkMOABJDAw0aW5kaXZfc3VwcG9ydBR1dGlsczBCaWdFbmRpYW5VMzIAAwQAAAAMBBkBQSB1MzIgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLk0MDGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMYcGFsbGV0FEVycm9yBARUAAEgQE5vQmxvY2tzVG9SZXBsYXkAAAT8QSBjcmVkaXQgdHJlZSByZXBsYXkgd2FzIHJlcXVlc3RlZCBmb3IgYW4gZW1wdHkgbGlzdCBvZiBibG9ja3MuUFVuc29ydGVkUmVwbGF5QmxvY2tzAAEE5FRoZSBibG9ja3MgdG8gcmVwbGF5IGFyZSBub3QgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLlBOb0NyZWRpdFRyZWVGb3JCbG9jawACBLxOb25lIG9mIHRoZSBibG9ja3MgdG8gcmVwbGF5IGhhcyBhIGNyZWRpdCB0cmVlLlBSZXBsYXlDb29sZG93bkFjdGl2ZQADCFkBQSBjcmVkaXQgdHJlZSByZXBsYXkgcmFuIHdpdGhpbiBgUmVwbGF5Q29vbGRvd25TZWNvbmRzYCBvZiB0aGUgbGFzdCBvbmUuIFRoZSB3aW5kb3cgaXNcc2hhcmVkIGJ5IGV2ZXJ5IGNhbGxlci5wRXhjZWVkc0NsYWltc0NoYW5uZWxDYXBhY2l0eQAECEkBVGhlIHJlcGxheSBkb2VzIG5vdCBmaXQgd2hhdCB0aGUgSFJNUCBjaGFubmVsIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIGNhbiBjYXJyeSBpbjBvbmUgbWVzc2FnZS5MQ3JlZGl0VHJlZVhjbUZhaWxlZAAFBAUBU2VuZGluZyB0aGUgY3JlZGl0IHRyZWVzIHRvIHRoZSBORlQgY2xhaW1zIGNoYWluIG92ZXIgWENNIGZhaWxlZC5UQ3JlZGl0U2xvdE91dE9mQm91bmRzAAYIVQFUaGUgcm91bmQgaXMgbm90IGJlbG93IGBNYXhSb3VuZHNgLCBvciB0aGUgYXR0ZXN0ZXIgc2xvdCBpcyBub3QgYmVsb3cgYE1heEdyb3VwU2l6ZWAsuHNvIHRoZSB0d28gbmFtZSBhIGNyZWRpdCBzbG90IG5vIGdhbWUgY2FuIHVzZS5AQ3JlZGl0Tm90QXdhcmRlZAAHCFUBTm8gY3JlZGl0IHdhcyBhd2FyZGVkOiB0aGUgY2xhaW1hbnQgYWxyZWFkeSBob2xkcyB0aGUgc2xvdCdzIGNyZWRpdCBmb3IgdGhhdCBnYW1lLCBvcpRubyBidWZmZXIgaGFzIHJvb20gZm9yIGFub3RoZXIgYXdhcmQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEMDFhpbmRpdl9wYWxsZXRfZHVtbXlfZGltGHBhbGxldBhSZWNvcmQEDEtleQEIAAgBDGtleQgBDEtleQABJHN1c3BlbmRlZFkBARBib29sAABVDAxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXJyb3IEBFQAARAkTm90UGVyc29uAAAE3FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSByZWNvZ25pemVkIHBlcnNvbi4wTm90U3VzcGVuZGVkAAEE2FRoZSBwZXJzb25hbCBJRCBkb2VzIG5vdCBiZWxvbmcgdG8gYSBzdXNwZW5kZWQgcGVyc29uLixOb3RSZXNlcnZlZAACBORUaGUgcGVyc29uYWwgSUQgaXMgbm90IHJlc2VydmVkIGFuZCBhd2FpdGluZyByZWNvZ25pdGlvbi40VG9vTWFueVBlb3BsZQADBMBUaGUgb3BlcmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBtYW55IHBlb3BsZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlczhMaXRlUGVyc29uSW5mbwgYTWVtYmVyAQgYTWV0aG9kAV0MAAgBMHJpbmdfdnJmX2tleQgBGE1lbWJlcgABGG1ldGhvZF0MARhNZXRob2QAAF0MDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXNEUmVjb2duaXRpb25NZXRob2QEHEFjY291bnQBBAEIMFVuaXF1ZURldmljZQQABAEcQWNjb3VudAAAAAxGZWUAAQAAYQwMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAATBYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC6ISW52YWxpZENvbnN1bWVyUmVnaXN0cmF0aW9uQWNjb3VudAALBPxUaGUgY29uc3VtZXIgcmVnaXN0cmF0aW9uIGFjY291bnQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuZQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleX0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWVBBQFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWU9BQEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eWkMASxDcmVkaWJpbGl0eQAAaQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkWQEBEGJvb2wAAQAAbQwAAAQISQwIAHEMDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzXFN0bXRTdG9yZUFsbG93YW5jZUVudHJ5BARUAAAMAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEMc2VxOAEMdTMyAAEUc2luY2UoAQx1NjQAAHUMAAAECAR5DAB5DAAABAxJDDgIAH0MDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzYE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbgQcQWNjb3VudAEEAAgBKGFjY291bnRfaWQEARxBY2NvdW50AAEkcmVmZXJlbmNlTQUBVE5vdGlmaWNhdGlvblJlZmVyZW5jZQAAgQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFDARTAAAEAIkMARhWZWM8VD4AAIUMDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVFJlc2VydmF0aW9uUXVldWVFbnRyeQQcQWNjb3VudAEEAAgBHGFjY291bnQEARxBY2NvdW50AAEkam9pbmVkX2F0KAEMdTY0AACJDAAAAoUMAI0MCEhzcF9zdGF0ZW1lbnRfc3RvcmVIU3RhdGVtZW50QWxsb3dhbmNlAAAIASRtYXhfY291bnQ4AQx1MzIAASBtYXhfc2l6ZTgBDHUzMgAAkQwMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEVycm9yBARUAAFgPEludmFsaWRVc2VybmFtZQAABJxVc2VybmFtZSBkb2VzIG5vdCBmaXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgABBGhVc2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLkRBbHJlYWR5UmVnaXN0ZXJlZAACBHxDb25zdW1lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAMEnFByb3ZpZGVkIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjROb3RSZWdpc3RlcmVkAAQEnFBlcnNvbiBpcyBub3QgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjROb3RGdWxsUGVyc29uAAUEeENvbnN1bWVyIGlzIG5vdCBhIGZ1bGwgcGVyc29uLjRUb3VjaE5vdFJlYWR5AAYEzEF0dGVtcHRlZCB0byB1cGRhdGUgcGVyc29uIGF1dGhvcml6YXRpb24gdG9vIGVhcmx5LjROb1Jlc2VydmF0aW9uAAcEaFJlc2VydmF0aW9uIGlzIG5vdCBhY3RpdmUuUE5vdFJlc2VydmF0aW9uSG9sZGVyAAgEFQFUaGUgbGlua2VkIGxpdGUgaWRlbnRpdHkgaXMgbm90IHRoZSBhY3RpdmUgaG9sZGVyIG9mIHRoZSByZXNlcnZhdGlvbi5gVXNlcm5hbWVSZXNlcnZhdGlvblRha2VuAAkE5FRoZSB1c2VybmFtZSBpbiB0aGUgcmVzZXJ2YXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IHRha2VuLkBSZXNlcnZhdGlvbkZyZXNoAAoEgFRoZSByZXNlcnZhdGlvbiBoYXMgbm90IGV4cGlyZWQuQE5vTGlua2VkSWRlbnRpdHkACwScVGhlcmUgaXMgbm8gbGl0ZSBjb25zdW1lciB0byBiZSBsaW5rZWQuNEFscmVhZHlMaW5rZWQADAT4VGhlIGxpdGUgY29uc3VtZXIgaXMgYWxyZWFkeSBsaW5rZWQgdG8gYSBmdWxsIHBlcnNvbiBjb25zdW1lci5QUGVyc29uQXV0aE5vdEV4cGlyZWQADQS8VGhlIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaGFzIG5vdCBleHBpcmVkIHlldC44QWxyZWFkeURlbW90ZWQADgSQVGhlIHBlcnNvbiBoYXMgYWxyZWFkeSBiZWVuIGRlbW90ZWQuJFF1ZXVlRnVsbAAPBIBRdWV1ZSBmb3IgdGhpcyB1c2VybmFtZSBpcyBmdWxsLihOb3RJblF1ZXVlABAEuEFjY291bnQgaXMgbm90IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyB1c2VybmFtZS5UQWxyZWFkeUhhc1Jlc2VydmF0aW9uABEE3EFjY291bnQgYWxyZWFkeSBoYXMgYSByZXNlcnZhdGlvbiBmb3IgYW5vdGhlciB1c2VybmFtZS5sSW52YWxpZE5vdGlmaWNhdGlvblNlcXVlbmNlABIEyE5vdGlmaWNhdGlvbiBzZXF1ZW5jZSBpcyBpbnZhbGlkIGZvciB0aGUgY29uc3VtZXIuZEludmFsaWROb3RpZmljYXRpb25QZXJpb2QAEwTkTm90aWZpY2F0aW9uIHBlcmlvZCBpcyBvdXRzaWRlIHRoZSBhY2NlcHRlZCBjbGFpbSB3aW5kb3cuiE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbk5vdEV4cGlyZWQAFAS0Tm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBpcyBub3QgZXhwaXJlZCB5ZXQulE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbkFscmVhZHlFeGlzdHMAFQT8Tm90aWZpY2F0aW9uIHJlZ2lzdHJhdGlvbiBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGFsaWFzL2NvbnRleHQucFN0bXRTdG9yZVJlcGxhY2VtZW50VG9vRWFybHkAFgQZAVRoZSByZXBsYWNlbWVudCBjb29sZG93biBoYXMgbm90IGVsYXBzZWQgc2luY2UgdGhlIGVudHJ5IHdhcyBsYXN0IHNldC6MTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0RXhjZWVkZWQAFwTsVGhlIHByb3ZpZGVkIGBsaW1pdGAgZXhjZWVkcyBgTG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0YC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQwAAAQIVQU4AJkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQwEUwAABAClDAEYVmVjPFQ+AACdDAxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldDhVbmNoZWNrZWRDaHVuawQEVAAABAChDAEgVDo6Q2h1bmsAAKEMDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMAKUMAAACnQwAqQwMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgFxAQAQARRvd25lcrEMAYhDb2xsZWN0aW9uT3duZXI8QWNjb3VudCwgTG9jYXRpb24+AAEQbW9kZbUMASBSaW5nTW9kZQABJHJpbmdfc2l6ZVUFATBSaW5nRXhwb25lbnQAAVBzZWxmX2luY2x1c2lvbl9kZWxhebUDASxPcHRpb248dTY0PgAAsQwMUGluZGl2X3BhbGxldF9tZW1iZXJzFHR5cGVzPENvbGxlY3Rpb25Pd25lcggcQWNjb3VudAEEIExvY2F0aW9uAXEBAQggRXh0ZXJuYWwEAHEBASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAAC1DBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAALkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AAL0MAAAECAg4AMEMDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdK0FATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGXFDAFESW50ZXJtZWRpYXRlT2Y8VD4AAMUMDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwAyQwAAAQMCDhJDADNDAxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdK0FATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAA0QwAAAQMCDg4ANUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFEEARhWZWM8VD4AANkMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2W1AwEsT3B0aW9uPHU2ND4AAN0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGkEARhWZWM8VD4AAOEMAAAECAgIAOUMEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAADpDBA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2Rl7QwBQFJpbmdNdXRhdGlvbk1vZGUAAO0MEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAA8QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAUQQBGFZlYzxUPgAA9QwMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABdCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAICFEBVGhlIHJpbmcgaW5kZXggaXMgbm90IHZhbGlkIGZvciB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbjogaXQgaXMgdGhlIHRvcCByaW5nIHVzZWQgZm9ypG9uYm9hcmRpbmcgb3IgaXQgcmVmZXJzIHRvIGFuIGVtcHR5IHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkhUb29NYW55Q29sbGVjdGlvbnMAFASQVG9vIG1hbnkgY29sbGVjdGlvbnMgZm9yIHRoaXMgb3duZXIuaEludmFsaWRSaW5nU2l6ZUZvckZsZXhpYmxlABUEEQFGbGV4aWJsZSBjb2xsZWN0aW9ucyBtdXN0IHVzZSB0aGUgTWF4RmxleGlibGVSaW5nRXhwb25lbnQgcmluZyBzaXplLkxJbnZhbGlkUmluZ0V4cG9uZW50ABYEjFRoZSByaW5nIGV4cG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuTFByZW1hdHVyZU9uYm9hcmRpbmcAFwS0SW5zdWZmaWNpZW50IG1lbWJlcnMgaW4gdGhlIHF1ZXVlIHRvIG9uYm9hcmQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgAYBPRUaGUgY29sbGVjdGlvbiBpcyBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQuSE5vdENvbGxlY3Rpb25Pd25lcgAZBLhUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhlIGNvbGxlY3Rpb24uNE5vdE9uYm9hcmRpbmcAGgSoVGhlIG1lbWJlciBpcyBub3QgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUuOE5vdGhpbmdUb0J1aWxkABsEfFRoZXJlIGlzIG5vIHJpbmcgcm9vdCB0byBidWlsZC5UQ29sbGVjdGlvbk5vdEZsZXhpYmxlABwE2E9ubHkgdGhlIHJpbmdzIG9mIGEgZmxleGlibGUgY29sbGVjdGlvbiBjYW4gYmUgbWVyZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC75DAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0IExvY2tJbmZvAAAIARhyZWFzb279DAEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AAD9DAxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAAAQ0AAAQIOBUEAAUNAAAEEDgVBDgIAAkNDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQoQWxpYXNTdGF0ZQABCBhMb2NrZWQEAPkMASBMb2NrSW5mbwAAACBVbmxvYWRlZAABAAANDQAABAw4FQQ4ABENDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXRAQXJjaGl2ZWRSZWN5Y2xlcgAACAEoY29tbWl0bWVudDwBEEgyNTYAASRyZW1haW5pbmc4AQx1MzIAABUNDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQ4SW5zdGFuY2VSZWNvcmQEBFQAABgBIGFzc2V0X2lkcQEBVEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPgABKGFzc2V0X3VuaXRFAQFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEQbW9kZR0IATBJbnN0YW5jZU1vZGUAAVBjdXJyZW50X2xvYWRfZGVwb3NpdBkNAQUBT3B0aW9uPERlcG9zaXRUaWVyPEZ1bmdpYmxlc0Fzc2V0SWRPZjxUPiwgRnVuZ2libGVzQmFsYW5jZU9mPFQ+Pj4AAUBvbGRfbG9hZF9kZXBvc2l0GQ0BBQFPcHRpb248RGVwb3NpdFRpZXI8RnVuZ2libGVzQXNzZXRJZE9mPFQ+LCBGdW5naWJsZXNCYWxhbmNlT2Y8VD4+PgABHGNyZWF0b3IhDQHIT3B0aW9uPChUOjpBY2NvdW50SWQsIFQ6Okluc3RhbmNlQ3JlYXRpb25EZXBvc2l0KT4AABkNBBhPcHRpb24EBFQBHQ0BCBBOb25lAAAAEFNvbWUEAB0NAAABAAAdDQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0LERlcG9zaXRUaWVyCBxBc3NldElkAXEBHEJhbGFuY2UBRQEADAEgYXNzZXRfaWRxAQEcQXNzZXRJZAABFHByaWNlRQEBHEJhbGFuY2UAARRjb3VudDgBDHUzMgAAIQ0EGE9wdGlvbgQEVAElDQEIEE5vbmUAAAAQU29tZQQAJQ0AAAEAACUNAAAECAQpDQApDRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABFAQEoRjo6QmFsYW5jZQAALQ0AAAQIcQE4ADENAAAEDDgEcQEANQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABwFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFAEhEZW5vbWluYXRpb25Ub29CaWcABgBQRGVub21pbmF0aW9uVG9vU21hbGwABwBIQ29pbkFtb3VudEJlbG93RmVlAAgAWERlbm9taW5hdGlvbk91dE9mQm91bmQACQBsTG9zc3lEZW5vbWluYXRpb25Db252ZXJzaW9uAAoIOQFUaGUgZGVub21pbmF0aW9uIGNhbm5vdCBiZSBsb3NzbGVzc2x5IGNvbnZlcnRlZCB0byBhbiBhc3NldCBhbW91bnQgYmVjYXVzZSB0aGX8aW5zdGFuY2UncyBgYXNzZXRfdW5pdGAgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgYDJefHZhbHVlfGAuREludmFsaWRBbGlhc1Byb29mAAsATE5vVW5sb2FkaW5nUmVjeWNsZXIADABUUHJvb2ZBbmRBbGlhc01pc21hdGNoAA0AOE5vdGhpbmdUb0J1aWxkAA4AMFRvb01hbnlSaW5ncwAPAFRBZGRyZXNzQWxyZWFkeUhhc0NvaW4AEABcSW52YWxpZFByb29mT2ZPd25lcnNoaXAAEQAsRW1wdHlJbnB1dHMAEgBAUmVjeWNsZXJNaXNtYXRjaAATBAkBVGhlIGZlZSByZWN5Y2xlciBpbiB0aGUgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSBjYWxsJ3MgcmVjeWNsZXIuYEluc3VmZmljaWVudFVubG9hZEZvckZlZQAUBLxUaGUgdG90YWwgdW5sb2FkZWQgYW1vdW50IGlzIGxlc3MgdGhhbiB0aGUgZmVlLkRBbGlhc05vdFByZW1hcmtlZAAVBDkBVGhlIGZpcnN0IGFsaWFzIHdhcyBub3QgcHJlLW1hcmtlZCBieSBleHRlbnNpb24gKHJlcXVpcmVkIGZvciBGcm9tT3V0cHV0IGZlZSkuXEludmFsaWRSZWN5Y2xlclJldmlzaW9uABYESQFUaGUgcmVjeWNsZXIgcmV2aXNpb24gZG9lcyBub3QgbWF0Y2ggKHJlY3ljbGVyIG1heSBub3QgZXhpc3Qgb3IgaGFzIGJlZW4gcmVidWlsdCkuMEludmFsaWRTcGxpdAAXAGhDYW5ub3RDb252ZXJ0QXNzZXRUb05hdGl2ZQAYBBkBVGhlIGFzc2V0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5IHRvIHBheSB0aGUgZmVlLlhBbGlhc1RlbXBvcmFyaWx5TG9ja2VkABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoIWQFbYENhbGw6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5zYF0gd2l0aCBbYFVubG9hZEZlZTo6UHJlcGFpZGBdIHJlcXVpcmVzIGBtYXhfZmVlYCB0bxRiZSAwLkhNYXhGZWVFeGNlZWRzSW5wdXQAGwSoVGhlIG1heF9mZWUgZXhjZWVkcyB0aGUgdG90YWwgaW5wdXQgdmFsdWUuNEludmFsaWRNYXhGZWUAHATYVGhlIG1heCBmZWUgYXJndW1lbnQgZG9lc24ndCBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuMFVua25vd25Bc3NldAAdBAEBVGhlIHVuZGVybHlpbmcgYXNzZXQgaWQgZG9lcyBub3QgZXhpc3QgaW4gW2BDb25maWc6OkZ1bmdpYmxlc2BdLkBJbnN0YW5jZU5vdEZvdW5kAB4E4E5vIGNvaW5hZ2UgaW5zdGFuY2UgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gW2BJbnN0YW5jZUlkYF0uQEludmFsaWRBc3NldFVuaXQAHwgFAVRoZSBhc3NldCB1bml0IGlzIHplcm8sIG9yIGNhbm5vdCByZXByZXNlbnQgZXZlcnkgZGVub21pbmF0aW9uIGlu4GBbTWluaW11bUV4cG9uZW50LCBNYXhpbXVtRXhwb25lbnRdYCB3aXRob3V0IHRydW5jYXRpb24uYEFyY2hpdmVkUmVjeWNsZXJOb3RGb3VuZAAgBEUBTm8gYXJjaGl2ZWQgcmVjeWNsZXIgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gYChpbnN0YW5jZSwgZGVub21pbmF0aW9uLCByaW5nIGluZGV4KWAuUEludmFsaWRBcmNoaXZlZFJvb3RzACEINQFUaGUgc3VwcGxpZWQgYHJlY3ljbGVyX3Jvb3RgL2B1bmxvYWRlZF9yb290YCBkbyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBhcmNoaXZhbCxjb21taXRtZW50LkxJbnZhbGlkUmluZ0V4cG9uZW50ACIEHQFUaGUgcmVjeWNsZXIgcmluZyBleHBvbmVudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHRoZSBjcnlwdG8gY29uZmlnLnhBbGlhc1dhc1VubG9hZGVkT3JJbnZhbGlkUHJvb2YAIwQ9AVRoZSBhbGlhcyB3YXMgYWxyZWFkeSB1bmxvYWRlZCwgb3IgdGhlIHN1cHBsaWVkIG5vbi1pbmNsdXNpb24gcHJvb2YgaXMgaW52YWxpZC4oWmVyb0Ftb3VudAAkBNBBIGBmdW5kX3BvdGAgb3IgYHdpdGhkcmF3X3BvdF9mdW5kc2AgYW1vdW50IG9mIHplcm8uUEluc3RhbmNlTm90U3BvbnNvcmVkACUEwFRoZSBpbnN0YW5jZSBpcyBub3Qgc3BvbnNvcmVkLCBzbyBpdCBoYXMgbm8gcG90LmxXaXRoZHJhd0V4Y2VlZHNDb250cmlidXRpb24AJgQ9AVRoZSB3aXRoZHJhd2FsIGV4Y2VlZHMgdGhlIGNhbGxlcidzIHJlY29yZGVkIHBvdCBjb250cmlidXRpb24gaW4gdGhhdCBjdXJyZW5jeS5kUG90Q2Fubm90Q292ZXJMb2FkRGVwb3NpdAAnBPRUaGUgc3BvbnNvcmVkIGluc3RhbmNlJ3MgcG90IGNhbm5vdCBmdW5kIHRoaXMgbG9hZCdzIGRlcG9zaXQuaExvYWREZXBvc2l0T2xkVGllck9jY3VwaWVkACgIWQFUaGUgbG9hZCBkZXBvc2l0IGNoYW5nZWQgd2hpbGUgdGhlIHNwb25zb3JlZCBpbnN0YW5jZSdzIG9sZCB0aWVyIHN0aWxsIGhvbGRzIGRlcG9zaXRzLEkBc28gdGhlIGluc3RhbmNlIG5lZWRzIFtgUGFsbGV0Ojpjb2xsYXBzZV9sb2FkX2RlcG9zaXRzYF0gYmVmb3JlIGl0IGNhbiBsb2FkIGFnYWluLkROb3RoaW5nVG9Db2xsYXBzZQApCF0BVGhlIGxlZGdlciBpcyBhbHJlYWR5IGEgc2luZ2xlIHRpZXIgYXQgdGhlIGN1cnJlbnQgW2BDb25maWc6OkxvYWREZXBvc2l0YF0sIHNvIHRoZXJlIGlzUG5vdGhpbmcgdG8gY29sbGFwc2UuYEluc3RhbmNlQWxyZWFkeVNwb25zb3JlZAAqBIhUaGUgaW5zdGFuY2UgaXMgYWxyZWFkeSBzcG9uc29yZWQuaFNwb25zb3JlZEluc3RhbmNlc0Rpc2FibGVkACsETQFbYENvbmZpZzo6RW5hYmxlUGVybWlzc2lvbmxlc3NgXSBpcyBmYWxzZSwgc28gbm8gc3BvbnNvcmVkIGluc3RhbmNlIGNhbiBiZSBjcmVhdGVkLlxQYWxsZXRBY2NvdW50Tm90VG91Y2hlZAAsDDkBVGhlIHBhbGxldCBhY2NvdW50IGNhbm5vdCByZWNlaXZlIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuVQF0b3VjaGVkIGZvciBpdCwgd2hpY2ggW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gZXhwZWN0cyB0byBoYXZlIGhhcHBlbmVkIGFscmVhZHkugFBhbGxldEFjY291bnRCZWxvd01pbmltdW1CYWxhbmNlAC0MQQFUaGUgcGFsbGV0IGFjY291bnQgaG9sZHMgbGVzcyB0aGFuIHRoZSB1bmRlcmx5aW5nIGFzc2V0J3MgbWluaW11bSBiYWxhbmNlLCB3aGljaFEBW2BQYWxsZXQ6OmNyZWF0ZV9zdWZmaWNpZW50X2luc3RhbmNlYF0gZXhwZWN0cyBhcyBhIGJ1ZmZlciBhZ2FpbnN0IHRoZSBhY2NvdW50IGJlaW5nHGR1c3RlZC5oRnVuZGluZ0JlbG93TWluaW11bUJhbGFuY2UALghJAUEgYGZ1bmRfcG90YCBhbW91bnQgYmVsb3cgdGhlIGN1cnJlbmN5J3MgbWluaW11bSBiYWxhbmNlLCB3aGljaCB0aGUgdHJhbnNmZXIgY291bGRAZHVzdCByaWdodCBhd2F5LkBGZWVFeGNlZWRzTWF4RmVlAC8EWQFQYXlpbmcgdGhlIGZlZSB3b3VsZCBjb3N0IG1vcmUgdGhhbiB0aGUgY2FsbGVyJ3MgYG1heF9mZWVgLCBpbiB0aGUgY3VycmVuY3kgcGF5aW5nIGl0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45DQQYT3B0aW9uBARUAT0NAQgQTm9uZQAAABBTb21lBAA9DQAAAQAAPQ0MUGluZGl2X3BhbGxldF9jb2luYWdlDHBvdBxQb3RWaWV3CBxBc3NldElkAXEBHEJhbGFuY2UBRQEAHAEwbG9hZF9kZXBvc2l0wQUBSChBc3NldElkLCBCYWxhbmNlKQABVGZyZWVfaW5fZGVwb3NpdF9hc3NldEUBARxCYWxhbmNlAAFAbG9hZHNfYWZmb3JkYWJsZTgBDHUzMgABPHJlZGVlbWFibGVfa2V5czgBDHUzMgABMGN1cnJlbnRfdGllchkNAZRPcHRpb248RGVwb3NpdFRpZXI8QXNzZXRJZCwgQmFsYW5jZT4+AAEgb2xkX3RpZXIZDQGUT3B0aW9uPERlcG9zaXRUaWVyPEFzc2V0SWQsIEJhbGFuY2U+PgABNGxvYWRzX2Jsb2NrZWRBDQFgT3B0aW9uPEN1c3RvbUludmFsaWRpdHk+AABBDQQYT3B0aW9uBARUAUUNAQgQTm9uZQAAABBTb21lBABFDQAAAQAARQ0MUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldEBDdXN0b21JbnZhbGlkaXR5AAHUGE5vQ29pbgAjAChDb2luVG9vT2xkACQASFNwbGl0SW50b05vdFNvcnRlZAAlAFRTcGxpdEV4cG9uZW50VG9vU21hbGwAJgA0SW50ZXJuYWxFcnJvcgAnACxTcGxpdFRvb0JpZwAoADBJbnZhbGlkU3BsaXQAKQAoRW1wdHlTcGxpdAAqADRUb29NYW55U3BsaXRzACsAUE1lbWJlcktleUFscmVhZHlVc2VkAC0AXFJlY3ljbGVyQWxyZWFkeVVubG9hZGVkAC4ASERlbm9taW5hdGlvblRvb0JpZwAvAFBEZW5vbWluYXRpb25Ub29TbWFsbAAwAFhEZW5vbWluYXRpb25PdXRPZkJvdW5kADEATE5vVW5sb2FkaW5nUmVjeWNsZXIAMgBASW52YWxpZE1lbWJlcktleQAzACxJbnZhbGlkQ2FsbAA0AFRBZGRyZXNzQWxyZWFkeUhhc0NvaW4ANQBoT3JpZ2luVG9Bc0NvaW5NdXN0QmVTaWduZWQANgBcSW52YWxpZFVubG9hZFRva2VuUHJvb2YANwBgSW52YWxpZFVubG9hZFRva2VuUGVyaW9kADgAaFVubG9hZFRva2VuQWxyZWFkeUNvbnN1bWVkADkAcFVubG9hZFRva2VuQ291bnRlck91dE9mUmFuZ2UAOgBcSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AOwAoTm9SZWN5Y2xlcgA8AExUcmFuc2FjdGlvbk5vdExvY2FsAD0AOE5vdGhpbmdUb0J1aWxkAD4ATFNwbGl0RXhwb25lbnRUb29CaWcAPwCMSW52YWxpZFVubG9hZFRva2VuUGVyaW9kT3JSaW5nSW5kZXgAQABwRHVwbGljYXRlRGVzdGluYXRpb25zSW5TcGxpdABBAEhDb2luQW1vdW50QmVsb3dGZWUAQgBcSW52YWxpZFByb29mT2ZPd25lcnNoaXAAQwBMRmVlQ29pbkJlbG93TWluaW11bQBEAFxGcm9tT3V0cHV0RmVlTm90QWxsb3dlZABFAEBFbXB0eUFsaWFzUHJvb2ZzAEYAcEludmFsaWRQYWlkVG9rZW5SaW5nUmV2aXNpb24ARwBoQ2Fubm90Q29udmVydEFzc2V0VG9OYXRpdmUASQBUQ29pblRlbXBvcmFyaWx5TG9ja2VkAEoAREludmFsaWRBbGlhc1Byb29mAEsAbE1heEZlZUluc3VmZmljaWVudEZvclVubG9hZABMAGhNYXhGZWVOb3RBbGxvd2VkRm9yUHJlcGFpZABNAGxMb3NzeURlbm9taW5hdGlvbkNvbnZlcnNpb24ATgBYRmlyc3RDYWxsQWxpYXNNaXNtYXRjaABPAKBJbmZhbGxpYmxlVW5wYWlkU2lnbmVkT3JpZ2luTXVzdEJlU2lnbmVkAFAApEluZmFsbGlibGVVbnBhaWRTaWduZWRJbnN1ZmZpY2llbnRCYWxhbmNlAFEAQEVtcHR5TWl4ZWRPdXRwdXQAUwBQRW1wdHlVbnBhaWRMb2FkQmF0Y2gAVABASW5zdGFuY2VOb3RGb3VuZABVAFhBbGlhc1RlbXBvcmFyaWx5TG9ja2VkAFYAZFBvdENhbm5vdENvdmVyTG9hZERlcG9zaXQAVwBoTG9hZERlcG9zaXRPbGRUaWVyT2NjdXBpZWQAWAAsRW1wdHlJbnB1dHMAWQBUVW5sb2FkZWRWYWx1ZUJlbG93RmVlAFoAAEkNAAACTQ0ATQ0AAAQMcQFFAUUBAFENBBhPcHRpb24EBFQB2QwBCBBOb25lAAAAEFNvbWUEANkMAAABAABVDQQYT3B0aW9uBARUAREEAQgQTm9uZQAAABBTb21lBAARBAAAAQAAWQ0EGE9wdGlvbgQEVAEBDQEIEE5vbmUAAAAQU29tZQQAAQ0AAAEAAF0NBBhPcHRpb24EBFQBrQUBCBBOb25lAAAAEFNvbWUEAK0FAAABAABhDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXM4U3Vic2NyaWJlckluZm8EBFQAAAwBLGNvbGxlY3Rpb25zyQUBGQFCb3VuZGVkVmVjPChJZGVudGlmaWVyLCBSaW5nRXhwb25lbnQpLCBUOjpNYXhDb2xsZWN0aW9uc1BlclN1YnNjcmliZXI+AAFIbGFzdF9pbml0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAATBwYWxsZXRfaW5kZXgMAQh1OAAAZQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzXFdoaXRlbGlzdGVkU3Vic2NyaXB0aW9uBARUAAAIASxjb2xsZWN0aW9uc8kFARkBQm91bmRlZFZlYzwoSWRlbnRpZmllciwgUmluZ0V4cG9uZW50KSwgVDo6TWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyPgABMHBhbGxldF9pbmRleAwBCHU4AABpDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXMsUGFnaW5nU3RhdGUELEJsb2NrTnVtYmVyATgADAEod3JpdGVfcGFnZc0DAQx1MTYAASRzZW5kX3BhZ2XNAwEMdTE2AAFEbGFzdF91cGRhdGVfYmxvY2s4ASxCbG9ja051bWJlcgAAbQ0AAAQMzQMIOABxDQx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNAUGVuZGluZ0luaXRTdGF0ZQQEVAAAGAEsY29sbGVjdGlvbnPJBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAWBjdXJyZW50X2NvbGxlY3Rpb25faW5kZXg4AQx1MzIAAUBhZnRlcl9yaW5nX2luZGV45AFET3B0aW9uPFJpbmdJbmRleD4AASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAEsc291cmNlX3RpbWUoAQx1NjQAATBwYWxsZXRfaW5kZXgMAQh1OAAAdQ0MdGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyFHR5cGVzWEJhdGNoRGlzdHJpYnV0aW9uU3RhdGUELEJsb2NrTnVtYmVyATgAEAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEkc2VhbGVkX2F0OAEsQmxvY2tOdW1iZXIAAVRyZW1haW5pbmdfc3Vic2NyaWJlcnM4AQx1MzIAAHkNAAAECJwIAH0NDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXJyb3IEBFQAAThIU3Vic2NyaWJlck5vdEZvdW5kAAAEVFN1YnNjcmliZXIgbm90IGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAABBGhTdWJzY3JpYmVyIGFscmVhZHkgZXhpc3RzLkhUb29NYW55U3Vic2NyaWJlcnMAAgRwTWF4aW11bSBzdWJzY3JpYmVycyByZWFjaGVkLlhJbnZhbGlkQ29sbGVjdGlvbnNMaXN0AAMEPQFDb2xsZWN0aW9ucyBsaXN0IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGFzY2VuZGluZyBvcmRlciB3aXRoIG5vIGR1cGxpY2F0ZXMuOFRvb01hbnlVcGRhdGVzAAQE0FRvbyBtYW55IHJpbmcgcm9vdCB1cGRhdGVzIHRvIGZpdCBpbiBhIHNpbmdsZSBiYXRjaC40WGNtU2VuZEZhaWxlZAAFBEBYQ00gc2VuZCBmYWlsZWQuZE5vdFN1YnNjcmliZWRUb0NvbGxlY3Rpb24ABgTkU3Vic2NyaWJlciBpcyBub3Qgc3Vic2NyaWJlZCB0byB0aGUgcmVxdWVzdGVkIGNvbGxlY3Rpb24uQEludmFsaWRSaW5nSW5kZXgABwSAUmluZyByb290IGluZGV4IGlzIG91dCBvZiByYW5nZS5YRXhjZWVkc0NoYW5uZWxDYXBhY2l0eQAIBAEBUmVxdWVzdGVkIHVwZGF0ZXMgZXhjZWVkIHRoZSBzdWJzY3JpYmVyJ3MgSFJNUCBjaGFubmVsIGNhcGFjaXR5LjROb0JhdGNoQWN0aXZlAAkEXE5vIGFjdGl2ZSBiYXRjaCBleGlzdHMuNE5vUGVuZGluZ0luaXQACgS4Tm8gcGVuZGluZyBpbml0aWFsaXphdGlvbiBmb3IgdGhpcyBzdWJzY3JpYmVyLlBSZXBsYXlDb29sZG93bkFjdGl2ZQALBA0BUmVwbGF5IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBmb3IgdGhpcyBzdWJzY3JpYmVyIGFuZCBjb2xsZWN0aW9uLkBFbXB0eVJpbmdJbmRpY2VzAAwE5FJlcGxheSByZXF1ZXN0ZWQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIHJpbmcgcm9vdCBpbmRpY2VzLjhOb3RXaGl0ZWxpc3RlZAANBOxQYXJhY2hhaW4gaGFzIG5vIHdoaXRlbGlzdGVkIHN1YnNjcmlwdGlvbiBsZWZ0IHRvIGFjdGl2YXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6BDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMsQWN0aXZlRXZlbnQMJEFjY291bnRJZAEEHEFzc2V0SWQBcQEwQXNzZXRCYWxhbmNlAUUBABABCGlkCAEcRXZlbnRJZAABEGluZm/hBQGARXZlbnRJbmZvPEFzc2V0SWQsIEFzc2V0QmFsYW5jZT4AARhzdGF0dXOFDQEYU3RhdHVzAAEYc291cmNlNQEBRE9wdGlvbjxBY2NvdW50SWQ+AACFDQxQaW5kaXZfcGFsbGV0X2FpcmRyb3AUdHlwZXMYU3RhdHVzAAEgJFNjaGVkdWxlZAAAACxSZWdpc3RlcmluZwQBSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABADxBd2FpdGluZ0VudHJvcHkMAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABLGxhc3RfbW9tZW50OAEMdTMyAAIALERyYXdXaW5uZXJzEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAATR3aW5uZXJzX2FkZGVkOAEMdTMyAAE8ZnJvbV93aW5uZXJfa2V5KQgBNEJpZ0VuZGlhblUyNTYAAwAgQ2xhaW1pbmcMAUh0b3RhbF9wYXJ0aWNpcGFudHM4AQx1MzIAAURlZmZlY3RpdmVfd2lubmVyczgBDHUzMgABHGNsYWltZWQ4AQx1MzIABABUQ2xlYXJpbmdSZWdpc3RyYXRpb25zEAFIdG90YWxfcGFydGljaXBhbnRzOAEMdTMyAAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAFUY2xlYW5lZF9yZWdpc3RyYXRpb25zOAEMdTMyAAUAPENsZWFyaW5nV2lubmVycxABSHRvdGFsX3BhcnRpY2lwYW50czgBDHUzMgABRGVmZmVjdGl2ZV93aW5uZXJzOAEMdTMyAAEcY2xhaW1lZDgBDHUzMgABPGNsZWFuZWRfd2lubmVyczgBDHUzMgAGAChGaW5hbGl6aW5nCAFEZWZmZWN0aXZlX3dpbm5lcnM4AQx1MzIAARxjbGFpbWVkOAEMdTMyAAcAAIkNAAAECI0NCACNDQw0aW5kaXZfc3VwcG9ydBR1dGlsczBCaWdFbmRpYW5VNjQAAwgAAAAMBBkBQSB1NjQgZW5jb2RlZCBpbiBiaWctZW5kaWFuIGZvcm1hdCBmb3IgY29ycmVjdCBsZXhpY29ncmFwaGljIG9yZGVyaW5nLpENAAAECAgpCACVDQAABAgILQgAmQ0MUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldBRFcnJvcgQEVAABVFBQcml6ZUJlbG93TWluQmFsYW5jZQAAAExOb1dpbm5lcnNDb25maWd1cmVkAAEAOFRvb01hbnlXaW5uZXJzAAIAREludmFsaWRFdmVudFRpbWVzAAMAQER1cGxpY2F0ZUV2ZW50SWQABABATm9TY2hlZHVsZWRFdmVudAAFADBVbmtub3duRXZlbnQABgAsV3JvbmdTdGF0dXMABwTgT3BlcmF0aW9uIHJlcXVpcmVzIGEgc3BlY2lmaWMgc3RhdHVzIHRoZSBldmVudCBpc24ndCBpbi5kTm90QWNjZXB0aW5nUmVnaXN0cmF0aW9ucwAIACxOb3RDbGFpbWluZwAJAFBDbGFpbWluZ1dpbmRvd0Nsb3NlZAAKBLRDbGFpbSBhdHRlbXB0ZWQgYWZ0ZXIgdGhlIGV2ZW50J3MgYGVuZF90aW1lYC5ARW50cm9weVNsb3RUYWtlbgALADxJbnZhbGlkVnJmUHJvb2YADABUVW5zdXBwb3J0ZWRBY2NvdW50S2V5AA0ECQFTdXBwbGllZCBhY2NvdW50IGlkIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW55IHNyMjU1MTkgcHVibGljIGtleS5YSW52YWxpZE1lbWJlcnNoaXBQcm9vZgAOADBOb1N1Y2hXaW5uZXIADwBMUGFydGljaXBhbnRPdmVyZmxvdwAQAFxQcml6ZUFsbG9jYXRpb25PdmVyZmxvdwARADxBc3NldE5vdEVuYWJsZWQAEgTgVGhlIHByaXplIGFzc2V0IGhhcyBub3QgYmVlbiBlbmFibGVkIHZpYSBgZW5hYmxlX2Fzc2V0YC5MQXNzZXRBbHJlYWR5RW5hYmxlZAATBPxgZW5hYmxlX2Fzc2V0YCB3YXMgY2FsbGVkIGZvciBhbiBhc3NldCB0aGF0IGlzIGFscmVhZHkgZW5hYmxlZC48RW50cm9weU5vdFJlYWR5ABQECQFObyByYW5kb21uZXNzIHByb2R1Y2VkIGFmdGVyIHJlZ2lzdHJhdGlvbiBjbG9zZWQgaXMgYXZhaWxhYmxlIHlldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunQ0MTGluZGl2X3BhbGxldF9ob25vdXIUdHlwZXMkUG9pbnRJbmZvAAAQARxzdWJqZWN0CAEkU3ViamVjdElkAAE0c3ViamVjdF9hbGlhcwgBMFN1YmplY3RBbGlhcwABJGRpcmVjdGlvbu0FASREaXJlY3Rpb24AATBsYXN0X3VzZWRfYXQoARxTZWNvbmRzAAChDQxMaW5kaXZfcGFsbGV0X2hvbm91chhwYWxsZXQURXJyb3IEBFQAAQwoQXJpdGhtZXRpYwAABAkBQXJpdGhtZXRpYyBlcnJvciBsaWtlIG92ZXIvdW5kZXJmbG93LCBkaXZpc2lvbiBieSB6ZXJvIG9yIHNpbWlsYXIuTFN1YmplY3RBbHJlYWR5Vm90ZWQAAQT8VGhlcmUgaXMgYWxyZWFkeSBhIHZvdGUgYnkgdGhlIHNhbWUgdm90ZXIgZm9yIHRoZSBzYW1lIHN1YmplY3QuMEludmFsaWRQcm9vZgACBLBUaGUgcHJvdmlkZWQgcmluZyBwcm9vZiBmYWlsZWQgdmVyaWZpY2F0aW9uLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6lDQAABAgIKACpDQxwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wcxhwYWxsZXQURXJyb3IEBFQAAQxUUmFuZG9tbmVzc1VuYXZhaWxhYmxlAAAEEQFUaGUgcmFuZG9tbmVzcyBzb3VyY2UgaGFzIG5vIHZhbHVlIHRvIHNhbHQgdGhlIHNjaGVkdWxlZCBkcmF3cyB3aXRoLixVbmtub3duRHJhdwABBOBObyBkcmF3IHdpdGggdGhpcyBldmVudCBpZCB3YXMgc2NoZWR1bGVkIGJ5IHRoaXMgcGFsbGV0LkRFbXB0eVJlZ2lzdHJhdGlvbgACBKhgcmVnaXN0ZXJgIHdhcyBjYWxsZWQgd2l0aCBhbiBlbXB0eSBiYXRjaC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQ0MRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQ0IRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAtQ0EGE9wdGlvbgQEVAG5DQEIEE5vbmUAAAAQU29tZQQAuQ0AAAEAALkNCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPkASxPcHRpb248dTMyPgAAvQ0IRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ7ENATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc7UNAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAMENCEhzcF9jb25zZW5zdXNfc2xvdHMwU2xvdER1cmF0aW9uAAAEACgBDHU2NAAAxQ0QKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jayRMYXp5QmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwGVCAAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzyQ0BUFZlYzxPcGFxdWVFeHRyaW5zaWM+AADJDQAAAs0NAM0NCChzcF9ydW50aW1lPE9wYXF1ZUV4dHJpbnNpYwAABAAYARxWZWM8dTg+AADRDQgoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAADVDQgcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAAYARxWZWM8dTg+AADZDQQYT3B0aW9uBARUAdUNAQgQTm9uZQAAABBTb21lBADVDQAAAQAA3Q0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnM4Vmlld0Z1bmN0aW9uSWQAAAgBGHByZWZpeGUCASBbdTg7IDE2XQABGHN1ZmZpeGUCASBbdTg7IDE2XQAA4Q0EGFJlc3VsdAgEVAEYBEUB5Q0BCAhPawQAGAAAAAAMRXJyBADlDQAAAQAA5Q0MNGZyYW1lX3N1cHBvcnQ4dmlld19mdW5jdGlvbnNkVmlld0Z1bmN0aW9uRGlzcGF0Y2hFcnJvcgABDDhOb3RJbXBsZW1lbnRlZAAAACBOb3RGb3VuZAQA3Q0BOFZpZXdGdW5jdGlvbklkAAEAFENvZGVjAAIAAOkNBBhSZXN1bHQIBFQBzQcERQHtDQEICE9rBADNBwAAAAAMRXJyBADtDQAAAQAA7Q0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAPENAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQA9Q0BSFVua25vd25UcmFuc2FjdGlvbgABAADxDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAAD1DQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAAD5DQgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0Yf0NAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAD9DQQgQlRyZWVNYXAIBEsBYQIEVgEYAAQAAQ4AAAABDgAAAgUOAAUOAAAECGECGAAJDggwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5WQEBEGJvb2wAASxmYXRhbF9lcnJvclkBARBib29sAAEYZXJyb3Jz+Q0BMEluaGVyZW50RGF0YQAADQ4MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAARDgQYUmVzdWx0CARUARUOBEUB7Q0BCAhPawQAFQ4AAAAADEVycgQA7Q0AAAEAABUODChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlWQEBEGJvb2wAABkODChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAAHQ4EGE9wdGlvbgQEVAEhDgEIEE5vbmUAAAAQU29tZQQAIQ4AAAEAACEOAAACJQ4AJQ4AAAQIGBEKACkODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlc0xSdW50aW1lRGlzcGF0Y2hJbmZvCBxCYWxhbmNlAUUBGFdlaWdodAF5AgAMARh3ZWlnaHR5AgEYV2VpZ2h0AAEUY2xhc3PtBgE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlRQEBHEJhbGFuY2UAAC0ODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAUUBAAgBNGluY2x1c2lvbl9mZWUxDgF0T3B0aW9uPEluY2x1c2lvbkZlZTxCYWxhbmNlPj4AAQx0aXBFAQEcQmFsYW5jZQAAMQ4EGE9wdGlvbgQEVAE1DgEIEE5vbmUAAAAQU29tZQQANQ4AAAEAADUODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBRQEADAEgYmFzZV9mZWVFAQEcQmFsYW5jZQABHGxlbl9mZWVFAQEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWVFAQEcQmFsYW5jZQAAOQ4EGFJlc3VsdAgEVAE9DgRFAUEOAQgIT2sEAD0OAAAAAAxFcnIEAEEOAAABAAA9DgAAArEDAEEODEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAARQ4EGFJlc3VsdAgEVAF5AgRFAUEOAQgIT2sEAHkCAAAAAAxFcnIEAEEOAAABAABJDgQYUmVzdWx0CARUAUUBBEUBQQ4BCAhPawQARQEAAAAADEVycgQAQQ4AAAEAAE0OBBhSZXN1bHQIBFQBfQMERQFBDgEICE9rBAB9AwAAAAAMRXJyBABBDgAAAQAAUQ4EGFJlc3VsdAgEVAFVDgRFAXkOAQgIT2sEAFUOAAAAAAxFcnIEAHkOAAABAABVDgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuRENhbGxEcnlSdW5FZmZlY3RzBBRFdmVudAHhBgAQAUBleGVjdXRpb25fcmVzdWx0WQ4BaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHNlDgEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbWkOAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtc20OAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAWQ4EGFJlc3VsdAgEVAFdDgRFAWEOAQgIT2sEAF0OAAAAAAxFcnIEAGEOAAABAABdDgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0SQMBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWXxBgEQUGF5cwAAYQ4IKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwFdDgAIASRwb3N0X2luZm9dDgEQSW5mbwABFGVycm9y9QYBNERpc3BhdGNoRXJyb3IAAGUOAAAC4QYAaQ4EGE9wdGlvbgQEVAE5AgEIEE5vbmUAAAAQU29tZQQAOQIAAAEAAG0OAAACcQ4AcQ4AAAQI7QF1DgB1DgAAAjkCAHkODEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAH0OBBhSZXN1bHQIBFQBgQ4ERQF5DgEICE9rBACBDgAAAAAMRXJyBAB5DgAAAQAAgQ4MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHhBgAMAUBleGVjdXRpb25fcmVzdWx0sQcBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50c2UOAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXNtDgG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAIUOBBhSZXN1bHQIBFQBBARFAYkOAQgIT2sEAAQAAAAADEVycgQAiQ4AAAEAAIkODEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAjQ4AAAKRDgCRDgAABAg4/QcAlQ4EGFJlc3VsdAgEVAGZDgRFAaUOAQgIT2sEAJkOAAAAAAxFcnIEAKUOAAABAACZDgAAAp0OAJ0ODGBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHMUdHlwZXNMTmZ0Q2xhaW1DcmVkaXRQcm9vZgAADAEYY3JlZGl0CAE4TmZ0Q2xhaW1DcmVkaXQAAShsZWFmX2luZGV4OAEMdTMyAAEUcHJvb2ahDgFQVmVjPENyZWRpdFByb29mTm9kZT4AAKEOAAACAQgApQ4MYGluZGl2X3BhbGxldF9uZnRfY3JlZGl0cxR0eXBlc2BOZnRDbGFpbUNyZWRpdFByb29mRXJyb3IAARREVW5rbm93bkNyZWRpdFRyZWUAAAAwQXdhcmRzUHJ1bmVkAAEARExlYWZDb3VudE1pc21hdGNoBAEgZXhwZWN0ZWQ4AQx1MzIAAgBQTGVhZkluZGV4T3V0T2ZCb3VuZHMAAwAwUm9vdE1pc21hdGNoAAQAAKkOBBhSZXN1bHQIBFQBnQ4ERQGlDgEICE9rBACdDgAAAAAMRXJyBAClDgAAAQAArQ4IXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXMVCQFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZbEOAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAALEOBBhPcHRpb24EBFQBtQ4BCBBOb25lAAAAEFNvbWUEALUOAAABAAC1Dgx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AAC5DgQYUmVzdWx0CARUARAERQFZCAEICE9rBAAQAAAAAAxFcnIEAFkIAAABAAC9DgQYT3B0aW9uBARUAVkIAQgQTm9uZQAAABBTb21lBABZCAAAAQAAwQ4AAAJZCADFDghkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAZAYU3lzdGVtBACJCAFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EACUJAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABADROZXR3b3JrU3VmZml4BAA1CQGsaW5kaXZfcGFsbGV0X25ldHdvcmtfc3VmZml4OjpFcnJvcjxSdW50aW1lPgBKACBCYWxhbmNlcwQAbQkBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgBET3JpZ2luUmVzdHJpY3Rpb24EAIEJAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFcnJvcjxSdW50aW1lPgANABhBc3NldHMEAK0JAXRwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEALkJAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXJyb3I8UnVudGltZT4ADwAkQXNzZXRSYXRlBAC9CQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+ABAAPEFzc2V0Q29udmVyc2lvbgQAyQkBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFcnJvcjxSdW50aW1lPgASAChQb29sQXNzZXRzBADdCQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgATAERDb2xsYXRvclNlbGVjdGlvbgQA8QkBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EABUKAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBABRCgGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EALkKAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEANkKAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIgAcVXRpbGl0eQQA3QoBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQA7QoBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAQU3VkbwQA8QoBbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgAqABRQcm94eQQAFQsBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4ALAAYUGVvcGxlBAAdCwGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXJyb3I8UnVudGltZT4AMwAcTW9iUnVsZQQAYQsBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXJyb3I8UnVudGltZT4ANAAoUHJvb2ZPZkluawQAnQsBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkVycm9yPFJ1bnRpbWU+ADUAEEdhbWUEAPELAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXJyb3I8UnVudGltZT4ANwAUU2NvcmUEAB0MAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkVycm9yPFJ1bnRpbWU+ADgAKE5mdENyZWRpdHMEAE0MAaBpbmRpdl9wYWxsZXRfbmZ0X2NyZWRpdHM6OkVycm9yPFJ1bnRpbWU+ADkAIER1bW15RGltBABVDAGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXJyb3I8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAYQwBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXJyb3I8UnVudGltZT4APgAkUmVzb3VyY2VzBACRDAGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXJyb3I8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAqQwBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXJyb3I8UnVudGltZT4AQAAcTWVtYmVycwQA9QwBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFcnJvcjxSdW50aW1lPgBDABxDb2luYWdlBAA1DQGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkVycm9yPFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAfQ0BtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFcnJvcjxSdW50aW1lPgBFABxBaXJkcm9wBACZDQGQaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkVycm9yPFJ1bnRpbWU+AEYAGEhvbm91cgQAoQ0BjGluZGl2X3BhbGxldF9ob25vdXI6OkVycm9yPFJ1bnRpbWU+AEcAOFBlb3BsZUFpcmRyb3BzBACpDQGwaW5kaXZfcGFsbGV0X3Blb3BsZV9haXJkcm9wczo6RXJyb3I8UnVudGltZT4ASABQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAK0NAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4AYgAAxBhTeXN0ZW0BGFN5c3RlbVAcQWNjb3VudAEBBAIEyQZBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABOggVGhlIGZ1bGwgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQgSUQuADhFeHRyaW5zaWNDb3VudAAAOAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAEBJbmhlcmVudHNBcHBsaWVkAQBZAQQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBANUGGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEA2QYEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjxJCAQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAFEIBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQBZAQQABE0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IGB0eXBlIFJlZkNvdW50YCBpcyBgdTMyYC4gRmFsc2UgKGRlZmF1bHQpIGlmIG5vdC4AYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAWQEEAAhdASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBBY2NvdW50SW5mbyBjb250YWlucyB0aHJlZSB0eXBlcyBvZiBgUmVmQ291bnRgLiBGYWxzZUggKGRlZmF1bHQpIGlmIG5vdC4AOEV4ZWN1dGlvblBoYXNlAABBCAQABIggVGhlIGV4ZWN1dGlvbiBwaGFzZSBvZiB0aGUgYmxvY2suAERBdXRob3JpemVkVXBncmFkZQAAXQgEAAS4IGBTb21lYCBpZiBhIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBhdXRob3JpemVkLgBgRXh0cmluc2ljV2VpZ2h0UmVjbGFpbWVkAQB5AggAABygIFRoZSB3ZWlnaHQgcmVjbGFpbWVkIGZvciB0aGUgZXh0cmluc2ljLgAhASBUaGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBleHRyaW5zaWMgZXhlY3V0aW9uLiEBIE1vcmUgcHJlY2lzZWx5IHRoaXMgaW5mb3JtYXRpb24gaXMgcmVtb3ZlZCBpbiBgbm90ZV9hcHBsaWVkX2V4dHJpbnNpY2AuAHEBIExvZ2ljIGRvaW5nIHNvbWUgcG9zdCBkaXNwYXRjaCB3ZWlnaHQgcmVkdWN0aW9uIG11c3QgdXBkYXRlIHRoaXMgc3RvcmFnZSB0byBhdm9pZCBkdXBsaWNhdGUsIHJlZHVjdGlvbi4AASQAAeUGABgwQmxvY2tXZWlnaHRzYQiJAQcA8gUqAQALACBKqdEBAgCAAgJlzR0AAQvAVg3vRQECAMABAQsAmPc+XQECAOABAQAAAmXNHQABC8DeX1m6AQIAYAIBCwAgSqnRAQIAgAIBBwCIUmp0AgCgAAJlzR0AAAAABNAgQmxvY2sgJiBleHRyaW5zaWNzIHdlaWdodHM6IGJhc2UgdmFsdWVzIGFuZCBsaW1pdHMuACxCbG9ja0xlbmd0aG0INAAAPAAAAFAAAABQAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLgA4QmxvY2tIYXNoQ291bnQ4EAAQAAAEVQEgTWF4aW11bSBudW1iZXIgb2YgYmxvY2sgbnVtYmVyIHRvIGJsb2NrIGhhc2ggbWFwcGluZ3MgdG8ga2VlcCAob2xkZXN0IHBydW5lZCBmaXJzdCkuACBEYldlaWdodHUIQEB4fQEAAAAAAOH1BQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4AHFZlcnNpb255CCkFRG5leHQtcGVvcGxlLXBhc2VvRG5leHQtcGVvcGxlLXBhc2VvAQAAAHjSLQAAAAAAXN1xjVzFMmLUAQAAAATnBSGg09L4AgAAABYr8ZE3q6y9AQAAANe92KJyyg1lAgAAAN9qy2iZB2CbBQAAADfjl/x8kfXkAgAAAMzZ3mOWyJnKAQAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAKs8BXIpH+uLAgAAALydiZBPW5I/AQAAADfIuxNQqaKoBAAAAPP/FNWrUnBZAwAAAG/1LuhY5sW9AgAAAJGxyLFjKOuSAgAAAJ/7UFqnONacAQAAANC6x75KawkgAQAAAJKH+w4CG8hUAQAAAIQ7b4zsgJjHAQAAAF9NB8djD9a5AQAAAOqT4/FvPWliAwAAAPvFd7nXR+/WAQAAAAUAAAABBIQgR2V0IHRoZSBjaGFpbidzIGluLWNvZGUgdmVyc2lvbi4AKFNTNThQcmVmaXjNAwgqABSoIFRoZSBkZXNpZ25hdGVkIFNTNTggcHJlZml4IG9mIHRoaXMgY2hhaW4uADkBIFRoaXMgcmVwbGFjZXMgdGhlICJzczU4Rm9ybWF0IiBwcm9wZXJ0eSBkZWNsYXJlZCBpbiB0aGUgY2hhaW4gc3BlYy4gUmVhc29uIGlzMQEgdGhhdCB0aGUgcnVudGltZSBzaG91bGQga25vdyBhYm91dCB0aGUgcHJlZml4IGluIG9yZGVyIHRvIG1ha2UgdXNlIG9mIGl0IGFzcCBhbiBpZGVudGlmaWVyIG9mIHRoZSBjaGFpbi4AAYkIABwsUnVudGltZUNhbGwgBIwgVGhlIGFnZ3JlZ2F0ZWQgYFJ1bnRpbWVDYWxsYCB0eXBlLhROb25jZTgESQEgVGhpcyBzdG9yZXMgdGhlIG51bWJlciBvZiBwcmV2aW91cyB0cmFuc2FjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgc2VuZGVyIGFjY291bnQuEEhhc2g8BJggVGhlIG91dHB1dCBvZiB0aGUgYEhhc2hpbmdgIGZ1bmN0aW9uLhxIYXNoaW5njQgEIQEgVGhlIGhhc2hpbmcgc3lzdGVtIChhbGdvcml0aG0pIGJlaW5nIHVzZWQgaW4gdGhlIHJ1bnRpbWUgKGUuZy4gQmxha2UyKS4kQWNjb3VudElkBATIIFRoZSB1c2VyIGFjY291bnQgaWRlbnRpZmllciB0eXBlIGZvciB0aGUgcnVudGltZS4UQmxvY2uRCAhhASBUaGUgQmxvY2sgdHlwZSB1c2VkIGJ5IHRoZSBydW50aW1lLiBUaGlzIGlzIHVzZWQgYnkgYGNvbnN0cnVjdF9ydW50aW1lYCB0byByZXRyaWV2ZSB0aGXMIGV4dHJpbnNpY3Mgb3Igb3RoZXIgYmxvY2sgc3BlY2lmaWMgZGF0YSBhcyBuZWVkZWQuLEFjY291bnREYXRhzQYIYQEgRGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4gYWNjb3VudCAob3RoZXIgdGhhbiBub25jZS90cmFuc2FjdGlvbiBjb3VudGVyLCB3aGljaCB0aGlzZCBwYWxsZXQgZG9lcyByZWdhcmRsZXNzKS4AAAAAPFBhcmFjaGFpblN5c3RlbQE8UGFyYWNoYWluU3lzdGVtfDxCbG9ja1dlaWdodE1vZGUAAKkIBAAYfCBUaGUgY3VycmVudCBibG9jayB3ZWlnaHQgbW9kZS4AdQEgVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGF0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgYmxvY2sgd2VpZ2h0LCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWVIIFtgYmxvY2tfd2VpZ2h0YF0uACUBIEtpbGxlZCBpbiBbYFNlbGY6Om9uX2luaXRpYWxpemVgXSBhbmQgc2V0IGJ5IHRoZSBbYGJsb2NrX3dlaWdodGBdIGxvZ2ljLgBEUHJldmlvdXNDb3JlQ291bnQAAK0IBAAMBQEgVGhlIGNvcmUgY291bnQgYXZhaWxhYmxlIHRvIHRoZSBwYXJhY2hhaW4gaW4gdGhlIHByZXZpb3VzIGJsb2NrLgB1ASBUaGlzIGlzIG1haW5seSB1c2VkIGZvciBvZmZjaGFpbiBmdW5jdGlvbmFsaXR5IHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0YXJnZXQgYmxvY2sgd2VpZ2h0LgBEVW5pbmNsdWRlZFNlZ21lbnQBALEIBAAYSQEgTGF0ZXN0IGluY2x1ZGVkIGJsb2NrIGRlc2NlbmRhbnRzIHRoZSBydW50aW1lIGFjY2VwdGVkLiBJbiBvdGhlciB3b3JkcywgdGhlc2UgYXJlYQEgYW5jZXN0b3JzIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGJsb2NrIHdoaWNoIGhhdmUgbm90IGJlZW4gaW5jbHVkZWQgaW4gdGhlIG9ic2VydmVkTCByZWxheS1jaGFpbiBzdGF0ZS4AdQEgVGhlIHNlZ21lbnQgbGVuZ3RoIGlzIGxpbWl0ZWQgYnkgdGhlIGNhcGFjaXR5IHJldHVybmVkIGZyb20gdGhlIFtgQ29uc2Vuc3VzSG9va2BdIGNvbmZpZ3VyZWQ8IGluIHRoZSBwYWxsZXQuAGxBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnQAANkIBAAMaQEgU3RvcmFnZSBmaWVsZCB0aGF0IGtlZXBzIHRyYWNrIG9mIGJhbmR3aWR0aCB1c2VkIGJ5IHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgYWxvbmcgd2l0aCB0aGUtASBsYXRlc3QgSFJNUCB3YXRlcm1hcmsuIFVzZWQgZm9yIGxpbWl0aW5nIHRoZSBhY2NlcHRhbmNlIG9mIG5ldyBibG9ja3Mgd2l0aJAgcmVzcGVjdCB0byByZWxheSBjaGFpbiBjb25zdHJhaW50cy4AVFBlbmRpbmdWYWxpZGF0aW9uQ29kZQEAGAQAGFkBIEluIGNhc2Ugb2YgYSBzY2hlZHVsZWQgdXBncmFkZSwgdGhpcyBzdG9yYWdlIGZpZWxkIGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIGNvZGUgdG8gYmUkIGFwcGxpZWQuAD0BIEFzIHNvb24gYXMgdGhlIHJlbGF5IGNoYWluIGdpdmVzIHVzIHRoZSBnby1haGVhZCBzaWduYWwsIHdlIHdpbGwgb3ZlcndyaXRlIHRoZWUBIFtgOnBlbmRpbmdfY29kZWBdW3NwX2NvcmU6OnN0b3JhZ2U6OndlbGxfa25vd25fa2V5czo6UEVORElOR19DT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGV1ASBuZXh0IGJsb2NrIHRvIGJlIHByb2Nlc3NlZCB3aXRoIHRoZSBuZXcgdmFsaWRhdGlvbiBjb2RlLiBUaGlzIGNvbmNsdWRlcyB0aGUgdXBncmFkZSBwcm9jZXNzLgBETmV3VmFsaWRhdGlvbkNvZGUAABgEABRdASBWYWxpZGF0aW9uIGNvZGUgdGhhdCBpcyBzZXQgYnkgdGhlIHBhcmFjaGFpbiBhbmQgaXMgdG8gYmUgY29tbXVuaWNhdGVkIHRvIGNvbGxhdG9yIGFuZHggY29uc2VxdWVudGx5IHRoZSByZWxheS1jaGFpbi4AZQEgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrIGlmIG5vIG90aGVyIHBhbGxldCBhbHJlYWR5IHNldCwgdGhlIHZhbHVlLgA4VmFsaWRhdGlvbkRhdGEAAEgEAAzQIFRoZSBbYFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhYF0gc2V0IGZvciB0aGlzIGJsb2NrLgBxASBUaGlzIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBvbmx5IG9uY2UgYnkgdGhlIFtgUGFsbGV0OjpzZXRfdmFsaWRhdGlvbl9kYXRhYF0gaW5oZXJlbnQuAFBEaWRTZXRWYWxpZGF0aW9uQ29kZQEAWQEEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBAN0IBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEA0QgEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAA5QgEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAA+QgEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQABCYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEABQkEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAAARCQQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAAEQkEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEAFQkEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQC9AUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAAeQIEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAAB5AgQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAB0JBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAENBwAEKFNlbGZQYXJhSWScEN4FAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AASUJAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEAWQEEABDYIFdoZXRoZXIgdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiB1cGRhdGVkIGluIHRoaXMgYmxvY2suAFUBIFRoaXMgdmFsdWUgaXMgdXBkYXRlZCB0byBgdHJ1ZWAgdXBvbiBzdWNjZXNzZnVsIHN1Ym1pc3Npb24gb2YgYSB0aW1lc3RhbXAgYnkgYSBub2RlLkUBIEl0IGlzIHRoZW4gY2hlY2tlZCBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2sgZXhlY3V0aW9uIGluIHRoZSBgb25fZmluYWxpemVgIGhvb2suAAGwAAAENE1pbmltdW1QZXJpb2QoIAAAAAAAAAAAGIwgVGhlIG1pbmltdW0gcGVyaW9kIGJldHdlZW4gYmxvY2tzLgBNASBCZSBhd2FyZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSAqZXhwZWN0ZWQqIHBlcmlvZCB0aGF0IHRoZSBibG9jayBwcm9kdWN0aW9uSQEgYXBwYXJhdHVzIHByb3ZpZGVzLiBZb3VyIGNob3NlbiBjb25zZW5zdXMgc3lzdGVtIHdpbGwgZ2VuZXJhbGx5IHdvcmsgd2l0aCB0aGlzIHRvYQEgZGV0ZXJtaW5lIGEgc2Vuc2libGUgYmxvY2sgdGltZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBBdXJhIHBhbGxldCBpdCB3aWxsIGJlIGRvdWJsZSB0aGlzcCBwZXJpb2Qgb24gZGVmYXVsdCBzZXR0aW5ncy4AAAQYTW9tZW50KASYIFR5cGUgdXNlZCBmb3IgZXhwcmVzc2luZyBhIHRpbWVzdGFtcC4AAgAANFBhcmFjaGFpbkluZm8BNFBhcmFjaGFpbkluZm8ELFBhcmFjaGFpbklkAQCcEGQAAAAAAAG4AAAAAAAAAwAANFdlaWdodFJlY2xhaW0AAAAAAAAABAiBASBQYWxsZXQgdG8gdXNlIGFsb25nc2lkZSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgU3RvcmFnZVdlaWdodFJlY2xhaW1gXSwgdGhlIHBhbGxldCBwcm92aWRlc4wgd2VpZ2h0IGluZm9ybWF0aW9uIGFuZCBiZW5jaG1hcmtzLgA8UmVsYXlSYW5kb21uZXNzATxSZWxheVJhbmRvbW5lc3MEKFJhbmRvbW5lc3MBACkJCAAAGEEBIFRoZSBsYXN0IGRpc3RpbmN0IHJlbGF5IGNoYWluIHJhbmRvbW5lc3MgdmFsdWVzLCByZWZyZXNoZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW40IHN0YXRlIHByb29mLgA1ASBUaGUgdmFsdWVzIHBlcnNpc3QgYmV0d2VlbiBibG9ja3M6IHRoZXkgcmVmbGVjdCB0aGUgcmVsYXkgcGFyZW50IG9mIHRoZSBsYXN0SQEgYmxvY2sgd2hvc2UgaW5oZXJlbnQgcmFuLiBDb2RlIHJ1bm5pbmcgYmVmb3JlIHRoZSBpbmhlcmVudCAoZS5nLiBgb25faW5pdGlhbGl6ZWApiCBzZWVzIHRoZSBwcmV2aW91cyBibG9jaydzIHZhbHVlcy4AAAAAAAAABQAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCFQctBwQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAG8AAERBwAAAAAASQAANE5ldHdvcmtTdWZmaXgBNE5ldHdvcmtTdWZmaXgENE5ldHdvcmtTdWZmaXgBAE0BGBRwYXNlbwQlASBOZXR3b3JrIHN1ZmZpeCBhcHBlbmRlZCB0byBwcm9kdWN0IG5hbWVzIHdoZW4gZGVyaXZpbmcgcHJvZHVjdCBjb250ZXh0cy4AAUkBAAFBBwAAATUJAAAASgAAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEARQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAEUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBM0GAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIEOQkEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIESQkEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgRVCQQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBGEJBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAVEBAAFFBwAQSEV4aXN0ZW50aWFsRGVwb3NpdEUBQADKmjsAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAAAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAW0JABBEUnVudGltZUhvbGRSZWFzb25NBwR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZUUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJhAgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllchAEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAvQFAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQBxCQQAAAA8VHhQYXltZW50Q3JlZGl0AAB1CQQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAXUHAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAABIU2tpcEZlZWxlc3NQYXltZW50AAABeQcAAAAAAAwAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJpAX0JBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFlAQABfQcAAAGBCQAEQFJlc3RyaWN0ZWRFbnRpdHlpASRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbawgb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGVkRW50aXR5YF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4ADQAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBAJxAYUJBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICjQmRCQQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAp0JoQkEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAnEBpQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAnEBrQEEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAcQEEACBtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgT25seSByZWFkIGJ5IFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF06IGNvbmZpZ3VyZSBpdCBhcyBbYENvbmZpZzo6QXNzZXRJZEFsbG9jYXRvcmBdIGFuZFUBIHByb3ZpZGUgYW4gaW5pdGlhbCB2YWx1ZSBoZXJlIHRvIGFwcGx5IGFuIGF1dG8taW5jcmVtZW50IG1vZGVsIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFtAQABgQcAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdEUBQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlRQFAAKhb6QMAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZUUBQADh9QUAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdEUBQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQkAFBxCYWxhbmNlRQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkcQEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJxARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhsQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZHEBsQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkcQFBAQS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWRxAbUJBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkcQG1AQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ADgAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICjQlVCQQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAo0JRQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAYUHAAABuQkABERSdW50aW1lSG9sZFJlYXNvbk0HBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uAA8AACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJxAb0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAG5AQABiQcAAAG9CQAEJEFzc2V0S2luZHEBBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuABAAADhBc3NldFR4UGF5bWVudAAAAY0HAAAAAAARAAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEApUHwQkEAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABwQEAAZEHABwUTFBGZWXZBBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZUUBQAAyfqcCAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0cQEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWXZBBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlFAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkxQkgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAckJAAgkQXNzZXRLaW5kcQEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZJUHBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDFxARhhc3NldDJxAc0JCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxcQEYYXNzZXQycQEYYW1vdW50RQEsaW5jbHVkZV9mZWVZAUEBHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MXEBGGFzc2V0MnEBGGFtb3VudEUBLGluY2x1ZGVfZmVlWQFBARxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AEgAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjiFCQQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAtUJkQkEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgLZCaEJBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4pQlQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjjNAQQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAgbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIE9ubHkgcmVhZCBieSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdOiBjb25maWd1cmUgaXQgYXMgW2BDb25maWc6OkFzc2V0SWRBbGxvY2F0b3JgXSBhbmRVASBwcm92aWRlIGFuIGluaXRpYWwgdmFsdWUgaGVyZSB0byBhcHBseSBhbiBhdXRvLWluY3JlbWVudCBtb2RlbCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgAByQEAAZ0HABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0RQFAAAAAAAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRFAUAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZUUBQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVFAUAAAAAAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRFAUAAypo7AAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAd0JABQcQmFsYW5jZUUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXI4HFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QTbBrocpvGLHtsG/wgtJECacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4sQkEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOEEBBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDi1CQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDjRAQTUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AEwAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAABAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAAAABQAAERDb2xsYXRvclNlbGVjdGlvbgFEQ29sbGF0b3JTZWxlY3Rpb24UNEludnVsbmVyYWJsZXMBAOEJBAAEEQEgVGhlIGludnVsbmVyYWJsZSwgcGVybWlzc2lvbmVkIGNvbGxhdG9ycy4gVGhpcyBsaXN0IG11c3QgYmUgc29ydGVkLgA0Q2FuZGlkYXRlTGlzdAEA5QkEABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuAERMYXN0QXV0aG9yZWRCbG9jawEBBAUEOBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci4ARERlc2lyZWRDYW5kaWRhdGVzAQA4EAAAAAAMeCBEZXNpcmVkIG51bWJlciBvZiBjYW5kaWRhdGVzLgB1ASBUaGlzIHNob3VsZCBpZGVhbGx5IGFsd2F5cyBiZSBsZXNzIHRoYW4gW2BDb25maWc6Ok1heENhbmRpZGF0ZXNgXSBmb3Igd2VpZ2h0cyB0byBiZSBjb3JyZWN0LgA0Q2FuZGlkYWN5Qm9uZAEARQFAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAHVAQABoQcAGBRQb3RJZMUJIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAwKgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAHxCQAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAF0BBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAFkBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAPUJBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAP0JBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUE3QEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAUNCgQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAdkBAAGlBwAEKEtleURlcG9zaXRFAUAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABFQoACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXPdAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBABkKBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBACEKIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZOEBBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBABkKBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAAAlCgQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQApCgQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBADEKBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFRQpJCgQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnEkKBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQBNCjAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBZAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZy9AUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAHlAQABqQcADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAFRCgAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIoVQoEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQJpCjgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQJpCigEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCaQptCgQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQBxCgQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAAB9CgQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAoEKhQoEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBJUKBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAFkBBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBZAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAAEDBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQC7QGhCgQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAHpAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAa0HABBEVW5pdmVyc2FsTG9jYXRpb251ARgCCQIAeRcEhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgABuQoEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAG5AwABvQcAAAAAACAAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBcEDwQp0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAAMEDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFzQrRCgQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAG9AwABwQcAECBIZWFwU2l6ZTgQAJwBABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHRJAywBBwBYQPuiAgDgABhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodEkDLAEHAFhA+6ICAOAAFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAHZCgAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIgAAHFV0aWxpdHkAAcUDAAHJBwAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgAB3QoACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2lu0QME8CBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cyBvcmlnaW5zLgAoAAAgTXVsdGlzaWcBIE11bHRpc2lnBCRNdWx0aXNpZ3MAAQgFAuEK5QoEAASUIFRoZSBzZXQgb2Ygb3BlbiBtdWx0aXNpZyBvcGVyYXRpb25zLgABMQQAAdEHAAwsRGVwb3NpdEJhc2VFAUAAPJFgBAAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvckUBQAAgvL4AAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAHtCgAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAE9BAAB1QcAAAHxCgAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJleQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUE9QpEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEBQtEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAUEEAAHZBwAYQFByb3h5RGVwb3NpdEJhc2VFAUAADHdCAwAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuAEhQcm94eURlcG9zaXRGYWN0b3JFAUAAAbLEAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VFAUAAFCZyAwAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JFAUAAAmSJAQAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAAEVCwAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuJFByb3h5VHlwZUkEEFUBIEEga2luZCBvZiBwcm94eTsgc3BlY2lmaWVkIHdpdGggdGhlIHByb3h5IGFuZCBwYXNzZWQgaW4gdG8gdGhlIGBJc1Byb3h5YWJsZWAgZmlsdGVyLlEBIFRoZSBpbnN0YW5jZSBmaWx0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gY2FsbCBtYXkgYmUgcHJveGllZCB1bmRlciB0aGlzIHR5cGUuAE0BIElNUE9SVEFOVDogYERlZmF1bHRgIG11c3QgYmUgcHJvdmlkZWQgYW5kIE1VU1QgQkUgdGhlIHRoZSAqbW9zdCBwZXJtaXNzaXZlKiB2YWx1ZS4IGAnXg0Zyeg71jA+gO6+jI8vFFIjZKhqnE3sDv7UO/BdEY2hlY2tfcGVybWlzc2lvbnMIEGNhbGwgKHByb3h5X3R5cGVJBFkBBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVja0kEHGFnYWluc3RJBFkBBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACwAABhQZW9wbGUBGFBlb3BsZSQQS2V5cwABBAIIKAQAFEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgB1ASBMb29rLXVwIGZyb20gdGhlIGNyeXB0byAocHVibGljKSBrZXkgdG8gdGhlIGltbXV0YWJsZSBJRCBvZiB0aGUgaW5kaXZpZHVhbCAoYFBlcnNvbmFsSWRgKS4gQV0BIHBlcnNvbiBjYW4gaGF2ZSB0d28gZGlmZmVyZW50IGVudHJpZXMgaW4gdGhpcyBtYXAgaWYgdGhleSBxdWV1ZWQgYSBrZXkgbWlncmF0aW9uIHdoaWNoZCBoYXNuJ3QgYmVlbiBlbmFjdGVkIHlldC4AOENvdW50ZXJGb3JLZXlzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAGFBlb3BsZQABBAIoGQsEAAxJASBUaGUgY3VycmVudCBpbmRpdmlkdWFscyB3ZSByZWNvZ25pc2UsIGJ1dCBub3QgbmVjZXNzYXJpbHkgeWV0IGluY2x1ZGVkIGluIGEgcmluZy4AZQEgSW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApIHRvIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIGtleSBhbmQgc3RhdHVzLgA4QWxpYXNUb0FjY291bnQAAQQC6QMEBAAEzCBDb252ZXJzaW9uIG9mIGEgY29udGV4dHVhbCBhbGlhcyB0byBhbiBhY2NvdW50IElELgA4QWNjb3VudFRvQWxpYXMAAQQCBOUDBAAEzCBDb252ZXJzaW9uIG9mIGFuIGFjY291bnQgSUQgdG8gYSBjb250ZXh0dWFsIGFsaWFzLgBMQWNjb3VudFRvUGVyc29uYWxJZAABBAIEKAQAELwgQXNzb2NpYXRpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIHBlcnNvbmFsIElELgAhASBNYW5hZ2VkIHdpdGggYHNldF9wZXJzb25hbF9pZF9hY2NvdW50YCBhbmQgYHVuc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgLvggUmV2ZXJzZSBsb29rdXAgaXMgaW5zaWRlIGBQZW9wbGVgIHN0b3JhZ2UsIGluc2lkZSB0aGUgcmVjb3JkLgA4TmV4dFBlcnNvbmFsSWQBACggAAAAAAAAAAAEuCBUaGUgbmV4dCBmcmVlIGFuZCBuZXZlciByZXNlcnZlZCBwZXJzb25hbCBJRC4AXFBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQBZAQQABMAgV2hldGhlciB0aGUgcGVvcGxlIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4ASFJlc2VydmVkUGVyc29uYWxJZAABBAUoEAQABMAgQ2FuZGlkYXRlcycgcmVzZXJ2ZWQgaWRlbnRpdGllcyB3aGljaCB3ZSB0cmFjay4AAU0EAAHhBwAQMFJpbmdFeHBvbmVudFUFBAkETQEgVGhlIHJpbmcgZXhwb25lbnQgdXNlZCB0byBvcGVyYXRlIHRoZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaW4gYE1lbWJlclNlcnZpY2VgLgBcT25ib2FyZGluZ1F1ZXVlUGFnZVNpemU4EB4AAAAISQEgTWF4aW11bSBudW1iZXIgb2YgcGVvcGxlIGluY2x1ZGVkIGluIGFuIG9uYm9hcmRpbmcgcXVldWUgcGFnZSBiZWZvcmUgYSBuZXcgb25lIGlzJCBjcmVhdGVkLgBkU3RhbGVBbGlhc0NsZWFudXBJbnRlcnZhbDgQlgAAAAQxASBJbnRlcnZhbCAoaW4gYmxvY2tzKSBhdCB3aGljaCB0aGUgb2ZmY2hhaW4gd29ya2VyIHJ1bnMgc3RhbGUgYWxpYXMgY2xlYW51cC4AcGFjY291bnRfc2V0dXBfdGltZV90b2xlcmFuY2U4EFgCAAAUPQEgVGhlIGFtb3VudCBvZiBibG9jayBudW1iZXIgdG9sZXJhbmNlIHdlIGFsbG93IGZvciBhIHNldHVwIGFjY291bnQgdHJhbnNhY3Rpb24uAAUBIGBzZXRfYWxpYXNfYWNjb3VudGAgYW5kIGBzZXRfcGVyc29uYWxfaWRfYWNjb3VudGAgY2FsbHMgY29udGFpbnNRASBgY2FsbF92YWxpZF9hdGAgYXMgYSBwYXJhbWV0ZXIsIHRob3NlIGNhbGxzIGFyZSB2YWxpZCBpZiB0aGUgYmxvY2sgbnVtYmVyIGlzIHdpdGhpblggdGhlIHRvbGVyYW5jZSBwZXJpb2QuAAEdCwAAADMAABxNb2JSdWxlARxNb2JSdWxlMBxDcmVkaXRzAQEEAgghC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIwgVGhlIHZvdGluZyByZWNvcmRzIG9mIGFsbCBhbGlhc2VzLgA8Vm90aW5nUGVuYWx0aWVzAAEEAgg4BAAIcQEgVGhlIHZvdGUgcGVuYWx0aWVzIG9mIHVzZXJzIGFuZCB0aGVpciBzdGFydGluZyBtb21lbnQuIFZvdGVycyB3aXRoIHBlbmFsdGllcyBjYW5ub3Qgdm90ZSBpbswgY29udGVtcHQgdW50aWwgdGhlIHBlbmFsdHkgZXhwaXJlcyBhbmQgaXMgcmVtb3ZlZC4AMFZvdGluZ1BvaW50cwEBCAYCJQs4EAAAAAAIZQEgVGhlIGFjY3VtdWxhdGVkIHBvaW50cyBvZiBhbGwgYWxpYXNlcywgZHVyaW5nIGVhY2ggZnVuZGluZyByb3VuZC4gVGhlIHBvaW50cyBhY2N1bXVsYXRlZCEBIGR1cmluZyByb3VuZCBgTmAgY2FuIGJlIHJlZGVlbWVkIGZvciByZXdhcmRzIG9ubHkgZHVyaW5nIHJvdW5kIGBOICsgMWAuABRWb3RlcwABCAICJQthBAQABLggQWxsIHZvdGVzIGNhc3QsIHNlZ3JlZ2F0ZWQgYnkgY2FzZSBhbmQgdm90ZXIuACRDYXNlQ291bnQBADgQAAAAAAQRASBUaGUgbnVtYmVyIG9mIGNhc2VzLCBvcGVuIG9yIHJlY2VudGx5IGNsb3NlZCwgc3RvcmVkIGluIHRoZSBwYWxsZXQuACRPcGVuQ2FzZXMAAQQCOCkLBAAEKQEgVGhlIG9wZW4gY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHBhbGxldC4gVGhlc2UgY2FzZXMgY2FuIHN0aWxsIGJlIHZvdGVkIG9uLgAkUmlwZUNhc2VzAAEEAjhFCwQADHUBIFRoZSByaXBlIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZSB2b3RpbmcgaGFzIGNvbmNsdWRlZCBvbiB0aGVzZSBjYXNlcyBhbmQgYSB2ZXJkaWN0ZQEgaGFzIGJlZW4gcmVhY2hlZCwgYnV0IHRoZXkgY2Fubm90IGJlIHJlbW92ZWQgeWV0IGluIG9yZGVyIHRvIGFsbG93IHBlb3BsZSB0byBjbGFpbSB0aGVpchwgdm90ZXMuACREb25lQ2FzZXMAAQQCOEkLBAAIYQEgVGhlIGRvbmUgY2FzZXMgcmVjb3JkZWQgaW4gdGhlIHBhbGxldC4gVGhlc2UgY2FzZXMgYXJlIG9ic29sZXRlIGFuZCBjYW4gYmUgcmVtb3ZlZCBmcm9tJCBzdG9yYWdlLgBEQWNjdW11bGF0ZWRQb2ludHMBACggAAAAAAAAAAAIdQEgVGhlIG51bWJlciBvZiBwb2ludHMgYWNjdW11bGF0ZWQgdGhyb3VnaCBjb3JyZWN0IHZvdGVzIGR1cmluZyB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuIFRoaXN1ASBhbW91bnQgaXMgZ29pbmcgdG8gZGV0ZXJtaW5lIHRoZSBwb2ludC9yZXdhcmQgZXhjaGFuZ2UgcmF0ZSBvZiB0aGUgbmV4dCByZXdhcmQgcGF5b3V0IHJvdW5kLgBIUGF5b3V0RGlzdHJpYnV0aW9uAABNCwQABNggRGVzY3JpYmVzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBjdXJyZW50IHBheW91dCByb3VuZC4AOFJvdW5kU2NoZWR1bGVzAQBRCwQABLggRGVzY3JpYmVzIHRoZSBzY2hlZHVsZXMgb2YgdGhlIHBheW91dCByb3VuZHMuACxBY3RpdmVTaW5jZQAAKAQACG0BIFRoZSB0aW1lc3RhbXAsIGluIHNlY29uZHMsIG9mIHRoZSBtb21lbnQgZW5vdWdoIGFjdGl2ZSB2b3RlcnMgd2VyZSBkZXRlY3RlZCBhbmQgdm90aW5nIHdhczEBIGVuYWJsZWQuIFRoaXMgdmFsdWUgd2lsbCBub3QgYmUgcHJlc2VudCBpZiB0aGVyZSBhcmUgdG9vIGZldyBhY3RpdmUgdm90ZXJzLgABXQQAAeUHADhQQ3VycmVuY3lMb2NhdGlvbkluZm9xATABAwBxFwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE1heFZvdGVDbGFpbUR1cmF0aW9uKCCAUQEAAAAAAAQFASBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGEgY2FzZSB0aW1lcyBvdXQgYW5kIGNhbiBiZSByZWFwZWQuADxNaW5DYXNlRHVyYXRpb244EFgCAAAEQQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGEgY2FzZSBtdXN0IHN0YXkgb3BlbiBmb3Igdm90aW5nIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2VkLgBETWF4Vm90aW5nRHVyYXRpb244ELAEAAAELQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgZm9yIHdoaWNoIGEgY2FzZSBjb3VsZCBzdGF5IG9wZW4gZm9yIHZvdGluZy4ARE1pblR1cm5vdXROb21pbmFsOBABAAAABEUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhIGNhc2UgbXVzdCByZWNlaXZlIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFBNaW5UdXJub3V0UGVyY2VudGFnZV0LBAoIZQEgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHZvdGVzIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgdm90ZXIgY291bnQgYSBjYXNlIG11c3QgcmVjZWl2ZYQgYmVmb3JlIGEgdmVyZGljdCBjYW4gYmUgcmVhY2hlZC4AVFZvdGluZ1BlbmFsdHlEdXJhdGlvbjgQwKgAAATQIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYSBwZW5hbHR5IGlzIGFwcGxpZWQgZm9yLgBETWF4Vm90ZXNDbGFpbWFibGU4EAoAAAAE9CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgY2xhaW1hYmxlIGluIGEgc2luZ2xlIGV4dHJpbnNpYy4AUE9mZmNoYWluV29ya0ludGVydmFsOBCWAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgBMQ2xlYW5Wb3Rlc0JhdGNoU2l6ZTgQ6AMAAAQlASBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZCBkdXJpbmcgb2ZmY2hhaW4gd29ya2VyIHJ1bi4AaFZvdGVzT3BlbkZvckNsYWltc0R1cmF0aW9uOBBYAgAACBUBIFRoZSB0aW1lIGluIHNlY29uZHMgZHVyaW5nIHdoaWNoIHZvdGVzIGNhbiBiZSBjbGFpbWVkIG9uIGRvbmUgY2FzZXMuwCBNZWFzdXJlZCBmcm9tIHRoZSB0aW1lIHRoZSBjYXNlIGJlY29tZXMgJ0RvbmUnLgBUTWluaW11bVZvdGVyVGhyZXNob2xkOBADAAAACGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY3RpdmUgdm90ZXJzIHJlcXVpcmVkIHRvIGFsbG93IHZvdGluZy4gV2hlbiB0aGlzIHRocmVzaG9sZCBpcyBub3SEIG1ldCwgb3BlbiBjYXNlcyBjYW5ub3QgdGltZSBvdXQuADxtb2JfcnVsZV9wb3RfaWQEgG1vZGxNb2JSd3JkcwAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgBAbW9iX3J1bGVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvbW9iLXJ1bGUgICAIUQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBtb2IYIHJ1bGUuAAFhCwAAADQAAChQcm9vZk9mSW5rAShQcm9vZk9mSW5rLChDYW5kaWRhdGVzAAEEAgRlCwQABEkBIFRoZSBjdXJyZW50IHBlcnNvbmFsIGlkZW50aXRpZXMgd2hpY2ggYXJlIGdvaW5nIHRocm91Z2ggdGhlIHByb29mLW9mLWluayBwcm9jZXNzLgAYUGVvcGxlAAEEBSh1CwQACHEBIFRoZSBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIHdlIHRyYWNrOyBhbGwgd2hpY2ggaGF2ZSBiZWVuIHJlY29nbml6ZWQgdGhyb3VnaCBwcm9vZi1vZi1pbms0IGFyZSBpbiBoZXJlLgA8UmVmZXJyYWxUaWNrZXRzAAEEBSiBCwQABAkBIFRoZSB0aWNrZXRzIHN0b3JlZCBvbi1jaGFpbiByZWFkeSB0byBiZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADhEZXNpZ25GYW1pbGllcwABBALNA40LBAAEqCBUaGUgY3VycmVudCBkZXNpZ24gZmFtaWxpZXMgd2UgcmVjb2duaXNlLgBAQ29tbWl0dGVkRGVzaWducwABCAICkQuVCwQABNQgVGhlIGNvbW1pdHRlZCBkZXNpZ25zIHdoaWNoIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgA8QWxsb2NhdGlvbkNvdW50AQA4EAAAAAAEsCBUaGUgbnVtYmVyIG9mIGp1ZGdlbWVudHMgY3VycmVudGx5IG9uZ29pbmcuADRDb25maWd1cmF0aW9uAQCFBKBAnQQABAAAAOgDAAAAAAAEAAAAACAAAAAAACAAAAAAAAgAAABAnQQABEwgVGhlIGNvbmZpZ3VyYXRpb24uAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE+CBOdW1iZXIgb2YgaW52aXRhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICmQsQBAAMHQEgUGVuZGluZyBpbnZpdGF0aW9ucyBmb3IgZWFjaCBpbnZpdGVyIChhbiBhY2NvdW50IHRoYXQgaW52aXRlcyBvdGhlcnMpLgBZASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzLCB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUuAGxSZWZlcnJlclJlaW1idXJzZW1lbnRWYWx1ZXMAAIkEBAAUYQEgVGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVycywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiBlYWNoIHZhbHVlbQEgc2hvdWxkIGJlIGF3YXJkZWQuIFRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0QQEgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIHRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLgBFASBTdG9yYWdlIGl0ZW0gbmFtZSBrZWVwcyB0aGUgbGVnYWN5IHByZWZpeCBmb3Igc3RvcmFnZSByZWFkYWJpbGl0eSBjb21wYXRpYmlsaXR5LgBsUmVmZXJyZWRSZWltYnVyc2VtZW50VmFsdWVzAACJBAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBwZW9wbGUsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaHEBIHZhbHVlIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGVVASBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AAW0EAAHtBwAMSE1heEFjdGl2ZVJlZmVycmFsczgQCgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVmZXJyYWxzIGEgdXNlciBjYW4gaGF2ZSBvcGVuLlggSXQgY2Fubm90IGV4Y2VlZCAyMDAuABRQb3RJZMUJIFBvSVBvdF9fIOwgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIHJld2FyZCBwb3QgaXMgZ2VuZXJhdGVkLgApASBUaGUgYWNjb3VudCBtdXN0IGJlIGZ1bmRlZCBzbyByZXdhcmRzIGNhbiBiZSBwYWlkIGR1cmluZyByZWdpc3RyYXRpb24gYW5kYCByZWZlcnJhbCByZXdhcmQgY2xhaW1zLgARASBUaGUgYFBhbGxldElkYCBtdXN0IGJlIGEgY29uc3RhbnQgYXMgaXQgaXMgZXhwb3NlZCBpbiB0aGUgbWV0YWRhdGEuZQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aXRoIGEgcnVudGltZSB1cGdyYWRlIGNhbiBiZSBkb25lIGF0IGFueSB0aW1lLCB0aGUgbmV3IGFjY291bnQgd2lsbJAgdGhlbiBuZWVkIHRvIGJlIGZ1bmRlZCBhY2NvcmRpbmdseS4ATHByb29mX29mX2lua19wb3RfaWQEgG1vZGxQb0lQb3RfXwAAAAAAAAAAAAAAAAAAAAAAAAAABNQgVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvdCB1c2VkIGZvciByZXdhcmQgdHJhbnNmZXJzLgABnQsACDxUaWNrZXRTaWduYXR1cmV5BAyIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLgABASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6OlRpY2tldFB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4YVGlja2V0BASYIFRpY2tldCB0eXBlIHVzZWQgdG8gcmVmZXIgY2FuZGlkYXRlcy4ANQAAEEdhbWUBEEdhbWVQUFN0b3JlZFBoYXNlRHVyYXRpb25zAADhBAQADPQgUGhhc2UtZHVyYXRpb24gb3ZlcnJpZGUgc2V0IGJ5IFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0gdmlh4CBgc2V0X2dhbWVfcGhhc2VzYC4gYE5vbmVgIG1lYW5zIHRoZSBjaGFpbiBmYWxscyBiYWNrIHRvcCBgVDo6RGVmYXVsdFBoYXNlRHVyYXRpb25zYC4ARFBsYXlEZXBvc2l0QW1vdW50AQBFAUAAyBeoBAAAAAAAAAAAAAAAED0BIFRoZSBjb25maWd1cmVkIG5hdGl2ZSBiYWxhbmNlIGhlbGQgYXMgZGVwb3NpdCB3aGVuIGFuIGFjY291bnQgcGxheWVyIHNpZ25zIHVwLgAxASBUaGlzIHZhbHVlIGlzIG9ubHkgdXNlZCBmb3IgbmV3IGRlcG9zaXQgY3JlYXRpb25zOyBleGlzdGluZyBhY3RpdmUgZGVwb3NpdHOoIHJldGFpbiB0aGUgYW1vdW50IHRoZXkgd2VyZSBjcmVhdGVkIHdpdGguADxBcmNoaXZlZFBsYXllcnMAAQQCCQWhCwQABCkBIEFsbCB0aGUgcGxheWVyIHdpdGggemVybyBzY29yZSBidXQgc3RpbGwgb25ib2FyZGVkIGluIGluZGl2X3BhbGxldF9zY29yZS4AHFBsYXllcnMAAQQCCQWlCwQAEHAgQWxsIHRoZSBwbGF5ZXIgaW4gdGhlIGdhbWUuACEBIEFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIHRoaXMgc3RvcmFnZSBhbmQgc3RhdGVtZW50IGFjY291bnRzIGlupCBbYFN0bXRBY2NvdW50VG9BbGlhc2BdIG11c3Qgbm90IG92ZXJsYXAuACRHYW1lSW5kZXgBADgQAAAAAARgIFRoZSBjdXJyZW50IGdhbWUgaW5kZXguABBHYW1lAAC9CwQABMwgVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBnYW1lIG9yIG9uZ29pbmcgZ2FtZS4ALEdhbWVIaXN0b3J5AAEEBTg4BAAIYQEgVGhlIG1hcHBpbmcgZnJvbSBwYXN0IGdhbWVzLCBpZGVudGlmaWVkIGJ5IHRoZWlyIGdhbWUgaW5kZXgsIHRvIHRoZSBzdGFydCB0aW1lc3RhbXAsIGlueCBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLgBcUGxheWVyQXR0ZW5kYW5jZUhpc3RvcnkBAQQCCQXZCwQACDEBIEVudHJpZXMgb2YgcHJldmlvdXNseSBhdHRlbmRlZCBnYW1lcyBvZiBlYWNoIHBsYXllci4gUmV0YWluZWQgb24gYG9mZmJvYXJkYAkBIGFuZCBga2lja291dGAuIEJvdW5kZWQgYnkgYE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGhgIHBlciBwbGF5ZXIuAFBHYW1lUGFydGljaXBhbnRDb3VudAEBBAU4OBAAAAAAEPAgQ291bnQgb2YgY29uZmlybWVkIGF0dGVuZGVlcyBwZXIgZ2FtZSBpbmRleC4gSW5jcmVtZW50ZWQgYnkZASBbYFBhbGxldDo6bm90ZV9hdHRlbmRhbmNlYF0gZm9yIGV2ZXJ5IGF0dGVuZGFuY2UgZW50cnksIHJlZ2FyZGxlc3Mgb2b8IHdoZXRoZXIgdGhlIHBsYXllciBpcyByZWNvcmRlZCBhcyBgQWNjb3VudE9yUGVyc29uOjpQZXJzb25gIG9y9CBgQWNjb3VudE9yUGVyc29uOjpBY2NvdW50YC4gRXhwb3NlZCBmb3Igb2ZmLWNoYWluIGNvbnN1bWVycy4ANEluZGV4VG9QbGF5ZXIAAQQF3QsJBQQABOQgVGhlIG1hcHBpbmcgZnJvbSByb3VuZCBpbmRleCBhbmQgcGxheWVyIGluZGV4IHRvIHBsYXllci4ANFBsYXllclRvSW5kZXgAAQQCCQXhCwQABOAgVGhlIG1hcHBpbmcgZnJvbSBwbGF5ZXIgdG8gdGhlaXIgaW5kaWNlcyBpbiBlYWNoIHJvdW5kLgBEU2h1ZmZsZVJlY29nbml6ZWQAAQgFBuULCQUEAAQBASBTdG9yYWdlIHVzZWQgdG8gY29tcHV0ZSB0aGUgc2h1ZmZsZSBvcmRlciBvZiByZWNvZ25pemVkIHBlb3BsZS4AUFNodWZmbGVOb3RSZWNvZ25pemVkAAEIBQblCwkFBAAEVQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2Ygbm90IHJlY29nbml6ZWQgcGVvcGxlLCBpLmUuIGNhbmRpZGF0ZXMuADRHYW1lU2NoZWR1bGVzAQDpCwQAAABAQXZhaWxhYmxlSW52aXRlcwEBBAIEOBAAAAAABOggTnVtYmVyIG9mIGludml0ZXMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICmQsQBAAQiCBQZW5kaW5nIGludml0ZXMgZm9yIGVhY2ggaW52aXRlci4AaQEgSWYgdGhlIGtleSBgKGludml0ZXIsIHRpY2tldClgIGV4aXN0cyB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUsIGZyb200IHRoZSBpbnZpdGVyLgAsTGl0ZUludml0ZXMAAQQCCAQEAAhpASBUaGUgYWNjb3VudCBlYWNoIGxpdGUgcGVyc29uIGRlc2lnbmF0ZWQgdG8gcGxheSB3aXRoLCBrZXllZCBieSB0aGUgbGl0ZSBwZXJzb24ncyBhbGlhcyBpbrwgW2BpbmRpdl9wYWxsZXRfc2NvcmU6OlBhbGxldDo6c2NvcmVfY29udGV4dGBdLgBIQWxpYXNUb1N0bXRBY2NvdW50AAEEAggEBAAcWQEgTWFwcGluZyBmcm9tIGFsaWFzIHRvIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgU3RtdEFjY291bnRUb0FsaWFzYF0uAOwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBIU3RtdEFjY291bnRUb0FsaWFzAAEEAgQIBAAkWQEgTWFwcGluZyBmcm9tIHRoZSBhY2NvdW50IGlkIHRvIHVzZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBzdGF0ZW1lbnQgc3RvcmUgdG8gdGhlIGFsaWFzLgBBASBBY2NvdW50LWJhc2VkIHBsYXllciBzaW1wbHkgdXNlIHRoZWlyIGFjY291bnQgYW5kIGFyZSBub3QgcGFydCBvZiB0aGlzIG1hcHBpbmcuAQEgUmV2ZXJzZSBtYXBwaW5nIGlzIGF2YWlsYWJsZSBpbiBzdG9yYWdlIFtgQWxpYXNUb1N0bXRBY2NvdW50YF0u7CBUaGlzIGlzIHJlbW92ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIGdldHMgYXJjaGl2ZWQuVQEgVGhpcyBpcyB1cGRhdGVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBzaWducyB1cCB3aXRoIGFub3RoZXIgc3RhdGVtZW50IGFjY291bnQuAGUBIFN0YXRlbWVudCBhY2NvdW50cyBpbiB0aGlzIHN0b3JhZ2UgYW5kIGFjY291bnQtYmFzZWQgcGxheWVyIGFjY291bnRzIGluIFtgUGxheWVyc2BdIG11c3Q0IG5vdCBvdmVybGFwLgBgQ29tbXVuaWNhdGlvbklkZW50aWZpZXJzAAEEAgR9BAQADGkBIFRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXJzIHVzZWQgYnkgcGxheWVycyB0byBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIFAyUCBjb25uZWN0aW9uIGlubQEgb3JkZXIgdG8gcGxheSB0aGUgZ2FtZS4gVGhlIGFjY291bnQgdW5kZXIgd2hpY2ggdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBpcyByZWdpc3RlcmVkGQEgc2hvdWxkIGJlIHRoZSBzYW1lIGFjY291bnQgdXNlZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUuAAGVBAAB8QcANCRNYXhSb3VuZHM4EAMAAAAMoCBUaGUgbWF4aW11bSBudW1iZXIgb2Ygcm91bmRzIGluIGEgZ2FtZS4A6CBOb3RlOiB0aGUgYWN0dWFsIG51bWJlciBvZiByb3VuZHMgaXMgY29uZmlndXJlZCBwZXIgZ2FtZS4AME1heEdyb3VwU2l6ZTgQBgAAAAyoIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAuABkBIE5vdGU6IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cCBpcyBjb25maWd1cmVkIHBlciBnYW1lLgAwTWluR3JvdXBTaXplOBAAAAAAIKggVGhlIG1pbmltdW0gbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cC4AZQEgV2hlbiBzY2hlZHVsaW5nIGEgZ2FtZSB0aGUgdmFsdWUgZm9yIGBtYXhfZ3JvdXBfc2l6ZWAgbXVzdCBiZSBhdCBsZWFzdCB0aGlzIG1pbmltdW0gKyAxLgAlASBJbiBvcmRlciB0byBoYXZlIG5vIHNpbmdsZS1wbGF5ZXIgZ3JvdXBzLCB0aGlzIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMi4AUQEgTm90ZTogdGhlIGFjdHVhbCBtaW5pbXVtIG51bWJlciBvZiBwbGF5ZXJzIGluIGEgZ3JvdXAgaXMgY29uZmlndXJlZCBwZXIgZ2FtZSwgaXQgaXNYIGBtYXhfZ3JvdXBfc2l6ZSAtIDFgLgBUTm9uUGxheWluZ0tpY2tvdXRUaW1lOBCAUzsADBUBIFRoZSB0aW1lIGFmdGVyIHdoaWNoIGEgcGxheWVyIHRoYXQgaXMgbm90IHBsYXlpbmcgY2FuIGJlIGtpY2tlZCBvdXQuALwgVGhpcyBpcyBvbmx5IGZvciBhY2NvdW50IHBsYXllcnMsIG5vdCBwZXJzb25zLgBIRGVmYXVsdFBsYXlEZXBvc2l0RQFAAMgXqAQAAAAAAAAAAAAAAAhRASBUaGUgZGVmYXVsdCBwbGF5IGRlcG9zaXQgKG5hdGl2ZSBiYWxhbmNlKSB1c2VkIHdoZW4gW2BQbGF5RGVwb3NpdEFtb3VudGBdIGhhcyBuZXZlcnAgYmVlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuAFREZWZhdWx0UGhhc2VEdXJhdGlvbnPhBFAsAQAAPAAAAB4AAABYAgAAPAAAABDsIFRoZSBkZWZhdWx0IGR1cmF0aW9ucyBvZiBlYWNoIGdhbWUgcGhhc2UsIGluIHNlY29uZHMuIFdoZW78IGBTdG9yZWRQaGFzZUR1cmF0aW9uc2AgaXMgYFNvbWVgLCB0aG9zZSB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNl2CBvdmVyIHRoaXMgZGVmYXVsdDsgdGhlIG92ZXJyaWRlIGlzIHNldCBhdCBydW50aW1lIHZpYXQgW2BQYWxsZXQ6OnNldF9nYW1lX3BoYXNlc2BdLgBATWF4R2FtZVNjaGVkdWxlczgQDAAAAATsIFRoZSBNYXhpbXVtIG51bWJlciBvZiBnYW1lIHNjaGVkdWxlcyB0aGUgcGFsbGV0IGNhbiBzdG9yZS4AZE1heEF0dGVuZGFuY2VIaXN0b3J5RGVwdGg4EAwAAAAIXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhc3QgZ2FtZXMgZm9yIHdoaWNoIHBsYXllciBhdHRlbmRhbmNlIGlzIHN0b3JlZC4gQW55IGF0dGVuZGFuY2UBASBlbnRyaWVzIG9sZGVyIHRoYW4gdGhpcyB3aWxsIGJlIGltbWluZW50bHkgcHVyZ2VkIGZyb20gc3RvcmFnZS4ANEFpcmRyb3BTb3VyY2UEgG1vZGxwb3AvZ2FkcwAAAAAAAAAAAAAAAAAAAAAAAAAACOQgQWNjb3VudCB0aGF0IGZ1bmRzIHRoZSBwZXItZ2FtZSBhaXJkcm9wIHByaXplIGFsbG9jYXRpb24NASAoYG1heF93aW5uZXJzIMOXIGFzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgcGVyIHNjaGVkdWxlZCBnYW1lKS4AbHByb29mX29mX293bmVyc2hpcF9tc2dfYmFzZQiAcG9wOmdhbWU6c3RtdF9hY2NvdW50X2Zvcl9hbGlhczoQGQEgVGhlIGJhc2UgbWVzc2FnZSBvZiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIGFuIGFjY291bnQgYnkgYW4gYWxpYXMuADUBIFRoZSBmdWxsIG1lc3NhZ2UgaXMgdGhpcyBiYXNlIGNvbmNhdGVuYXRlZCB0byB0aGUgYWxpYXMgYW5kIHRoZW4gaGFzaGVkIHdpdGisIGBibGFrZTJfMjU2YCAoYmxha2UyIHdpdGggMjU2IGJpdCBvdXRwdXQpLgA4bWF4X2VuYWN0bWVudHM4EBAAAAAQOQEgTWF4aW11bSBudW1iZXIgb2YgZnVsbCBlYXJseS1hdHRlbmRhbmNlIGVuYWN0bWVudHMgYSBzaW5nbGUgYHJlcG9ydGAgY2FsbCBjYW4ZASB0cmlnZ2VyOiBldmVyeSB1bmlxdWUgY28tcGxheWVyIGFjcm9zcyBhbGwgcm91bmRzLCBwbHVzIHRoZSByZXBvcnRlci4A3CBVc2VkIGFzIHRoZSBwcmUtZGlzcGF0Y2ggb3ZlcmNoYXJnZSBib3VuZCBvbiBgcmVwb3J0YC4ASG1heF9yZWNlaXZlZF92b3RlczgQDwAAAAhVASBbYFNlbGY6Om1heF9hdHRlc3RhdGlvbnNgXSBvdmVyIGFueSBnYW1lIHRoZSBydW50aW1lIGFsbG93czogdGhlIG1vc3Qgdm90ZXMgYSBzaW5nbGUhASBwbGF5ZXIgY2FuIHJlY2VpdmUsIGFuZCBlcXVhbGx5IHRoZSBtb3N0IGNvLXBsYXllcnMgdGhleSBjYW4gcmVwb3J0IG9uLgBUYWlyZHJvcF9ldmVudF9pZF9iYXNl7QtscG9wOmdhbWU6YWlyZHJvcDogICAgICAgICAgDFkBIFRoZSBiYXNlIHN0cmluZyBmb3IgdGhlIGFpcmRyb3AgZXZlbnQgaWQgZGVyaXZhdGlvbi4gVGhlIGFjdHVhbCBldmVudCBpZCBpcyB0aGlzIGJhc2UdASBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgYWlyZHJvcCBpbmRleCBhbmQgdGhlIGdhbWUgaW5kZXggQkUgZW5jb2RlZCAoc2VlfCBbYFBhbGxldDo6YWlyZHJvcF9ldmVudF9pZGBdKS4AAfELABA8VGlja2V0U2lnbmF0dXJleQQEiCBTaWduYXR1cmUgdXNlZCB0byB2ZXJpZnkgdGlja2V0cy5AQWNjb3VudFNpZ25hdHVyZXkEBGAgU2lnbmF0dXJlIGZvciBhY2NvdW50cy44QWlyZHJvcEFzc2V0SWRxAQSQIEFzc2V0IGlkIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uTEFpcmRyb3BBc3NldEJhbGFuY2VFAQSkIEFzc2V0IGJhbGFuY2UgdXNlZCBieSBbYFNlbGY6OkFpcmRyb3BgXS4ANwAAFFNjb3JlARRTY29yZSwwUGFydGljaXBhbnRzAAEEAgkF9QsEAAR8IFRoZSBwYXJ0aWNpcGFudHMgaW5mb3JtYXRpb25zLgBMUGVyc29uaG9vZFRocmVzaG9sZAEADAQABMggVGhlIHNjb3JlIHRocmVzaG9sZCByZXF1aXJlZCB0byByZWFjaCBwZXJzb25ob29kLgBsUGVyc29uaG9vZFRocmVzaG9sZFNjaGVkdWxlAQD9BHwYiBMAAAEQJwAAAyBOAAAGuIgAAApQwwAAD/////8VKB0BIFJ1bnRpbWUtY29uZmlndXJhYmxlIHNjaGVkdWxlIG9mIHBlcnNvbmhvb2QtdGhyZXNob2xkIHRpZXJzLCBzb3J0ZWQgYnkdASBhc2NlbmRpbmcgYHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGRgLiBFYWNoIHRpZXIgc3BlY2lmaWVzIHRoZSBzY29yZSBhHQEgcGFydGljaXBhbnQgbXVzdCByZWFjaCB0byBiZSByZWNvZ25pemVkIGFzIGEgcGVyc29uIGF0IHRoYXQgcG9wdWxhdGlvbhwgbGV2ZWwuAAUBIERlZmF1bHRzIHRvIFtgRGVmYXVsdFBlcnNvbmhvb2RUaHJlc2hvbGRUaWVyc2BdIHVudGlsIGdvdmVybmFuY2UBASBvdmVycmlkZXMgaXQgdmlhIFtgUGFsbGV0OjpzZXRfcGVyc29uaG9vZF90aHJlc2hvbGRfc2NoZWR1bGVgXS4AEQEgQSBuZXcgc2NoZWR1bGUgdGFrZXMgZWZmZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbvwgd2hlbiBgdXBkYXRlX3RocmVzaG9sZHMoKWAgcmVjYWxjdWxhdGVzIGBQZXJzb25ob29kVGhyZXNob2xkYC4AUEFic2VuY2VHcmFjZVNjaGVkdWxlAQDxBJQYiBMAAAYFECcAAAUEIE4AAAQDuIgAAAMCUMMAAAIB/////wYBICkBIFJ1bnRpbWUtY29uZmlndXJhYmxlIHNjaGVkdWxlIG9mIGFic2VuY2UtZ3JhY2UgdGllcnMsIHNvcnRlZCBieSBhc2NlbmRpbmcNASBwb3B1bGF0aW9uIHNpemUgdGhyZXNob2xkLiBFYWNoIHRpZXIgc3BlY2lmaWVzIGhvdyBtYW55IG1pc3NlcyBhcmUNASB0b2xlcmF0ZWQgd2l0aGluIHJlY2VudCBnYW1lcyBiZWZvcmUgYSBwYXJ0aWNpcGFudCdzIHBlcnNvbmhvb2QgaXMsIHN1c3BlbmRlZC4AHQEgRGVmYXVsdHMgdG8gW2BEZWZhdWx0QWJzZW5jZUdyYWNlVGllcnNgXSB1bnRpbCBnb3Zlcm5hbmNlIG92ZXJyaWRlcyBpdA0BIHZpYSBbYFBhbGxldDo6c2V0X2Fic2VuY2VfZ3JhY2Vfc2NoZWR1bGVgXS4gQW4gZW1wdHkgc2NoZWR1bGUgKHNldPggZXhwbGljaXRseSBieSBnb3Zlcm5hbmNlKSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5LgBEQWJzZW5jZUdyYWNlUmF0aW8BAGEKCAAAGBUBIFRoZSBjdXJyZW50bHkgYWN0aXZlIGFic2VuY2UtZ3JhY2UgcmF0aW8gYChhbGxvd2VkX21pc3Nlcywgd2luZG93KWAsJQEgZGVyaXZlZCBmcm9tIGBBYnNlbmNlR3JhY2VTY2hlZHVsZWAgYW5kIHRoZSBjdXJyZW50IGFjdGl2ZS1wZXJzb24gY291bnQuABEBIFVwZGF0ZWQgZWFjaCB0aW1lIGB1cGRhdGVfdGhyZXNob2xkcygpYCBydW5zIChhdCB0aGUgc3RhcnQgb2YgZXZlcnkdASBhdHRlbmRhbmNlIHJlcG9ydCBzZXNzaW9uKS4gUmVhZCBieSBgc2V0X2F0dGVuZGFuY2VgIHRvIGRlY2lkZSB3aGV0aGVyjCBhIHBhcnRpY2lwYW50IHNob3VsZCBiZSBzdXNwZW5kZWQuAEhDdXJyZW50Um91bmRQb2ludHMBADgQAAAAAAS0IFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgaW4gdGhlIGN1cnJlbnQgcm91bmQuAERDdXJyZW50Um91bmRJbmRleAEAOBAAAAAAHIAgVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHJvdW5kLgBdASBUaGlzIG11c3QgYmUgdGhlIHN1bSBvZiBhbGwgcG9pbnRzIGFjY3VtdWxhdGVkIGluIGBSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudGAgZm9yIHRoZTwgY3VycmVudCByb3VuZC4AUQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgLCB1c2W0IGBmbiBhZGRfcG9pbnRzX3RvX3BhcnRpY2lwYW50YCB0byB1cGRhdGUgaXQuAGhSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudAEBCAICBQw4EAAAAAAY0CBUaGUgcG9pbnRzIGFjY3VtdWxhdGVkIGJ5IGEgcGFydGljaXBhbnQgaW4gYSByb3VuZC4AUQEgRm9yIHRoZSBjdXJyZW50IHJvdW5kLCB0aGlzIHN0b3JhZ2UgbXVzdCBiZSB1cGRhdGVkIGFsb25nc2lkZSBgQ3VycmVudFJvdW5kUG9pbnRzYC4AMQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgQ3VycmVudFJvdW5kUG9pbnRzYCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgAwUm91bmRQYXlvdXRzAAEEAjgJDAQAEKggVGhlIHJvdW5kcyB0aGF0IGFyZSBjdXJyZW50bHkgcGF5aW5nIG91dC4AEQEgUm91bmRzIGFyZSBwYXlpbmcgb3V0IGFmdGVyIHRoZXkgaGF2ZSBmaW5pc2hlZCBhY2N1bXVsYXRpbmcgcG9pbnRzLiUBIFdoZW4gYWxsIHRoZWlyIHBvaW50cyBoYXZlIGJlZW4gcGFpZCBvdXQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBzdG9yYWdlLgA0Um91bmRQbGFubmluZwAADQwEAAz8IFRoZSBwbGFubmluZyBvZiB0aGUgY3VycmVudCByb3VuZCB0aGF0IGlzIGFjY3VtdWxhdGluZyBwb2ludHMuAD0BIElmIG5vbmUgdGhlIGN1cnJlbnQgcm91bmQgaXMgb25nb2luZyBhbmQgd2lsbCBiZSBwbGFubmVkIG9uIHRoZSBuZXh0IHNjaGVkdWxlLgA4Um91bmRTY2hlZHVsZXMBABEMBAAEuCBEZXNjcmliZXMgdGhlIHNjaGVkdWxlcyBvZiB0aGUgcGF5b3V0IHJvdW5kcy4AAeUEAAH1BwAQUEN1cnJlbmN5TG9jYXRpb25JbmZvcQEwAQMAcRcEMgV2yOsLBPQgVGhlIGxvY2F0aW9uIG9mIHRoZSB1c2VkIGN1cnJlbmN5LiBJdCBpcyBpbmZvcm1hdGlvbmFsIG9ubHkuAFBPZmZjaGFpbldvcmtJbnRlcnZhbDgQAgAAAASwIFRoZSBpbnRlcnZhbCBhdCB3aGljaCBvZmZjaGFpbiB3b3JrZXIgcnVucy4AMHNjb3JlX3BvdF9pZASAbW9kbHNjb3JlcG90AAAAAAAAAAAAAAAAAAAAAAAAAAAE4CBHZXQgYSB1bmlxdWUsIGluYWNjZXNzaWJsZSBhY2NvdW50IElEIGZyb20gdGhlIGBQb3RJZGAuADRzY29yZV9jb250ZXh0CICZ8ZIOxyF6dPCmgrVxOvkVrqCZhDuraOdM1kY+XsboQghZASBUaGUgY29udGV4dCB1c2VkIGZvciB0aGUgcHJvb2ZzIHJlcXVpcmVkIHRvIGF1dGhlbnRpY2F0ZSBhcyBhIHBlcnNvbmFsIGFsaWFzIGluIHNjb3JlICBwYWxsZXQuAAEdDAAAADgAAChOZnRDcmVkaXRzAShOZnRDcmVkaXRzLFhBd2FyZGVkTmZ0Q2xhaW1DcmVkaXRzAQEIBQIFDCEMQAAAAAAAAAAAAAAAAAAAAABEXQEgV2hpY2ggY3JlZGl0cyBhIGdhbWUgaGFzIGFscmVhZHkgYXdhcmRlZCBhIGNsYWltYW50LCBrZXllZCBieSBnYW1lIGluZGV4IGFuZCBjbGFpbWFudC4VASBUaGUgdmFsdWUgbWFya3MgdGhlIHNsb3RzIG9mIFtgUGFsbGV0OjpjcmVkaXRfc2xvdGBdIHRoYXQgYXJlIHRha2VuLgBdASBCb29ra2VlcGluZyBmb3IgW2BQYWxsZXQ6OmF3YXJkX25mdF9jbGFpbV9jcmVkaXRgXSwgaXRzIG9ubHkgcmVhZGVyLCBhbmQgd2hhdCBtYWtlcyBhbi0BIGF3YXJkIGlkZW1wb3RlbnQ6IGByZXBvcnRgIGF3YXJkcyBhIGBQZXJzb25gIHZvdGUncyBjcmVkaXQgb24gdGhlIHNwb3QgYW5kYQEgYGF3YXJkX2F0dGVuZGFuY2VfY3JlZGl0c2AgbGF0ZXIgd2Fsa3MgdGhhdCBzYW1lIGNyZWRpdCwgd2hpY2ggdW5ndWFyZGVkIHdvdWxkIGdpdmUgdGhlVQEgY2xhaW1hbnQgYSBzZWNvbmQgbGVhZiwgaW4gYSBzZWNvbmQgYmxvY2sncyB0cmVlLCBhbmQgdHdvIG1pbnRzIGZyb20gb25lIGNyZWRpdC4gT2ZmZQEgY2hhaW4gaXQgaXMgbm90IG5lZWRlZCwgQXNzZXQgSHViIG1pbnRpbmcgYWdhaW5zdCBhIHJvb3QgaXQgaXMgc2VudCBhbmQgYSB3YWxsZXQgcmVhZGluZ1kBIFtgTmZ0Q2xhaW1DcmVkaXRCbG9ja3NgXSBhbmQgdGhlIGJsb2NrcycgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGAgZXZlbnRzLiBPbmUgd29yZCBwZXJpASBjbGFpbWFudCByYXRoZXIgdGhhbiBhbiBlbnRyeSBwZXIgY3JlZGl0LCBiZWNhdXNlIHRoYXQgZW50cnkgY291bnQgaXMgd2hhdCB0aGUgYmFja2ZpbGwnc1wgcHJvb2Ygc2l6ZSBpcyBtYWRlIG9mLgARASBPbmx5IHRoZSBjdXJyZW50IGdhbWUgaXMgZXZlciBpbiBoZXJlLCBlbnRyaWVzIGJlaW5nIGRyYWluZWQgYmVmb3JlYQEgYHBsYXllcl9wcm9jZXNzX3N0ZXAyYCBraWxscyB0aGUgZ2FtZSBhbmQgYG5ld19nYW1lYCByZWZ1c2luZyB0byBzdGFydCBvbmUgd2hpbGUgYSBnYW1lYQEgZXhpc3RzLiBUaGUgZ2FtZSBrZXkgc3RpbGwgZWFybnMgaXRzIHBsYWNlOiBhIHNsb3QgbWVhbnMgbm90aGluZyBvdXRzaWRlIHRoZSBnYW1lIHdob3NlWQEgZ3JvdXBzIGl0IGluZGV4ZXMsIHNvIHdlcmUgYSBkcmFpbiBsZWZ0IGhhbGYgZG9uZSwgYW4gdW5rZXllZCBlbnRyeSB3b3VsZCByZWFkIGFzIHRoZfggbmV4dCBnYW1lJ3MgYXdhcmRlZCBzbG90cyBhbmQgc2lsZW50bHkgc3dhbGxvdyB0aG9zZSBjcmVkaXRzLgBQTmZ0Q2xhaW1DcmVkaXRCbG9ja3MBAQQCCQURBQQALGEBIFRoZSB0cmVlIGJsb2NrcyBjb21taXR0aW5nIGF0IGxlYXN0IG9uZSBvZiBhIGNsYWltYW50J3MgTkZUIGNsYWltIGNyZWRpdHMsIGluIGFzY2VuZGluZ2wgb3JkZXIgYW5kIHdpdGhvdXQgcmVwZWF0cy4AcQEgRWFjaCBlbnRyeSBrZXlzIGFuIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IHdob3NlIHRyZWUgaG9sZHMgYSBsZWFmIG9mIHRoZSBjbGFpbWFudCdzLGEBIHNvIHRoaXMgYW5zd2VycyB3aGljaCByb290cyB0aGUgY2xhaW1hbnQgaGFzIHNvbWV0aGluZyB0byBtaW50IGFnYWluc3Qgd2l0aG91dCBzY2FubmluZ20BIGV2ZXJ5IGJsb2NrLiBBbiBlbnRyeSBjYW4gbmFtZSBhIGJsb2NrIHRoYXQgaXMgc3RpbGwgdG8gY29tZSwgYmVjYXVzZSBhd2FyZGluZyBzcGlsbHMgaW50b20BIGxhdGVyIGJ1ZmZlcnM7IHRoYXQgYmxvY2sgZ2V0cyBpdHMgcm9vdCwgYW5kIGl0cyBlbnRyeSBoZXJlIGJlY29tZXMgcmVzb2x2YWJsZSwgb25jZSBpdCBpcxwgYnVpbHQuAFkBIEJsb2NrcyBhcmUgYXBwZW5kZWQgYXMgY3JlZGl0cyBhcmUgYXdhcmRlZCBhbmQgbmV2ZXIgcmVtb3ZlZCBvbmNlIG1pbnRlZC4gVGhlIGxpc3QgaXMRASB0aGVyZWZvcmUgYSByaW5nIGJvdW5kZWQgYnkgW2BDb25maWc6Ok1heENyZWRpdEJsb2Nrc1BlckNsYWltYW50YF0uAFBOZnRDbGFpbUNyZWRpdEF3YXJkcwEBCAUFTQglDAQARHEBIFRoZSBORlQgY2xhaW0gY3JlZGl0cyBlYWNoIHJldGFpbmVkIHRyZWUgY29tbWl0cyB0bywgaW4gbGVhZiBvcmRlciwgd2hpY2ggYXJlIHRoZSBwcmVpbWFnZXNdASBvZiBpdHMgTWVya2xlIGxlYXZlcy4gVGhlIGZpcnN0IGtleSBpcyB0aGUgYmxvY2sgd2hvc2UgdHJlZSBob2xkcyB0aGVtLCB0aGUgc2Vjb25kIHRoZYggW2BDaHVua0luZGV4YF0gd2l0aGluIHRoYXQgYmxvY2suAGUBIEEgYmxvY2sncyBjaHVua3MgZG91YmxlIGFzIHRoZSBidWZmZXIgdGhlIG5leHQgYmxvY2sncyBgb25faW5pdGlhbGl6ZWAgY29tcHV0ZXMgdGhlIHJvb3RVASBvdmVyOiBgUGFsbGV0Ojphd2FyZF9uZnRfY2xhaW1fY3JlZGl0YCBhcHBlbmRzIHRvIHRoZSBsYXN0IG9uZSwgYW5kIG9uY2UgdGhlIHJvb3QgaXNdASByZWNvcmRlZCB0aGUgY2h1bmtzIHN0YXkgYXMgdGhleSBhcmUsIHNvIGEgY2xhaW0gY2FuIGJlIHByb3ZlbiBmcm9tIHN0YXRlIGFsb25lLiBFdmVyeQUBIGNodW5rIG9mIGEgYmxvY2sgaXMgcmVtb3ZlZCB3aGVuIGEgbmV3IHJvb3QgcHVzaGVzIGl0IG91dCBvZiB0aGUlASBbYENvbmZpZzo6TWF4UmV0YWluZWRDcmVkaXRUcmVlc2BdIHdpbmRvdywgd2hpY2ggaXMgd2hhdCBib3VuZHMgdGhlIG1hcC4AbQEgQSBibG9jayBob2xkcyBhdCBtb3N0IFtgQ0hVTktTX1BFUl9UUkVFYF0gY2h1bmtzLiBUaGUgYXdhcmRzIGFyZSBjaHVua2VkIHNvIHRoYXQgb25lIGF3YXJkaQEgcmVhZHMgb25lIGNodW5rIGluc3RlYWQgb2YgYSB3aG9sZSB0cmVlJ3MgbGVhdmVzLCB3aGljaCBrZWVwcyBhIGByZXBvcnRgJ3MgZGVjbGFyZWQgcHJvb2Z8IHNpemUgY2xvc2UgdG8gd2hhdCBpdCByZWNvcmRzLgBlASBUaGUgYXdhcmRzIGFyZSBrZXB0IHJhdGhlciB0aGFuIHRoZSBsZWF2ZXMgdGhleSBoYXNoIHRvLCBiZWNhdXNlIGEgbWludCBuZWVkcyB0aGUgY3JlZGl0UQEgaXRzZWxmOiBBc3NldCBIdWIgcmVjb21wdXRlcyB0aGUgbGVhZiBmcm9tIHRoZSBjbGFpbWFudCBhbmQgdGhlIGNyZWRpdCB0aGUgY2xhaW1hbnRRASBwcmVzZW50cywgc28gYSBsZWFmIGFsb25lIHdvdWxkIHN0aWxsIGxlYXZlIHRoZSBjcmVkaXQgdG8gYmUgcmVjb3ZlcmVkIGZyb20gZXZlbnRzLgBgUmV0YWluZWRDcmVkaXRUcmVlQmxvY2tzAQAxDAQAGF0BIFRoZSB0cmVlIGJsb2NrcyB3aG9zZSBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gYXJlIHN0aWxsIG9uIGNoYWluLCBpbiBhc2NlbmRpbmcgb3JkZXIuAGUBIEEgcmluZyBib3VuZGVkIGJ5IFtgQ29uZmlnOjpNYXhSZXRhaW5lZENyZWRpdFRyZWVzYF06IHJlY29yZGluZyBhIHJvb3QgYXBwZW5kcyBpdHMgYmxvY2tlASBhbmQsIHdoZW4gdGhhdCBmaWxscyB0aGUgcmluZywgcmVtb3ZlcyB0aGUgYXdhcmRzIG9mIHRoZSBibG9jayB0aGF0IGRyb3BzIG9mZiB0aGUgZnJvbnQuaQEgS2VlcGluZyB0aGUgbGlzdCByYXRoZXIgdGhhbiBwcnVuaW5nIGJ5IGJsb2NrIGFyaXRobWV0aWMgbWVhbnMgbm8gYmxvY2sgZXZlciBwYXlzIGZvciB0aGURASByZW1vdmFsIG9mIGFuIGVudHJ5IHRoYXQgd2FzIG5ldmVyIHRoZXJlLCB0cmVlIGJsb2NrcyBiZWluZyBzcGFyc2UuADRDcmVkaXRCdWZmZXJzAAEEBTg1DAQAKGEBIFRoZSBidWZmZXJzIHRoYXQgc3RpbGwgb3dlIGEgdHJlZSwga2V5ZWQgYnkgdGhlIGJsb2NrIHdob3NlIHRyZWUgY29tbWl0cyBlYWNoLiBBbiBlbnRyeV0BIGhvbGRzIHdoYXQgaXRzIFtgTmZ0Q2xhaW1DcmVkaXRSb290c2BdIGVudHJ5IHdpbGwgY2FycnkgYmVzaWRlcyB0aGUgcm9vdCwgYW5kIGhvdyBtYW55aCBhd2FyZHMgYXJlIGluIHRoZSBidWZmZXIuAGEBIFdyaXR0ZW4gd2hlbiBhIGJ1ZmZlcidzIGZpcnN0IGNyZWRpdCBpcyBhd2FyZGVkLCB1cGRhdGVkIGJ5IGVhY2ggb25lIGFmdGVyIGl0IGFuZCB0YWtlbm0BIG9uY2UgaXRzIHJvb3QgaXMgcmVjb3JkZWQuIEF3YXJkaW5nIGFuZCBbYFBhbGxldDo6YnVpbGRfY3JlZGl0X3RyZWVgXSByZWFkIHRoZSBhd2FyZCBjb3VudFUBIGZyb20gaGVyZSByYXRoZXIgdGhhbiBzY2FuIHRoZSBidWZmZXIncyBbYE5mdENsYWltQ3JlZGl0QXdhcmRzYF0gY2h1bmtzIGZvciBpdHMgZW5kLgBdASBBdCBtb3N0IFtgTUFYX1BFTkRJTkdfQ1JFRElUX1RSRUVTYF0gZW50cmllcywgd2hpY2ggaXMgdGhlIG9ubHkgYm91bmQgb24gdGhlIGF3YXJkcyBub0ggdHJlZSBjb21taXRzIHlldC4ASENyZWRpdEJ1ZmZlckN1cnNvcgEAOBAAAAAAGHEBIFRoZSBbYENyZWRpdEJ1ZmZlcnNgXSBlbnRyeSB0aGUgbmV4dCBhd2FyZGVkIGNyZWRpdCBnb2VzIGludG8sIG5hbWVkIGJ5IGl0cyBibG9jaywgd2hpY2ggaXOEIHRoZSBibG9jayB3aG9zZSB0cmVlIGNvbW1pdHMgaXQuAGEBIEFoZWFkIG9mIHRoZSBjdXJyZW50IGJsb2NrIHdoZW4gYXdhcmRpbmcgaGFzIHNwaWxsZWQuIEEgdmFsdWUgYXQgb3IgYmVmb3JlIHRoZSBwcmV2aW91c3UBIGJsb2NrLCB6ZXJvIGluY2x1ZGVkLCBuYW1lcyBhIGJ1ZmZlciB3aG9zZSB0cmVlIGlzIGFscmVhZHkgYnVpbHQsIHNvIGF3YXJkaW5nIHN0YXJ0cyBhIGZyZXNoaCBvbmUgYXQgdGhlIGN1cnJlbnQgYmxvY2suAExOZnRDbGFpbUNyZWRpdFJvb3RzAAEEBTj9BwQACF0BIFRoZSBNZXJrbGUgY29tbWl0bWVudCB0byB0aGUgTkZUIGNsYWltIGNyZWRpdHMgYSBibG9jayBjb21taXR0ZWQsIGtleWVkIGJ5IHRoYXQgYmxvY2suwCBBIGJsb2NrIHdob3NlIGJ1ZmZlciBoZWxkIG5vdGhpbmcgaGFzIG5vIGVudHJ5LgBcQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWUBADkMBAAcYQEgVGhlIHRyZWUgYmxvY2tzIHdob3NlIGNyZWRpdCB0cmVlcyBoYXZlIG5vdCBiZWVuIGRlbGl2ZXJlZCB0byB0aGUgTkZUIGNsYWltcyBjaGFpbiB5ZXQsPQEgaW4gYXNjZW5kaW5nIGJsb2NrIG9yZGVyLCBlYWNoIHdpdGggdGhlIHNlcXVlbmNlIG51bWJlciBpdCBpcyBkZWxpdmVyZWQgdW5kZXIuACEBIEFwcGVuZGVkIGJ5IFtgUGFsbGV0OjpidWlsZF9jcmVkaXRfdHJlZWBdIGFuZCBkcmFpbmVkIGZyb20gdGhlIGZyb250IGJ5UQEgW2BQYWxsZXQ6OnNlbmRfY3JlZGl0X3RyZWVzYF0gb25jZSB0aGUgWENNIGNhcnJ5aW5nIHRoZSB0cmVlcyBoYXMgYmVlbiBhY2NlcHRlZCBmb3JdASBkZWxpdmVyeS4gVGhlIHRyZWVzIHRoZW1zZWx2ZXMgc3RheSBpbiBbYE5mdENsYWltQ3JlZGl0Um9vdHNgXTsgdGhpcyBvbmx5IHJlY29yZHMgd2hhdFwgc3RpbGwgb3dlcyBhIGRlbGl2ZXJ5LgA4TGFzdFJlcGxheVRpbWUAACgEABDUIFRoZSB0aW1lIG9mIHRoZSBsYXN0IGNyZWRpdCB0cmVlIHJlcGxheSwgaW4gc2Vjb25kcy4A8CBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdIHJlZnVzZXMgdG8gcnVuIGFnYWluIHdpdGhpbqQgW2BDb25maWc6OlJlcGxheUNvb2xkb3duU2Vjb25kc2BdIG9mIGl0LgAwUm9vdEV4cGlyaWVzAAEIBgVFDBAEABxtASBFdmVyeSB0cmVlIGJsb2NrIHdob3NlIHJvb3QgaXMgc3RpbGwgcmVjb3JkZWQsIGZpbGVkIHVuZGVyIHRoZSB0aW1lc3RhbXAgdGhhdCByb290IGNvbW1pdHMQIHRvLgBdASBUaGUga2V5IGlzIGhhc2hlZCB3aXRoIGBJZGVudGl0eWAgYW5kIGVuY29kZWQgYmlnLWVuZGlhbiwgc28gdGhlIG1hcCBpdGVyYXRlcyBmcm9tIHRoZWUBIG9sZGVzdCBkZWFkbGluZSB0byB0aGUgbmV3ZXN0LCB3aGljaCBbYE5mdENsYWltQ3JlZGl0Um9vdHNgXSBkb2VzIG5vdC4gQSBzd2VlcCB0YWtlcyB0aGVpASByb290cyB0aGF0IGFyZSBkdWUgYW5kIHN0b3BzIGF0IHRoZSBmaXJzdCB0aGF0IGlzIG5vdC4gQm90aCByZW1vdmFsIHBhdGhzIHJlbW92ZSBhIHJvb3Qnc1QgZW50cnkgd2l0aCB0aGUgcm9vdC4AWE5leHRDcmVkaXRUcmVlU2VxdWVuY2UBACggAAAAAAAAAAAUEQEgVGhlIHNlcXVlbmNlIG51bWJlciB0aGUgbmV4dCBxdWV1ZWQgY3JlZGl0IHRyZWUgaXMgZGVsaXZlcmVkIHVuZGVyLgBxASBPbmx5IGEgdHJlZSB0aGF0IG1hZGUgaXQgaW50byBbYENyZWRpdFRyZWVEZWxpdmVyeVF1ZXVlYF0gY29uc3VtZXMgb25lLCBzbyB0aGUgc2VxdWVuY2UgdGhlYQEgY2xhaW1zIGNoYWluIHNlZXMgc3RheXMgY29udGlndW91cyBldmVuIHdoZW4gdGhlIHF1ZXVlIG92ZXJmbG93cy4gQSBnYXAgdGhlcmUgdGhlcmVmb3Jl3CBtZWFucyBhIG1lc3NhZ2Ugd2FzIGxvc3QsIG5ldmVyIHRoYXQgb25lIHdhcyBub3Qgc2VudC4AAQ0FAAH5BwAsPE5mdENsYWltc1BhcmFJZJwQ3AUAAAxZASBUaGUgcGFyYWNoYWluIHRoZSBjcmVkaXQgdHJlZXMgYXJlIGRlbGl2ZXJlZCB0bywgd2hpY2ggbWludHMgdGhlIE5GVHMgY2xhaW1lZCBhZ2FpbnN0XQEgdGhlbS4gVGhlcmUgaXMgZXhhY3RseSBvbmUsIHNvIHRoZSBydW50aW1lIGZpeGVzIGl0IHJhdGhlciB0aGFuIGdvdmVybmFuY2UgcmVnaXN0ZXJpbmcQIGl0LgBQTmZ0Q2xhaW1zUGFsbGV0SW5kZXgMBGAIQQEgUGFsbGV0IGluZGV4IG9mIGluZGl2LXBhbGxldC1uZnQtY2xhaW1zIG9uIFtgQ29uZmlnOjpOZnRDbGFpbXNQYXJhSWRgXSwgdXNlZCB0b9wgZW5jb2RlIHRoZSBgVHJhbnNhY3RgIGNhbGwgdGhlIHRyZWVzIGFyZSBkZWxpdmVyZWQgaW4uAFBNYXhRdWV1ZWRDcmVkaXRUcmVlczgQAAEAABwFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgY3JlZGl0IHRyZWVzIHRoYXQgY2FuIHdhaXQgZm9yIGRlbGl2ZXJ5IGlubCBgQ3JlZGl0VHJlZURlbGl2ZXJ5UXVldWVgLgBhASBPbmUgYmxvY2sgYnVpbGRzIGF0IG1vc3Qgb25lIHRyZWUgYW5kIHRoZSBvZmZjaGFpbiB3b3JrZXIgZHJhaW5zIHRoZSBxdWV1ZSBldmVyeSBibG9jayxhASBzbyB0aGlzIG9ubHkgaGFzIHRvIGNvdmVyIGFuIG91dGFnZS4gQSB0cmVlIHRoYXQgZG9lcyBub3QgZml0IGlzIG5ldmVyIHF1ZXVlZCBhbmQgbmVlZHPYIFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0sIHNvIHNpemUgaXQgd2VsbCBwYXN0mCBbYENvbmZpZzo6TWF4Q3JlZGl0VHJlZXNQZXJNZXNzYWdlYF0uAGBNYXhDcmVkaXRUcmVlc1Blck1lc3NhZ2U4ECAAAAAQ/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY3JlZGl0IHRyZWVzIGNhcnJpZWQgYnkgb25lIFhDTSBtZXNzYWdlLgBVASBUaGUgbmZ0LWNsYWltcyBwYWxsZXQncyBvd24gYm91bmQgbXVzdCBiZSBhdCBsZWFzdCB0aGlzIGxhcmdlLCBvdGhlcndpc2UgdGhlIGJhdGNoZXP4IHNlbnQgdG8gaXQgZmFpbCB0byBkZWNvZGUgYW5kIHRoZSB0cmVlcyBpbiB0aGVtIG5ldmVyIGFycml2ZS4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAQzCBDb29sZG93biwgaW4gc2Vjb25kcywgYmV0d2VlbiBjcmVkaXQgdHJlZSByZXBsYXlzLgBNASBbYFBhbGxldDo6cmVwbGF5X2NyZWRpdF90cmVlc2BdIGlzIHBlcm1pc3Npb25sZXNzLCBzbyB0aGlzIGlzIHdoYXQgYm91bmRzIHRoZSBYQ01QWCB0cmFmZmljIGl0IGNhbiBjYXVzZS4AVE5mdENsYWltc1JlbW90ZVdlaWdodHkCGAJGwyOhKCAJASBQZXItdHJlZSB3ZWlnaHQgc3VyY2hhcmdlIGZvciBleGVjdXRpbmcgYHJlY2VpdmVfY3JlZGl0X3RyZWVzYCBvbtggW2BDb25maWc6Ok5mdENsYWltc1BhcmFJZGBdLCBjaGFyZ2VkIHRvIHRoZSBjYWxsZXIgb2aEIFtgUGFsbGV0OjpyZXBsYXlfY3JlZGl0X3RyZWVzYF0uAF0BIFRoaXMgcHJpY2VzIHRoZSByZW1vdGUgd29yayBhIHJlcGxheSBjYXVzZXM7IFtgQ29uZmlnOjpSZXBsYXlDb29sZG93blNlY29uZHNgXSBpcyB3aGF0JQEgYm91bmRzIGhvdyBvZnRlbiBvbmUgY2FuIGhhcHBlbi4gU2V0IGl0IHRvIGF0IGxlYXN0IHRoZSBwZXItdHJlZSBjb3N0IG9mPQEgYHJlY2VpdmVfY3JlZGl0X3RyZWVzYCBpbiB0aGUgY2xhaW1zIGNoYWluJ3Mgb3duIGdlbmVyYXRlZCB3ZWlnaHRzLCBwcm9vZiBzaXplKCBpbmNsdWRlZC4AWE1heFJldGFpbmVkQ3JlZGl0VHJlZXM4EAABAABEXQEgVGhlIG51bWJlciBvZiBtb3N0IHJlY2VudGx5IGNvbW1pdHRlZCBjcmVkaXQgdHJlZXMgd2hvc2UgW2BOZnRDbGFpbUNyZWRpdEF3YXJkc2BdIHN0YXkoIG9uIGNoYWluLgAxASBUaGlzIGlzIHRoZSB3aW5kb3cgaW4gd2hpY2ggYSBjbGFpbSBjYW4gYmUgcHJvdmVuIGZyb20gc3RhdGUgYWxvbmUsIHRocm91Z2hFASBbYFBhbGxldDo6bmZ0X2NsYWltX2NyZWRpdF9wcm9vZnNgXS4gT25jZSBhIHRyZWUgZHJvcHMgb3V0IG9mIGl0LCBpdHMgYXdhcmRzIGFyZVUBIHJlbW92ZWQgYW5kIGEgcHJvb2YgaGFzIHRvIGJlIHJlYnVpbHQgZnJvbSB0aGUgYE5mdENsYWltQ3JlZGl0QXdhcmRlZGAgZXZlbnRzIG5hbWluZ2EBIGl0cyBibG9jayBhbmQgcGFzc2VkIHRvIFtgUGFsbGV0OjpuZnRfY2xhaW1fY3JlZGl0X3Byb29mX2Zyb21fYXdhcmRzYF0uIFRoZSByb290IGl0c2VsZlkBIGlzIGtlcHQgZm9yIGdvb2QsIHNvIGRyb3BwaW5nIG91dCBkZWxheXMgbm8gbWludCB0aGF0IGEgY2xhaW1hbnQsIG9yIGFuIGluZGV4ZXIsIGtlcHQ8IHRoZSBhd2FyZHMgb2YuAE0BIEl0IGNvdW50cyB0cmVlcywgbm90IGJsb2NrcywgYmVjYXVzZSBvbmx5IGEgYmxvY2sgdGhhdCBjb21taXR0ZWQgb25lIGhhcyBhbiBlbnRyeS5NASBTaXplZCBhZ2FpbnN0IGhvdyBsb25nIGEgY2xhaW1hbnQgbWF5IHRha2UgdG8gbWludCwgYW5kIHBhaWQgZm9yIGluIHN0YXRlOiB0aGUgbWFwCQEgaG9sZHMgYXQgbW9zdCB0aGlzIG1hbnkgdHJlZXMgb2YgW2BBV0FSRFNfUEVSX1RSRUVgXSBhd2FyZHMgZWFjaC4AWQEgUmFpc2luZyB0aGUgYm91bmQgaW4gYSBydW50aW1lIHVwZ3JhZGUgaXMgc2FmZS4gTG93ZXJpbmcgaXQgb3JwaGFucyB0aGUgYXdhcmRzIG9mIHRoZVEBIGJsb2NrcyBiZXlvbmQgdGhlIG5ldyBib3VuZCwgc2luY2UgYFJldGFpbmVkQ3JlZGl0VHJlZUJsb2Nrc2Agbm8gbG9uZ2VyIGRlY29kZXMgYW5kGQEgdGhlIHJpbmcgaXMgd2hhdCBuYW1lcyB0aGUgZW50cmllcyB0byByZW1vdmUsIHNvIGNsZWFyIHRoZSBtYXAgZmlyc3QuAGhNYXhDcmVkaXRCbG9ja3NQZXJDbGFpbWFudDgQIAAAACA9ASBUaGUgbWF4aW11bSBudW1iZXIgb2YgdHJlZSBibG9ja3MgW2BOZnRDbGFpbUNyZWRpdEJsb2Nrc2BdIGtlZXBzIHBlciBjbGFpbWFudC4AVQEgVGhlIGluZGV4IGlzIGEgbG9va3VwIGFpZCwgbm90IHRoZSByZWNvcmQgb2Ygd2hhdCBhIGNsYWltYW50IGlzIG93ZWQsIHNvIGEgZnVsbCBsaXN0QQEgZHJvcHMgaXRzIG9sZGVzdCBibG9jayByYXRoZXIgdGhhbiByZWplY3RpbmcgYW4gYXdhcmQuIFNpemUgaXQgcGFzdCB0aGUgdHJlZXMgYV0BIGNsYWltYW50J3MgY3JlZGl0cyBjYW4gbGFuZCBpbiBvdmVyIHRoZSBnYW1lcyBzdGlsbCB3b3J0aCBtaW50aW5nIGFnYWluc3QsIGFuZCBhY2NvdW508CBmb3IgdGhlIHByb29mIHNpemU6IGEgcmVhZCBpcyBjaGFyZ2VkIGF0IHRoZSBsaXN0J3MgbWF4aW11bVEBIGVuY29kZWQgbGVuZ3RoLCBvbmUgYmxvY2sgbnVtYmVyIHBlciBlbnRyeSwgb25jZSBwZXIgZGlzdGluY3QgY2xhaW1hbnQgYW4gZXh0cmluc2ljLCBhd2FyZHMgdG8uAGhNYXhUcmVlRGVsZXRpb25zUGVyTWVzc2FnZTgQQAAAABQRASBUaGUgbWF4aW11bSBudW1iZXIgb2YgdHJlZSBibG9ja3MgYWNjZXB0ZWQgaW4gb25lIGRlbGV0aW9uIG1lc3NhZ2UuAGUBIFNldCB0aGlzIGF0IGxlYXN0IGFzIGhpZ2ggYXMgdGhlIGNsYWltcyBwYWxsZXQncyBgTWF4VHJlZURlbGV0aW9uc1Blck1lc3NhZ2VgLiBBIG1lc3NhZ2VVASBhYm92ZSB0aGUgYm91bmQgZmFpbHMgdG8gZGVjb2RlLCBhbmQgW2BQYWxsZXQ6OnJvb3RfdHRsYF0gdGhlbiByZW1vdmVzIHRoZSByb290cyBpdHNEIGRlbGV0aW9ucyBuYW1lZC4ASENsYWltc0NoYWluVHJlZVR0bCggAKd2AAAAAAAYSQEgVGhlIGNsYWltcyBjaGFpbidzIFRUTCBmb3IgdGhlIHRyZWVzIHRoaXMgY2hhaW4gc2VuZHMgaXQsIHdoaWNoIGlzIHRoZSBkZWFkbGluZSBhVCBjbGFpbWFudCBpcyBoZWxkIHRvLgBlASBUaGlzIGR1cGxpY2F0ZXMgYSBjb25zdGFudCBvZiBhbm90aGVyIHJ1bnRpbWUsIGFzIFtgQ29uZmlnOjpOZnRDbGFpbXNQYWxsZXRJbmRleGBdIGRvZXMuRQEgW2BQYWxsZXQ6OnJvb3RfdHRsYF0gZGVyaXZlcyBmcm9tIGl0LCBzbyBrZWVwIGl0IGluIHN0ZXAgd2l0aCB0aGUgY2xhaW1zIGNoYWluJ3MsIGBUcmVlVHRsYC4AQE1heFJvb3RzUGVyU3dlZXA4EEAAAAAQFQEgTWF4aW11bSBudW1iZXIgb2Ygcm9vdHMgb25lIFtgUGFsbGV0Ojpzd2VlcF9leHBpcmVkX3Jvb3RzYF0gcmVtb3Zlcy4AWQEgVGhpcyBib3VuZHMgdGhlIGNhbGwncyB3ZWlnaHQgYWdhaW5zdCB0aGUgYmxvY2suIFRoZSBvZmZjaGFpbiB3b3JrZXIgc3VibWl0cyBvbmUgY2FsbIAgcGVyIGJsb2NrIHVudGlsIG5vdGhpbmcgaXMgZHVlLgABTQwAAAA5AAAgRHVtbXlEaW0BIER1bW15RGltCCxSZXNlcnZlZElkcwABBAIoEAQABNwgVGhlIHBlcnNvbmFsIElEcyB0aGF0IGFyZSByZXNlcnZlZCBieSB1bnByb3ZlbiBwZW9wbGUuABhQZW9wbGUAAQQFKFEMBAAEuCBUaGUgcGVvcGxlIHdlIHRyYWNrIGFsb25nIHdpdGggdGhlaXIgcmVjb3Jkcy4AARkFAAEFCAAAAVUMAAAAOwAAKFBlb3BsZUxpdGUBKFBlb3BsZUxpdGUUKExpdGVQZW9wbGUAAQQCBFkMBAAAADhBbGlhc1RvQWNjb3VudAABBALpAwQEAATgIENvbnZlcnNpb24gb2YgYSBsaXRlIGNvbnRleHR1YWwgYWxpYXMgdG8gYW4gYWNjb3VudCBJRC4AOEFjY291bnRUb0FsaWFzAAEEAgTlAwQABOAgQ29udmVyc2lvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzLgBsTGl0ZVBlb3BsZUNvbGxlY3Rpb25DcmVhdGVkAQBZAQQABPAgV2hldGhlciB0aGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEKQEgTnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhdmFpbGFibGUgdG8gZGlzdHJpYnV0ZSBmb3IgYSB2ZXJpZmllciBhY2NvdW50IGlkLgABMQUAAQkIABgUUG90SWTFCSBwbGl0ZWZlZQQ9ASBBY2NvdW50IGlkZW50aWZpZXIgdXNlZCB0byBkZXJpdmUgdGhlIGFjY291bnQgdGhhdCByZWNlaXZlcyByZWdpc3RyYXRpb24gZmVlcy4AQExpdGVSaW5nRXhwb25lbnRVBQQJBMwgUmluZyBleHBvbmVudCB1c2VkIGZvciB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4ASExpdGVPbmJvYXJkaW5nU2l6ZTgQAwAAAAT8IE9uYm9hcmRpbmcgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGxpdGUgcGVvcGxlIGNvbGxlY3Rpb24uAEhsaXRlX3Blb3BsZV9wb3RfaWQEgG1vZGxwbGl0ZWZlZQAAAAAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBhY2NvdW50IHRoYXQgcmVjZWl2ZXMgbm9uLXJlZnVuZGFibGUgbGl0ZS1wZXJzb24gcmVnaXN0cmF0aW9uIGZlZXMuADBhdXRoX2NvbnRleHQIgCXICnwvrfBrTr4bub8HjfsHOqDfLrUWMxRiSY3iXWMRBLggVGhlIGNvbnRleHQgdXNlZCB0byBhdXRoZW50aWNhdGUgbGl0ZSBwZW9wbGUuAHRhY2NvdW50X3NldHVwX2Jsb2NrX3RvbGVyYW5jZTgQWAIAAAQtASBUaGUgbnVtYmVyIG9mIGJsb2NrcyBvZiB0b2xlcmFuY2Ugd2UgYWxsb3cgZm9yIGFuIGFsaWFzIHNldHVwIHRyYW5zYWN0aW9uLgABYQwABFBBdHRlc3RhdGlvblNpZ25hdHVyZXkECGEBIFNpZ25hdHVyZSBnZW5lcmF0ZWQgYnkgbGl0ZSBwZW9wbGUgYW5kIHVzZWQgYnkgdmVyaWZpZXJzIHRvIGNsYWltIGF0dGVzdGF0aW9ucyBvbiB0aGVpciAgYmVoYWxmLgA+AAAkUmVzb3VyY2VzASRSZXNvdXJjZXMsJENvbnN1bWVycwABBAIEZQwEAAQpASBBY2NvdW50cyB1c2VkIHRvIGlkZW50aWZ5IGNvbnN1bWVycyBtYXBwZWQgdG8gdGhlaXIgY29uc3VtZXIgaW5mb3JtYXRpb24uAGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXMAAQgGAm0McQwEABRxASBBY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCB0aHJvdWdoIGFuIGFub255bW91cyBhbGxvd2FuY2UsIHBlciBwZXJpb2QuAGEBIFRoZSBwZXJpb2Qga2V5IGlzIGEgYmlnLWVuZGlhbiBlbmNvZGVkIGRheSBudW1iZXIgKHNlY29uZHMgc2luY2UgVW5peCBlcG9jaCAvIDg2NDAwKSBzb3EBIHRoYXQgYElkZW50aXR5YC1oYXNoZWQgaXRlcmF0aW9uIHlpZWxkcyBlbnRyaWVzIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgdG8gYmUgcmVtb3ZlZCBieSB0aGVEIG9mZmNoYWluIHdvcmtlci4AbFN0bXRTdG9yZUFsbG93YW5jZUJ5QWNjb3VudAABCAICdQwQBAAUQQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhIHN0YXRlbWVudCBhY2NvdW50IHRvIGFsbCBpdHMgYWN0aXZlIGFub255bW91cyBhbGxvd2FuY2VzLgBFASBLZXllZCBieSBgKEFjY291bnRJZCwgKEJpZ0VuZGlhblUzMiBwZXJpb2QsIHUzMiBzZXEsIEFsaWFzKSlgIOKGkiBgKClgLiBNdWx0aXBsZUkBIGVudHJpZXMgcGVyIGFjY291bnQgYXJlIHBvc3NpYmxlIHdoZW4gdGhlIHNhbWUgc3RhdGVtZW50IGFjY291bnQgaXMgYXV0aG9yaXplZCBiecwgZGlmZmVyZW50IGFsaWFzZXMgb3IgYWNyb3NzIGdyYWNlLXdpbmRvdyBvdmVybGFwcy4AfE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbkJ5QWxpYXMAAQQCCH0MBAAE4CBOb3RpZmljYXRpb24gYWxsb3dhbmNlIHJlZ2lzdHJhdGlvbiBieSBhbm9ueW1vdXMgYWxpYXMuAGhOb3RpZmljYXRpb25BbGlhc0J5QWNjb3VudAABBAIECAQABB0BIFJldmVyc2UgbG9va3VwIGZyb20gbm90aWZpY2F0aW9uIHN0YXRlbWVudCBhY2NvdW50IHRvIGFub255bW91cyBhbGlhcy4AbFNwZW50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlcwABCAYCbQwQBAAgSQEgQWxpYXNlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gbG9uZy10ZXJtIHN0b3JhZ2UgaW4gYSBnaXZlbiBwZXJpb2QuAFkBIEtleWVkIGJ5IGAocGVyaW9kLCBhbGlhcylgLiBFYWNoIGNvdW50ZXIgdmFsdWUgaW4gdGhlIHByb29mIGNvbnRleHQgcHJvZHVjZXMgYSB1bmlxdWVdASBhbGlhcywgc28gYSBwZXJzb24gY2FuIGhhdmUgdXAgdG8gYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgZW50cmllcyBwZXIgcGVyaW9kLjUBIE9sZCBwZXJpb2RzIGNhbiBiZSBjbGVhbmVkIHVwIHZpYSBgY2xlYXJfZXhwaXJlZF9sb25nX3Rlcm1fc3RvcmFnZV9hbGlhc2VzYC4AQQEgVGhlIHBlcmlvZCBrZXkgaXMgYEJpZ0VuZGlhblUzMmAgd2l0aCBgSWRlbnRpdHlgIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZW50cmllcyBpbuggY2hyb25vbG9naWNhbCBvcmRlciwgbWF0Y2hpbmcgYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AuADxVc2VybmFtZU93bmVyT2YAAQQCPQUEBAAYcQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBgdXNlcm5hbWVgIHRvIHRoZSBgQWNjb3VudElkYCB0aGF0IGhhcyByZWdpc3RlcmVkIGl0LiBUaGUgYG93bmVyYCB2YWx1ZWUBIHNob3VsZCBiZSBhIGtleSBpbiB0aGUgYENvbnN1bWVyc2AgbWFwLiBUaGVyZSBjYW4gYmUgYXQgbW9zdCAyIHVzZXJuYW1lcyBwb2ludGluZyB0byB0aGU4IHNhbWUgYG93bmVyYDpxASAtIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnN1bWVyJ3MgbGl0ZSBwZXJzb24gaWRlbnRpdHkgLSB0aGlzIHdpbGwgYWx3YXlzIGJlIHByZXNlbnQ7WQEgLSBvcHRpb25hbGx5IGFub3RoZXIgdXNlcm5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25zdW1lcidzIGZ1bGwgcGVyc29uIGlkZW50aXR5LCBpZjggICBhcHBsaWNhYmxlLgA4QWNjb3VudE9mQWxpYXMAAQQCCAQEAARpASBSZXZlcnNlIGxvb2t1cCBmcm9tIHJlZ2lzdGVyZWQgYWxpYXNlcyB0byB0aGUgYEFjY291bnRJZGAgdXNlZCB0byByZWdpc3RlciBhcyBhIGNvbnN1bWVyLgBsVXNlcm5hbWVSZXNlcnZhdGlvbkR1cmF0aW9uAQAoIAAAAAAAAAAACFUBIFRoZSBhbW91bnQgb2YgdGltZSBmb3Igd2hpY2ggYSB1c2VybmFtZSByZXNlcnZhdGlvbiBpcyB2YWxpZCwgaW4gc2Vjb25kcy4gQWZ0ZXIgdGhpc9AgdGltZSBwZXJpb2QgZWxhcHNlcywgdGhlIHJlc2VydmF0aW9uIGNhbiBiZSB2b2lkZWQuAGBVc2VybmFtZVJlc2VydmF0aW9uUXVldWUAAQQCPQWBDAQACHEBIE1hcCBmcm9tIGEgcmVzZXJ2ZWQgYHVzZXJuYW1lYCB0byBhIHF1ZXVlIG9mIGBSZXNlcnZhdGlvblF1ZXVlRW50cnlgIGl0ZW1zLCBlYWNoIGhvbGRpbmcgYW5hASBhY2NvdW50IGFuZCB0aGUgdGltZXN0YW1wIHdoZW4gaXQgam9pbmVkLiBPbGQgcmVzZXJ2YXRpb25zIGNhbiBiZSByZW1vdmVkIGZyb20gc3RvcmFnZS4ANFJlc2VydmF0aW9uT2YAAQQCBD0FBAAIZQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiBhY2NvdW50IHRvIHRoZSB1c2VybmFtZSBpdCBoYXMgcmVzZXJ2ZWQuIEVhY2ggYWNjb3VudCBjYW4gaGF2ZSBhdJwgbW9zdCBvbmUgYWN0aXZlIHJlc2VydmF0aW9uIGF0IGEgdGltZS4AAUUFAAENCAAoRE1pblVzZXJuYW1lTGVuZ3RoOBAGAAAABIggVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUuAEhQZXJzb25BdXRoRHVyYXRpb244EACjAgAMVQEgVGhlIGR1cmF0aW9uIG9mIHRpbWUsIGluIHNlY29uZHMsIGZvciB3aGljaCBhIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaXMgdmFsaWQuIEFmdGVyUQEgdGhpcyBwZXJpb2QgZWxhcHNlcywgcGVvcGxlIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbnNpZGVyZWQgYWN0aXZlLCBidXQgdGhlaXIgcmVzb3VyY2UNASBhbGxvd2FuY2VzIHNob3VsZCBkZWZhdWx0IHRvIHRoZSBzYW1lIHZhbHVlcyB1c2VkIGZvciBsaXRlIHBlb3BsZS4AbE1pblBlcnNvbkF1dGhVcGRhdGVJbnRlcnZhbDgQgFEBAAhVASBUaGUgbWluaW11bSBpbnRlcnZhbCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB3aGljaCBtdXN0IHBhc3MgYmVmb3JlIHVwZGF0aW5nIGEgcGVyc29uJ3M8IGF1dGhvcml6YXRpb24uAGRNYXhSZXNlcnZhdGlvblF1ZXVlTGVuZ3RoOBAKAAAABCkBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgY2FuIHF1ZXVlIGZvciBhIHNpbmdsZSByZXNlcnZlZCB1c2VybmFtZS4AUEFjY291bnRzQXBpQWxsb3dhbmNljQwgAgAAAADQBwAM0CBUaGUgU3RhdGVtZW50IFN0b3JlIGFsbG93YW5jZSBmb3IgdGhlIGFjY291bnRzIEFQSS4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBUTm90aWZpY2F0aW9uQWxsb3dhbmNljQwgAQAAAAAoAAAMHQEgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIG5vdGlmaWNhdGlvbiBzdGF0ZW1lbnQgcmVnaXN0cmF0aW9uLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAGhOb3RpZmljYXRpb25QZXJpb2REdXJhdGlvbjgQgFEBACwFASBSb2xsaW5nIHRpbWUgd2luZG93IGZvciByYXRlLWxpbWl0aW5nIG5vdGlmaWNhdGlvbnMsIGluIHNlY29uZHMuADUBIFRpbWUgaXMgZGl2aWRlZCBpbnRvIGZpeGVkLWR1cmF0aW9uIHBlcmlvZHMuIFRoZSBwZXJpb2QgaW5kZXggaXMgY29tcHV0ZWQgYXOkIGBub3dfc2VjcyAvIE5vdGlmaWNhdGlvblBlcmlvZER1cmF0aW9uYC4AYQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDg2XzQwMGAgKDI0IGhvdXJzKSwgcGVyaW9kIGAwYCBpcyB0aGUgZmlyc3QgMjQgaG91cnMgc2luY2UgdGhlGQEgVW5peCBlcG9jaCwgcGVyaW9kIGAxYCBpcyB0aGUgbmV4dCAyNCBob3VycywgYW5kIHNvIG9uLiBDb21iaW5lZCB3aXRoWQEgYE5vdGlmaWNhdGlvblNsb3RzUGVyUGVyaW9kYCwgdGhpcyBkZWZpbmVzIGhvdyBtYW55IG5vdGlmaWNhdGlvbnMgY2FuIGJlIHNlbnQgaW4gZWFjaCAgcGVyaW9kLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABOwgTnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluLXdvcmtlciBtYWludGVuYW5jZSBydW5zLgB0TG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb244EAB1EgAcBQEgVGhlIGR1cmF0aW9uIG9mIGEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1pbmcgcGVyaW9kLCBpbiBzZWNvbmRzLgA1ASBUaW1lIGlzIGRpdmlkZWQgaW50byBmaXhlZC1kdXJhdGlvbiBwZXJpb2RzLiBUaGUgcGVyaW9kIGluZGV4IGlzIGNvbXB1dGVkIGFzJQEgYG5vd19zZWNzIC8gTG9uZ1Rlcm1TdG9yYWdlUGVyaW9kRHVyYXRpb25gLiBFYWNoIHBlcnNvbiBjYW4gc3VibWl0IHVwIHRv0CBgTG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYCBjbGFpbXMgcGVyIHBlcmlvZC4AKQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIG1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlLgBoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3c4EBAOAAAcUQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBsb25nLXRlcm0gc3RvcmFnZSBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAF0BIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgbG9uZy10ZXJtIHN0b3JhZ2UgcGVyaW9kIGlzIGFjY2VwdGVkSCBhZnRlciBhIHJvbGxvdmVyLgApASBDaGFuZ2luZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgbWlncmF0aW9uIHRoYXQgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUuAAGRDAAERE9mZmNoYWluU2lnbmF0dXJleQQIUQEgU2lnbmF0dXJlIHR5cGUgZm9yIGVuc3VyaW5nIG93bmVyc2hpcCBvZiBwcm92aWRlZCBhY2NvdW50cyBpbiBjYXNlIG9mIHJlZ2lzdHJhdGlvbnM8IHRocm91Z2ggYWxpYXMuMCER4N8Z3pVjtYMB5ffgB0M3LT6mizpKqhipWKis1xpDZGN1cnJlbnRfc3RtdF9zdG9yZV9wZXJpb2QAOARRASBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgcGVyaW9kIChkYXkgbnVtYmVyIHNpbmNlIFVuaXggZXBvY2gpLgAhEeDfGd6VY7WDAeX34AdDrMglyENevZ01vA216nYOlmxzdG10X3N0b3JlX3Nsb3RfY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxOAgQIQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBzdGF0ZW1lbnQgc3RvcmUgc2xvdCBjbGFpbSBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4A8CBVc2VzIHRoZSBwcm9kdWN0LW93bmVkIHN0YXRlbWVudC1zdG9yZSBzbG90IGNvbnRleHQgZmFtaWx5LgAhEeDfGd6VY7WDAeX34AdD71oNKoXO/UnFSf3n0TezMWBub3RpZmljYXRpb25fY29udGV4dF9mb3IIGHBlcmlvZDgMc2VxDAgIHQEgUmV0dXJucyB0aGUgcHJvb2YgY29udGV4dCBmb3IgYSBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGF0IHRoZSBnaXZlblAgYHBlcmlvZGAgYW5kIGBzZXFgLgAhEeDfGd6VY7WDAeX34AdDcuNmXSzDUmPSIvbMkLZeqnxnZXRfc3RtdF9zdG9yZV9zbG90c19wZXJfcGVyaW9kADgECQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQwSdGuAKtxSjOciLlVoW2YmQZ2V0X2xpdGVfc3RtdF9zdG9yZV9zbG90c19wZXJfcGVyaW9kADgEGQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TGl0ZVN0bXRTdG9yZVNsb3RzUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0O+Utvk8B1deZhdvH/YIBr2cGdldF9zdG10X3N0b3JlX2NsZWFudXBfbGltaXQAOAQBASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpTdG10U3RvcmVDbGVhbnVwTGltaXRgXS4AIRHg3xnelWO1gwHl9+AHQ9pQIiXeq8yoXC/6OqdmmN6MZ2V0X3N0bXRfc3RvcmVfcmVwbGFjZW1lbnRfY29vbGRvd24AOAQdASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpTdG10U3RvcmVSZXBsYWNlbWVudENvb2xkb3duYF0uACER4N8Z3pVjtYMB5ffgB0Ma0JpzMFOea26fPxnoz4s8bGdldF9zdG10X3N0b3JlX2dyYWNlX3dpbmRvdwA4BPwgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6U3RtdFN0b3JlR3JhY2VXaW5kb3dgXS4AIRHg3xnelWO1gwHl9+AHQ5BCjQm+G620gTLXL8kZyXqEZ2V0X25vdGlmaWNhdGlvbl9zbG90c19wZXJfcGVyaW9kAAwEFQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6Tm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQy+ls8ntORtxlIZbMqJil9WYZ2V0X2xpdGVfbm90aWZpY2F0aW9uX3Nsb3RzX3Blcl9wZXJpb2QADAQlASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpMaXRlTm90aWZpY2F0aW9uU2xvdHNQZXJQZXJpb2RgXS4AIRHg3xnelWO1gwHl9+AHQ7xlY1EgOFReMhGcwyiJijOcZ2V0X2xvbmdfdGVybV9zdG9yYWdlX2NsYWltc19wZXJfcGVyaW9kAAwEJQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TG9uZ1Rlcm1TdG9yYWdlQ2xhaW1zUGVyUGVyaW9kYF0uACER4N8Z3pVjtYMB5ffgB0M3EithNcUoLBQIFMa4f1wRjGdldF9sb25nX3Rlcm1fc3RvcmFnZV9jbGVhbnVwX2xpbWl0ADgEGQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6TG9uZ1Rlcm1TdG9yYWdlQ2xlYW51cExpbWl0YF0uAD8AADRDaHVua3NNYW5hZ2VyATRDaHVua3NNYW5hZ2VyCBhDaHVua3MAAQgFBZUMmQwEAAQZASBQYWdpbmF0ZWQgY29sbGVjdGlvbiBvZiBjaHVua3MgKFJpbmdFeHBvbmVudCAtPiBQYWdlSW5kZXggLT4gQ2h1bmtzKS4APENodW5rUGFnZUhhc2hlcwABCAUFlQwIBAAEiCBUaGUgaGFzaCBmb3IgZWFjaCBwYWdlIG9mIGNodW5rcy4AAVEFAAERCAAEIFBhZ2VTaXplOBD/AAAABMwgTnVtYmVyIG9mIGNodW5rcyBwZXIgcGFnZS4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by4AAakMAAQUQ2h1bmuhDARwIFRoZSB0eXBlIG9mIGEgc2luZ2xlIGNodW5rLgBAAAAcTWVtYmVycwEcTWVtYmVyc0QsQ29sbGVjdGlvbnMAAQQGCK0MBAAE4CBJbmZvcm1hdGlvbiBhYm91dCBlYWNoIGNvbGxlY3Rpb24sIGtleWVkIGJ5IGlkZW50aWZpZXIuAFBTdXNwZW5kZWRDb2xsZWN0aW9ucwABBAYIrQwEAAghASBDb2xsZWN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBhcmUgYmVpbmcgcHJvY2Vzc2VkLlkBIE9uY2UgYSBjb2xsZWN0aW9uIGlzIG1vdmVkIGhlcmUsIG5vcm1hbCBvcGVyYXRpb25zIHdpbGwgZmFpbCB3aXRoIENvbGxlY3Rpb25Ob3RGb3VuZC4ANElkZW50aWZpZXJzT2YAAQQCsQy5DAQABMwgVGhlIGlkZW50aWZpZXJzIG9mIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFuIGVudGl0eS4AEFJvb3QAAQgGAr0MwQwEAASIIFRoZSBjdXJyZW50IG1lbWJlcnMgd2UgcmVjb2duaXNlLgAgT2xkUm9vdHMAAQwGBgbJDM0MBAAkQQEgT2xkIHJpbmcgcm9vdHMgYXJlIHJldGFpbmVkIGZvciBhIGdyYWNlIHBlcmlvZCBzbyB0aGF0IHByb29mcyBnZW5lcmF0ZWQgYWdhaW5zdGUBIHByZXZpb3VzIHJldmlzaW9ucyByZW1haW4gdmFsaWQuIEVhY2ggcm9vdCBpbiB0aGUgbWFwIGlzIGlkZW50aWZpZWQgYnkgdGhlIGNvbXBvc2l0ZSBrZXktASBgKGNvbGxlY3Rpb24sIHJpbmcgaW5kZXgsIHJpbmcgcmV2aXNpb24pYC4gRW50cmllcyBjYW4gYmUgY2xlYW5lZCB1cCBhZnRlciUBIGBPbGRSb290UmV0ZW50aW9uRHVyYXRpb25gIGhhcyBwYXNzZWQgc2luY2UgdGhlIGBhcmNoaXZlZF9hdGAgdGltZXN0YW1wLgA5ASBUaGlzIHN0b3JhZ2UgY2FuIGNvbnRhaW4gc29tZSByb290cyBmb3IgZGVsZXRlZCBjb2xsZWN0aW9ucyBvciByZW1vdmVkIHJpbmdzLkEBIFRoZSBjYWxsIGB2ZXJpZnlfbWVtYmVyc2hpcGAgYW5kIG90aGVyIG9wZXJhdGlvbiB1c2luZyBvbGQgcm9vdHMgbXVzdCBjaGVjayB0aGVBASBleGlzdGVuY2Ugb2YgdGhlIGNvbGxlY3Rpb24gYW5kIHRoZSByb290IGluIG9yZGVyIHRvIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IGR1c3Qu8CBUaGUgb2xkIHJvb3RzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciB0aGUgcmV0ZW50aW9uIGR1cmF0aW9uLgBAQ3VycmVudFJpbmdJbmRleAEBBAYIOBAAAAAABOQgS2VlcHMgdHJhY2sgb2YgdGhlIHJpbmcgaW5kZXggY3VycmVudGx5IGJlaW5nIHBvcHVsYXRlZC4AOE9uYm9hcmRpbmdTaXplAQEEBgg4EAAAAAAE+CBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHF1ZXVlZCBiZWZvcmUgb25ib2FyZGluZyB0byBhIHJpbmcuACBSaW5nS2V5cwEBDAYCBdEM1QwEABBhASBCb3RoIHRoZSBrZXlzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGJ1aWx0IHJpbmdzIGFuZCB0aGUga2V5cyB0aGF0IHdpbGwgYmUgdXNlZCBpbiBmdXR1cmVZASByaW5ncy4gUGFnaW5hdGVkIGJ5IChJZGVudGlmaWVyLCBSaW5nSW5kZXgsIFBhZ2VJbmRleCkgd2hlcmUgZWFjaCBwYWdlIGNvbnRhaW5zIHVwIHRvdQEgYFJpbmdDYXBhY2l0eUZyb21FeHBvbmVudGAga2V5cy4gVGhlIHBhZ2Ugc2l6ZSBlcXVhbHMgdGhlIGZsZXhpYmxlIHJpbmcgZXhwb25lbnQncyBjYXBhY2l0eSz0IGVuc3VyaW5nIEZsZXhpYmxlIGNvbGxlY3Rpb25zIG5ldmVyIG5lZWQgbW9yZSB0aGFuIG9uZSBwYWdlLgA4UmluZ0tleXNTdGF0dXMBAQgGAr0M2QwkAAAAAAAAAAAACGEBIFN0b3JlcyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBmb3IgZWFjaCByaW5nLCB0aGUgbnVtYmVyIG9mIGtleXMgYW5kIGhvdyBtYW55IGFyZSBhY3R1YWxseVggaW5jbHVkZWQgaW4gdGhlIHJvb3QuAEhQZW5kaW5nU3VzcGVuc2lvbnMBAQgGBb0M3QwEAAxpASBBIG1hcCBvZiBhbGwgcmluZ3Mgd2hpY2ggY3VycmVudGx5IGhhdmUgcGVuZGluZyBzdXNwZW5zaW9ucyBhbmQgbmVlZCBjbGVhbmluZywgYWxvbmcgd2l0aBEBIHRoZWlyIHJlc3BlY3RpdmUgbnVtYmVyIG9mIHN1c3BlbmRlZCBrZXlzIHdoaWNoIG5lZWQgdG8gYmUgcmVtb3ZlZC5tASBOb3RlOiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBzaW5nbGUtcGFnZSByaW5ncywgc28gYm91bmRlZCBieSBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YC4ANEFjdGl2ZU1lbWJlcnMBAQQGCDgQAAAAAATQIFRoZSBudW1iZXIgb2YgbWVtYmVycyBjdXJyZW50bHkgaW5jbHVkZWQgaW4gYSByaW5nLgAcTWVtYmVycwABCAYC4QzlDAQAGF0BIFRoZSBjdXJyZW50IG1lbWJlcnMgaW4gZWFjaCBjb2xsZWN0aW9uIChlaXRoZXIgaW5jbHVkZWQgaW4gcmluZ3MsIHN1c3BlbmRlZCBhbmQgcXVldWVkIQEgZm9yIHJlbW92YWwgZnJvbSBhIHJpbmcsIHN1c3BlbmRlZCBhbmQgbm90IGluIGFueSByaW5nLCBvciBvbmJvYXJkaW5nKS4ADQEgQ29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIG1lbWJlciBwdWJsaWMga2V5IHRvIHRoZSBtZW1iZXIncyBzdGF0dXMuAKggQSBrZXkgY2FuIGJlbG9uZyB0byBtdWx0aXBsZSBjb2xsZWN0aW9ucy4AKFJpbmdzU3RhdGUBAQQGCOkMBAAE/CBUaGUgY3VycmVudCBzdGF0ZSBvZiBhbGwgcmluZ3MgbWFuYWdlZCBmb3IgYSBnaXZlbiBpZGVudGlmaWVyLgAoU3RhbGVSaW5ncwABCAYFvQwQBAAEzCBTZXQgb2YgcmluZ3Mgd2hpY2ggYXJlIHN0YWxlIGFuZCByZXF1aXJlIGJ1aWxkaW5nLgBAUXVldWVQYWdlSW5kaWNlcwEBBAYITQggAAAAAAAAAAAEOQEgS2VlcHMgdHJhY2sgb2YgdGhlIHBhZ2UgaW5kaWNlcyBvZiB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0aGUgb25ib2FyZGluZyBxdWV1ZS4APE9uYm9hcmRpbmdRdWV1ZQEBCAYFvQzxDAQABC0BIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIG1lbWJlciBwdWJsaWMga2V5cyByZWFkeSB0byBiZSBpbmNsdWRlZCBpbiBhIHJpbmcuAERSaW5nRGVsZXRpb25RdWV1ZQABDAYFBdEMEAQAFJggUXVldWUgb2YgcmluZyBwYWdlcyBwZW5kaW5nIGRlbGV0aW9uLgAVASBUaGlzIGlzIHVzZWQgYm90aCBieSBgcmVtb3ZlX3JpbmdgIChpbmRpdmlkdWFsIHJpbmcgZGVsZXRpb24pIGFuZCBieRkBIGNvbGxlY3Rpb24gZGVsZXRpb24uIFJpbmcgcGFnZXMgYXJlIHByb2Nlc3NlZCBmcm9tIHRoaXMgcXVldWUgdmlhIE9DV6wgcmVnYXJkbGVzcyBvZiB3aGljaCBvcGVyYXRpb24gcXVldWVkIHRoZW0uAAFhBQABFQgAGDhNYXhDb2xsZWN0aW9uczgQZAAAAATEIE1heGltdW0gbnVtYmVyIG9mIGNvbGxlY3Rpb25zIGFuIG93bmVyIGNhbiBoYXZlLgBcT25ib2FyZGluZ1F1ZXVlUGFnZVNpemU4EP8AAAAITQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AXE1heEZsZXhpYmxlUmluZ0V4cG9uZW50VQUECQxdASBUaGUgbWF4aW11bSByaW5nIGV4cG9uZW50IHVzZWQgZm9yIEZsZXhpYmxlIGNvbGxlY3Rpb25zLiBUaGlzIGFsc28gZGV0ZXJtaW5lcyB0aGUgcGFnZVUBIHNpemUgZm9yIHBhZ2luYXRlZCByaW5nIGtleSBzdG9yYWdlLiBGbGV4aWJsZSBjb2xsZWN0aW9ucyBjYW4gb25seSB1c2UgcmluZyBzaXplcyB1cDwgdG8gdGhpcyB2YWx1ZS4AXFJpbmdCdWlsZGluZ01lbWJlckxpbWl0OBBkAAAACGEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gYmUgaW5jbHVkZWQgaW4gYSByaW5nIHRocm91Z2ggYSBzaW5nbGUgcm9vdCBidWlsZGluZxggY2FsbC4AYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbiggWAIAAAAAAAAIUQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IG9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBiZWZvcmUgdGhleSBjYW4gYmUgY2xlYW5lZCB1cC5JASBUaGlzIGFsbG93cyBwcm9vZnMgZ2VuZXJhdGVkIHdpdGggb2xkZXIgcm9vdHMgdG8gcmVtYWluIHZhbGlkIGZvciBhIGdyYWNlIHBlcmlvZC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE5CBUaGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgAB9QwABCBMb2NhdGlvbnEBBDkBIExvY2F0aW9uIHR5cGUgZm9yIGlkZW50aWZ5aW5nIGNvbGxlY3Rpb24gb3duZXJzIGZyb20gb3RoZXIgY2hhaW5zL3BhcmFjaGFpbnMuAEMAABxDb2luYWdlARxDb2luYWdlUDBDb2luc0J5T3duZXIAAQQCBBEEBAAMGQEgQWxsIHRoZSBjb2lucyBpbiBhbGwgaW5zdGFuY2VzIGN1cnJlbnRseSBjaXJjdWxhdGluZywga2V5ZWQgYnkgb3duZXIuAFEBIEEgY29pbiBpcyBtaW50ZWQgd2hlbiB1bmxvYWRlZCBmcm9tIGEgcmVjeWNsZXIsIGFuZCBkZXN0cm95ZWQgd2hlbiBsb2FkZWQgaW50byBvbmUuACxMb2NrZWRDb2lucwABBAIE+QwEABBFASBUZW1wb3JhcnkgbG9jayBleHBpcnkgZm9yIGNvaW5zIHRoYXQgcHJldmlvdXNseSBmYWlsZWQgZGlzcGF0Y2gsIGtleWVkIGJ5IG93bmVyLgBhASBBbiBlbnRyeSBpcyBsb2NrZWQgdW50aWwgdGhlIHN0b3JlZCBVbml4IHRpbWVzdGFtcCwgcHJldmVudGluZyByZXBlYXRlZCBmYWlsZWQgZGlzcGF0Y2hwIGF0dGVtcHRzIGluIGEgc2hvcnQgcGVyaW9kLgBoVG90YWxWYWx1ZU9mRGVzdHJveWVkQ29pbnMBAQQFOEUBQAAAAAAAAAAAAAAAAAAAAAAU9CBUaGUgdG90YWwgdmFsdWUgb2YgY29pbnMgdGhhdCB3ZXJlIGJ1cm50LCBrZXllZCBieSBpbnN0YW5jZS4AaQEgVGhpcyB0cmFja3MgdmFsdWUgdGhhdCBpcyBpbnRlbnRpb25hbGx5IGRlc3Ryb3llZCBhcyBwYXJ0IG9mIHByb3RvY29sIGZsb3dzIChmb3IgZXhhbXBsZTplASByZWN5Y2xlciBleHBpcmF0aW9uIGNsZWFudXAgYW5kIGZlZSByZW1haW5kZXIgYnVybmluZykuIFRoaXMgc3RvcmFnZSBpdGVtIGtlZXBzIHRyYWNrIG9mpCB0aGUgdG90YWwgdmFsdWUgb2Ygc3VjaCBkZXN0cm95ZWQgY29pbnMuAGBDb25zdW1lZEZyZWVVbmxvYWRUb2tlbnMAAQgFBSULEAQAGMQgQ29uc3VtZWQgZnJlZSB1bmxvYWQgdG9rZW5zIGJ5IHBlcmlvZCBhbmQgYWxpYXMuAFUBIFRoaXMgc3RvcmFnZSBrZWVwcyB0cmFjayBvZiB0aGUgZnJlZSB1bmxvYWQgdG9rZW5zIHRoYXQgaGF2ZSBiZWVuIGNvbnN1bWVkIGJ5IHBlb3BsZawgYW5kIGxpdGUgcGVvcGxlLCB0byBhdm9pZCBkb3VibGUgc3BlbmRpbmcuAHAgSXQgaXMgY2xlYXJlZCBwZXJpb2RpY2FsbHkuAGRSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkAAEIBQUBDRAEAFhNASBUcmFja3Mgd2hldGhlciBhIHJlY3ljbGVyIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGdpdmVuIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24uAG0BIFtgUGFsbGV0OjpjcmVhdGVfc3VmZmljaWVudF9pbnN0YW5jZWBdIGNyZWF0ZXMgb25lIHJlY3ljbGVyIGNvbGxlY3Rpb24gcGVyIGRlbm9taW5hdGlvbiBpbpggYFtNaW5pbXVtRXhwb25lbnQsIE1heGltdW1FeHBvbmVudF1gLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LikBICogW1JlY3ljbGVyc1VubG9hZGVkQ291bnRdIC0gdGhlIG51bWJlciBvZiB1bmxvYWRlZCBhbGlhc2VzIG9mIGVhY2ggcmluZy5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AdFJlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4AAEIBQUBDTgEAFgBASBMYXN0IHJlbW92ZWQgcmluZyBpbmRleCBwZXIgaW5zdGFuY2UgYW5kIHJlY3ljbGVyIGRlbm9taW5hdGlvbi4ARQEgUmluZ3MgYXJlIHJlbW92ZWQgc2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gaW5kZXggMC4gVGhlIG5leHQgcmluZyB0byBjaGVjayBmb3ItASBleHBpcmF0aW9uIGlzIGBsYXN0X3JlbW92ZWQgKyAxYCAob3IgYDBgIGlmIG5vdGhpbmcgaGFzIGJlZW4gcmVtb3ZlZCB5ZXQpLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LikBICogW1JlY3ljbGVyc1VubG9hZGVkQ291bnRdIC0gdGhlIG51bWJlciBvZiB1bmxvYWRlZCBhbGlhc2VzIG9mIGVhY2ggcmluZy5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFJlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyAAEEAggBDQQAWE0BIE1hcHBpbmcgZnJvbSBhIHJlY3ljbGVyIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24gaXQgYmVsb25ncyB0by4ATQEgV2hlbiBhIGNvaW4gaXMgbG9hZGVkIGludG8gYSByZWN5Y2xlciwgdGhlIG1lbWJlciBrZXkgaXMgcmVjb3JkZWQgaGVyZSBzbyB0aGF0IHRoZUkBIHBhbGxldCBjYW4gbG9vayB1cCB3aGljaCBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LikBICogW1JlY3ljbGVyc1VubG9hZGVkQ291bnRdIC0gdGhlIG51bWJlciBvZiB1bmxvYWRlZCBhbGlhc2VzIG9mIGVhY2ggcmluZy5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4ATFJlY3ljbGVyQWxpYXNTdGF0ZXMAARAFBQUFBQ0JDQQAWFUBIFN0YXRlIG9mIHJlY3ljbGVyIGFsaWFzZXMsIGluZGV4ZWQgYnkgYChpbnN0YW5jZSwgZGVub21pbmF0aW9uLCByaW5nIGluZGV4LCBhbGlhcylgLgBVASBFYWNoIGVudHJ5IHJlY29yZHMgZWl0aGVyIGEgdGVtcG9yYXJ5IGZhaWxlZC1kaXNwYXRjaCBsb2NrIG9yIGEgcGVybWFuZW50bHkgY29uc3VtZWToIGFsaWFzLiBBYnNlbmNlIGZyb20gdGhlIG1hcCBtZWFucyB0aGUgYWxpYXMgaXMgYXZhaWxhYmxlLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LikBICogW1JlY3ljbGVyc1VubG9hZGVkQ291bnRdIC0gdGhlIG51bWJlciBvZiB1bmxvYWRlZCBhbGlhc2VzIG9mIGVhY2ggcmluZy5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AWFJlY3ljbGVyc1VubG9hZGVkQ291bnQAAQQFDQ04BABg0CBOdW1iZXIgb2YgYWxpYXNlcyB1bmxvYWRlZCBmcm9tIGVhY2ggcmVjeWNsZXIgcmluZy4AIQEgRXF1YWxzIHRoZSBudW1iZXIgb2YgW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIGVudHJpZXMgb2YgdGhlIHJpbmcgaW4gc3RhdGV1ASBbYEFsaWFzU3RhdGU6OlVubG9hZGVkYF0sIHNvIGBSaW5nU3RhdHVzOjp0b3RhbGAgbWludXMgdGhpcyB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGNvaW5zIHRoZVUBIHJpbmcgc3RpbGwgaG9sZHMuIEFic2VudCBmb3IgYSByaW5nIHRoYXQgYWxyZWFkeSBoYWQgYWxpYXMgc3RhdGVzIHdoZW4gdGhlIGNvdW50IHdhc1kBIGludHJvZHVjZWQsIGJlY2F1c2UgcmVjb3ZlcmluZyBpdHMgbnVtYmVyIG5lZWRzIGEgc2Nhbjsgc3VjaCBhIHJpbmcgaXMgbmV2ZXIgY291bnRlZC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAEBSZWN5Y2xlcnNEdXN0aW5nAAEEBQ0NEAQAYB0BIE1hcmtzIHJlY3ljbGVyIHJpbmdzIHRoYXQgaGF2ZSBkZWZlcnJlZCByZWN5Y2xlciBkdXN0IHBlbmRpbmcgcmVtb3ZhbC4ANQEgV2hlbiBhIHJlY3ljbGVyIHJpbmcgaXMgcmVtb3ZlZCwgdGhlIGNsZWFudXAgb2YgaXRzIGxlZnRvdmVyIGFsaWFzIHN0YXRlcyBpblkBIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBpcyBwZXJmb3JtZWQgZ3JhZHVhbGx5IHRocm91Z2ggdGhpcyBzdG9yYWdlIGl0ZW0uIEFuIGVudHJ5IGhlcmVlASBpbmRpY2F0ZXMgdGhhdCBlbnRyaWVzIGluIFtSZWN5Y2xlckFsaWFzU3RhdGVzXSBmb3IgdGhlIGdpdmVuIGluc3RhbmNlLCBkZW5vbWluYXRpb24gYW5ktCByaW5nIGluZGV4IHN0aWxsIGV4aXN0IGFuZCBzaG91bGQgYmUgZHVzdGVkLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6SQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYW4gaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5ZASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggaW5zdGFuY2UgYW5kQCAgIGRlbm9taW5hdGlvbi5tASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGluc3RhbmNlIGFuZCBkZW5vbWluYXRpb24wICAgaXQgaXMgaW4ubQEgKiBbUmVjeWNsZXJBbGlhc1N0YXRlc10gLSBwZXItYWxpYXMgbG9jay91bmxvYWRlZCBzdGF0ZSwgaW5kZXhlZCBieSBpbnN0YW5jZSwgZGVub21pbmF0aW9uSCAgIGFuZCByaW5nIGluZGV4LikBICogW1JlY3ljbGVyc1VubG9hZGVkQ291bnRdIC0gdGhlIG51bWJlciBvZiB1bmxvYWRlZCBhbGlhc2VzIG9mIGVhY2ggcmluZy5BASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggZGVmZXJyZWQgcmVjeWNsZXIgZHVzdCBwZW5kaW5nIHJlbW92YWwubQEgKiBbUmVjeWNsZXJzQXJjaGl2ZXNdIC0gYXJjaGl2YWwgY29tbWl0bWVudHMgZm9yIGNsZWFuZWQgcmluZ3MgdGhhdCBzdGlsbCBob2xkIHJlY292ZXJhYmxlJCAgIGNvaW5zLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4ARFJlY3ljbGVyc0FyY2hpdmVzAAEEBQ0NEQ0EAHxNASBBcmNoaXZhbCBjb21taXRtZW50cyBmb3IgY2xlYW5lZCByZWN5Y2xlciByaW5ncyB0aGF0IHN0aWxsIGhvbGQgcmVjb3ZlcmFibGUgY29pbnMuAGkBIFdoZW4gYSByZWN5Y2xlciByaW5nIGlzIGNsZWFuZWQgKHNlZSBbYFJlY3ljbGVyTWFuYWdlcjo6Y2xlYW5fdW5jaGVja2VkYF0pIHdoaWxlIGl0IHN0aWxsXQEgaGFzIGF0IGxlYXN0IG9uZSBub3QtdW5sb2FkZWQgYWxpYXMsIGFuIFtgQXJjaGl2ZWRSZWN5Y2xlcmBdIGlzIHJlY29yZGVkIGhlcmUga2V5ZWQgYnldASBgKGluc3RhbmNlLCBkZW5vbWluYXRpb24sIHJpbmcgaW5kZXgpYC4gSXQgY29tbWl0cyB0byB0aGUgdHJpZSBvZiB1bmxvYWRlZCBhbGlhc2VzIGFuZAUBIHRoZSByZWN5Y2xlciByb290LiBOb3QtdW5sb2FkZWQgY29pbnMgY2FuIHN0aWxsIGJlIHVubG9hZGVkIHdpdGhlASBbYFBhbGxldDo6dW5sb2FkX2FyY2hpdmVkX3JlY3ljbGVyX2ludG9fZXh0ZXJuYWxfYXNzZXRgXSwgd2hpY2ggdXBkYXRlcyB0aGUgYXJjaGl2ZS4gVGhl2CBhcmNoaXZlIGlzIHJlbW92ZWQgb25jZSBhbGwgY29pbnMgaGF2ZSBiZWVuIHVubG9hZGVkLgBhASBPbmx5IHRoZSBjb21taXRtZW50cyBhcmUgc3RvcmVkIG9uLWNoYWluLiBUaGUgdW5sb2FkZWQtYWxpYXNlcyB0cmllIGFuZCB0aGUgcmluZyBjYW4gYmUhASByZWNvbnN0cnVjdGVkIG9mZmNoYWluIHRvIGJ1aWxkIHRoZSByZWNvdmVyeSBwcm9vZnMgYnkgbGlzdGVuaW5nIHRvIHRoZQkBIFtgRXZlbnQ6OlJlY3ljbGVyQWxpYXNVbmxvYWRlZGBdLCBbYEV2ZW50OjpSZWN5Y2xlckFyY2hpdmVkYF0gYW5k9CBbYEV2ZW50OjpBcmNoaXZlZFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldGBdIGV2ZW50cy4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkkBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGFuIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24uWQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGluc3RhbmNlIGFuZEAgICBkZW5vbWluYXRpb24ubQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBpbnN0YW5jZSBhbmQgZGVub21pbmF0aW9uMCAgIGl0IGlzIGluLm0BICogW1JlY3ljbGVyQWxpYXNTdGF0ZXNdIC0gcGVyLWFsaWFzIGxvY2svdW5sb2FkZWQgc3RhdGUsIGluZGV4ZWQgYnkgaW5zdGFuY2UsIGRlbm9taW5hdGlvbkggICBhbmQgcmluZyBpbmRleC4pASAqIFtSZWN5Y2xlcnNVbmxvYWRlZENvdW50XSAtIHRoZSBudW1iZXIgb2YgdW5sb2FkZWQgYWxpYXNlcyBvZiBlYWNoIHJpbmcuQQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIGRlZmVycmVkIHJlY3ljbGVyIGR1c3QgcGVuZGluZyByZW1vdmFsLm0BICogW1JlY3ljbGVyc0FyY2hpdmVzXSAtIGFyY2hpdmFsIGNvbW1pdG1lbnRzIGZvciBjbGVhbmVkIHJpbmdzIHRoYXQgc3RpbGwgaG9sZCByZWNvdmVyYWJsZSQgICBjb2lucy4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5NZW1iZXJzAAEEAggQBAA4CQEgTWFwcGluZyBmcm9tIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IHRvIHRoZSBwZXJpb2QgaXQgYmVsb25ncyB0by4ARQEgV2hlbiBhIHVzZXIgcGF5cyBmb3IgYSByZWN5Y2xlciB1bmxvYWQgdG9rZW4sIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28hASB0aGF0IHRoZSBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggcGVyaW9kIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUGFpZFVubG9hZFRva2VuQ29uc3VtZWQAAQwGBQV5DBAEADj0IENvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VucyBieSBwZXJpb2QsIHJpbmcgaW5kZXggYW5kIGFsaWFzLgBJASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gaXMgY29uc3VtZWQsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXP0IHN0b3JlZCBoZXJlIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIHdpdGhpbiB0aGUgc2FtZSByaW5nLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBsUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkAAEEBkkMEAQAOAkBIFRyYWNrcyB3aGV0aGVyIGEgcGFpZCB0b2tlbiBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBwZXJpb2QuAFUBIFVzZXMgYElkZW50aXR5YCBoYXNoZXIgc28gdGhhdCBpdGVyYXRpb24geWllbGRzIHBlcmlvZHMgaW4gb3JkZXIsIGVuYWJsaW5nIGVmZmljaWVudHAgY2xlYW51cCBvZiBleHBpcmVkIHBlcmlvZHMuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5EdXN0aW5nAAEEBkkMEAQAQC0BIE1hcmtzIHBhaWQgdW5sb2FkIHRva2VuIHBlcmlvZHMgdGhhdCBoYXZlIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAFkBIFdoZW4gYSBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyBjb25zdW1lZCB0b2tlbnMgaW5VASBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnlNASBoZXJlIGluZGljYXRlcyB0aGF0IGNvbnN1bWVkIHRva2VucyBmb3IgdGhlIGdpdmVuIHBlcmlvZCBzdGlsbCBleGlzdCBhbmQgc2hvdWxkIGJlICBkdXN0ZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHhQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW4AAQQGSQw4BABg9CBUcmFja3MgdGhlIG5leHQgcmluZyBpbmRleCB0byBjbGVhbiBmb3IgZWFjaCBleHBpcmVkIHBlcmlvZC4ANQEgVXNlZCBieSB0aGUgT0NXIHRvIGRldGVybWluZSBjbGVhbnVwIHByb2dyZXNzIGFuZCBieSB0aGUgY29sbGVjdGlvbiBkZWxldGlvbsQgZXh0cmluc2ljIHRvIHZlcmlmeSBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAD0BIFJpbmdzIGFyZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAob25lIHBlciBPQ1cgaW50ZXJ2YWwpIHJhdGhlciB0aGFuIGFsbCBhdCBvbmNlLj0BIFRoaXMgaXMgaW50ZW50aW9uYWw6IGEgc2luZ2xlIHN0b3JhZ2UgY3Vyc29yIGVuYWJsZXMgTygxKSBjb21wbGV0aW9uIGNoZWNrcyBpbswgYm90aCBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2NsZWFuX3JpbmdgXSBhbmRFASBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2RlbGV0ZV9jb2xsZWN0aW9uYF0uIFRoZSBhbHRlcm5hdGl2ZSDigJQgc3VibWl0dGluZ1UBIGFsbCByaW5nIGNsZWFucyBpbiBwYXJhbGxlbCDigJQgd291bGQgcmVxdWlyZSBmZXRjaGluZyByaW5nIG1lbWJlcnMgdG8gY2hlY2sgd2hldGhlck0BIGVhY2ggcmluZyB3YXMgYWxyZWFkeSBjbGVhbmVkIChzaW5jZSBgcmluZ19zdGF0dXNgIHN0aWxsIHJlcG9ydHMgYHRvdGFsID4gMGAgYWZ0ZXJVASBjbGVhbnVwIGJlY2F1c2UgcmluZ3MgYXJlIG5vdCByZW1vdmVkIHVudGlsIGNvbGxlY3Rpb24gZGVsZXRpb24pLiBDbGVhbnVwIG9mIGV4cGlyZWRNASBjb2xsZWN0aW9ucyBpcyBub3QgdGltZS1jcml0aWNhbCwgc28gdGhlIHNpbXBsZXIgc2VxdWVudGlhbCBhcHByb2FjaCBpcyBwcmVmZXJyZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4dASAqIFtQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW5dIC0gc2VxdWVudGlhbCByaW5nIGNsZWFudXAgcHJvZ3Jlc3MuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgAkSW5zdGFuY2VzAAEEBTgVDQQAEMAgVGhlIGNvaW5hZ2UgaW5zdGFuY2VzLCBrZXllZCBieSBbYEluc3RhbmNlSWRgXS4AcQEgQ3JlYXRlZCBieSBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXS4gRW50cmllcyBhcmUgbmV2ZXIgcmVtb3ZlZDogdGhlIGNvaW5zIGFuZOwgcmVjeWNsZXJzIG9mIGFuIGluc3RhbmNlIGNhbiBvdXRsaXZlIGFueSBzaW5nbGUgb3BlcmF0aW9uLgA4TmV4dEluc3RhbmNlSWQBADgQAAAAAAQ9ASBUaGUgW2BJbnN0YW5jZUlkYF0gdGhhdCBbYFBhbGxldDo6Y3JlYXRlX3N1ZmZpY2llbnRfaW5zdGFuY2VgXSBhbGxvY2F0ZXMgbmV4dC4APEFzc2V0VG9JbnN0YW5jZQABCAIFLQ0QBAAQQQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBhbiB1bmRlcmx5aW5nIGFzc2V0IHRvIHRoZSBpbnN0YW5jZXMgd3JhcHBpbmcgaXQsIGFzIGEgc2V0LgD0IEFuIGFzc2V0IG1heSBiZSB3cmFwcGVkIGJ5IG11bHRpcGxlIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudIQgW2BJbnN0YW5jZVJlY29yZDo6YXNzZXRfdW5pdGBdcy4AQFBvdENvbnRyaWJ1dGlvbnMBAQwFAgIxDUUBQAAAAAAAAAAAAAAAAAAAAAAEOQEgV2hhdCBlYWNoIGZ1bmRlciBoYXMgcHV0IGludG8gYW4gaW5zdGFuY2UncyBwb3QgdGhyb3VnaCBbYFBhbGxldDo6ZnVuZF9wb3RgXS4AAWkFAAEZCAAwUFJlY3ljbGVyUmluZ0V4cG9uZW50VQUECgywIFRoZSByaW5nIGV4cG9uZW50IGZvciByZWN5Y2xlciBjb2xsZWN0aW9ucy4APQEgTk9URTogQ2hhbmdpbmcgdGhpcyB2YWx1ZSBvbiBhIGxpdmUgY2hhaW4gcmVxdWlyZXMgc3Vic3RhbnRpYWwgbWlncmF0aW9uIHdvcmsuAGxQYWlkVW5sb2FkVG9rZW5SaW5nRXhwb25lbnRVBQQKBNQgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb25zLgA8TWluaW11bUV4cG9uZW50FQQEAASsIFRoZSBtaW5pbXVtIGV4cG9uZW50IGZvciB0aGUgZGVub21pbmF0aW9uLgA8TWF4aW11bUV4cG9uZW50FQQEDgSsIFRoZSBtYXhpbXVtIGV4cG9uZW50IGZvciB0aGUgZGVub21pbmF0aW9uLgCETWluaW11bUV4cG9uZW50Rm9yT3V0cHV0VW5sb2FkRmVlFQQEADBdASBUaGUgbWluaW11bSBjb2luIGV4cG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGF0Y2ggYSBjYWxsIGB1bmxvYWRfcmVjeWNsZXJfKmAgd2l0aNQgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLgBhASBUaGlzIGVuc3VyZXMgdGhlIGZlZSBjb2luIGlzIGxhcmdlIGVub3VnaCB0byBwZW5hbGl6ZSBmYWlsaW5nIHRyYW5zYWN0aW9ucywgYnV0IGl0IGRvZXO4IG5vdCBuZWVkIHRvIGNvdmVyIHRoZSB3aG9sZSB1bmxvYWQgdG9rZW4gZmVlLgBRASBUaGUgZXhwb25lbnQgaXMgZ2xvYmFsLCBzbyB0aGUgY29pbiB2YWx1ZSBpdCByZXByZXNlbnRzIHNjYWxlcyB3aXRoIGVhY2ggaW5zdGFuY2Unc2UBIFtgSW5zdGFuY2VSZWNvcmQ6OmFzc2V0X3VuaXRgXS4gQW4gaW5zdGFuY2Ugd2hvc2UgdW5pdCBpcyB3b3J0aCBsZXNzIHRoZXJlZm9yZSBwZW5hbGl6ZXNsIGZhaWxpbmcgdHJhbnNhY3Rpb25zIGxlc3MuAFEBIFRoZSBoZWxwZXIgZnVuY3Rpb24gYHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXRgIGNhbiBiZSB1c2VkIHRvzCBldmFsdWF0ZSB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgZm9yIHRoaXMgb3BlcmF0aW9uLgA8TWF4U3BsaXRPdXRwdXRzOBAgAAAABKwgVGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dHMgZm9yIGEgc3BsaXQuAEBNYXhDb25zb2xpZGF0aW9uOBBAAAAABNwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFsaWFzIHByb29mcyBpbiBhIGNvbnNvbGlkYXRpb24uAEhNYXhCYXRjaFVucGFpZExvYWQ4EAoAAAAIuCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5uZXIgY2FsbHMgaW4gYSBzaW5nbGUNASBbYENhbGw6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRfYmF0Y2hgXSBkaXNwYXRjaC4AlFVubG9hZFRva2VuVGltZVBlcmlvZFBlb3BsZUxpdGVQZW9wbGU4EIBRAQAE4CBUaGUgdGltZSBwZXJpb2QgZHVyYXRpb24gZm9yIHVubG9hZCB0b2tlbnMsIGluIHNlY29uZHMuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBAEAAAABOQgVGhlIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AVENvaW5GYWlsdXJlTG9ja1BlcmlvZCggPAAAAAAAAAAQUQEgVGhlIGJhc2UgbnVtYmVyIG9mIHNlY29uZHMgdG8gbG9jayBhIGNvaW4gYWZ0ZXIgYSBmYWlsZWQgZGlzcGF0Y2ggaW4gYEFzQ29pbmAgZmxvdy4APQEgVGhlIGFjdHVhbCBsb2NrIGR1cmF0aW9uIGlzIGV4cG9uZW50aWFsOiBgMl5yZXRyaWVzICogYmFzZWAgd2hlcmUgYHJldHJpZXNgIGlzkCB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzLgA4cGFsbGV0X2FjY291bnQEgG1vZGxjb2luYWdlIAAAAAAAAAAAAAAAAAAAAAAAAAAABHggVGhlIGFjY291bnQgaWQgb2YgdGhlIHBhbGxldC4AATUNAABwesJxLIp2pSrDuhCikCHsmb1pd28Ieo5VKaDaoj41oHhAZ2V0X2luc3RhbmNlX2lkcwQgYXNzZXRfaWRxAWkEEOAgR2V0IGV2ZXJ5IGluc3RhbmNlIHdyYXBwaW5nIHRoZSBnaXZlbiB1bmRlcmx5aW5nIGFzc2V0LgBRASBBbiBhc3NldCBjYW4gYmUgd3JhcHBlZCBieSBzZXZlcmFsIGluc3RhbmNlcywgZWFjaCB3aXRoIGl0cyBvd24gY29pbiB1bml0OyByZWFkIHRoZYAgdW5pdCBvZiBvbmUgZnJvbSBbYEluc3RhbmNlc2BdLgB6wnEsinalKsO6EKKQIeyZNaPDLkQuGq0ecfaEeVMnhkBnZXRfbG9hZF9kZXBvc2l0AMEFBKQgR2V0IHRoZSBsb2FkIGRlcG9zaXQgY3VycmVuY3kgYW5kIHByaWNlLgB6wnEsinalKsO6EKKQIeyZr6Kdf7MlTUNp0JkJbMMcfTxnZXRfcG90X2FjY291bnQELGluc3RhbmNlX2lkODUBBFUBIEdldCB0aGUgcG90IGFjY291bnQgb2YgYSBzcG9uc29yZWQgaW5zdGFuY2UsIGBOb25lYCBmb3IgYSBzdWZmaWNpZW50IG9yIG1pc3Npbmcgb25lLgB6wnEsinalKsO6EKKQIeyZQ8Lw6F6OYiBWYpP1QaiQ9ThnZXRfcG90X3N0YXR1cwQsaW5zdGFuY2VfaWQ4OQ0IRQEgR2V0IHRoZSBzdGF0dXMgb2YgYSBzcG9uc29yZWQgaW5zdGFuY2UncyBwb3QsIGBOb25lYCBmb3IgYSBzdWZmaWNpZW50IG9yIG1pc3NpbmcoIGluc3RhbmNlLgB6wnEsinalKsO6EKKQIeyZ7QXiyDQl8fWvewasaeUkbVRnZXRfcG90X2NvbnRyaWJ1dGlvbnMILGluc3RhbmNlX2lkOBhmdW5kZXIESQ0MLQEgUGVyIGFzc2V0IGlkOiB0aGUgZnVuZGVyJ3MgcmVjb3JkZWQgcG90IGNvbnRyaWJ1dGlvbiBhbmQgaG93IG11Y2ggb2YgaXQgaXMFASB3aXRoZHJhd2FibGUgcmlnaHQgbm93LCB3aGljaCBpcyB0aGUgY29udHJpYnV0aW9uIGNhcHBlZCBieSB3aGF0UQEgW2BQYWxsZXQ6OndpdGhkcmF3X3BvdF9mdW5kc2BdIGNvdWxkIGFjdHVhbGx5IG1vdmUgb3V0IG9mIHRoZSBwb3QgaW4gdGhhdCBjdXJyZW5jeS4AesJxLIp2pSrDuhCikCHsmaELDU3skBKNd1Wx/rcjLYJoZ2V0X2ZyZWVfdW5sb2FkX3Rva2VuX2luZm8ATQgQTQEgR2V0IHRoZSBjdXJyZW50IG51bWJlciBvZiBmcmVlIHVubG9hZCB0b2tlbnMgZGlzdHJpYnV0ZWQgdG8gcGVvcGxlIGFuZCBsaXRlIHBlb3BsZawgZ2l2ZW4gdGhlIGN1cnJlbnQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuALggUmV0dXJuczogYChsaW1pdF9wZW9wbGUsIGxpbWl0X2xpdGVfcGVvcGxlKWAuAHrCcSyKdqUqw7oQopAh7JliRNCBGRmP9BQ4W6ooYS4HPGdldF9tYXhpbXVtX2FnZQDNAwTUIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgW2BDb25maWc6Ok1heGltdW1BZ2VgXS4AesJxLIp2pSrDuhCikCHsmdueLlMd5cNhHJM5O1+RHzLUZ2V0X3VubG9hZF90b2tlbl9hbGxvd2FuY2VfcGVyX3RpbWVfcGVyaW9kX2Zvcl9wZW9wbGUARQEEVQEgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiBbYENvbmZpZzo6VW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yUGVvcGxlYF0uAHrCcSyKdqUqw7oQopAh7JmQb3YOzcEuOOl5TOhkBiFS6GdldF91bmxvYWRfdG9rZW5fYWxsb3dhbmNlX3Blcl90aW1lX3BlcmlvZF9mb3JfbGl0ZV9wZW9wbGUARQEIdCBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9m8CBbYENvbmZpZzo6VW5sb2FkVG9rZW5BbGxvd2FuY2VQZXJUaW1lUGVyaW9kRm9yTGl0ZVBlb3BsZWBdLgB6wnEsinalKsO6EKKQIeyZIp+vy98a4VSgHRc26FdTK6hnZXRfbWF4X2ZyZWVfdW5sb2FkX3Rva2Vuc19wZXJfdGltZV9wZXJpb2QAOAQtASBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIFtgQ29uZmlnOjpNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZGBdLgB6wnEsinalKsO6EKKQIeyZjQar9qR/ewGJbJVFirVpF2BnZXRfcmVjeWNsZXJfcmluZ19zdGF0dXMMLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OFENBOggR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jnrt65jyEdGIFYVqh9fjiW0aGdldF9yZWN5Y2xlcl9yaW5nX3JldmlzaW9uDCxpbnN0YW5jZV9pZDgUdmFsdWUVBBRpbmRleDjkBPAgR2V0IHRoZSByaW5nIHJldmlzaW9uIGZvciBhIHJlY3ljbGVyIGF0IGEgZ2l2ZW4gcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmbXvxoCaa/NrA65X9MZsBIloZ2V0X3BhaWRfdG9rZW5fcmluZ19zdGF0dXMIGHBlcmlvZDgUaW5kZXg4UQ0EHQEgR2V0IHRoZSByaW5nIHN0YXR1cyBmb3IgYSBwYWlkIHRva2VuIGF0IGEgZ2l2ZW4gcGVyaW9kIGFuZCByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZoPbDEPaoKp98du8gf/2eNXBnZXRfcGFpZF90b2tlbl9yaW5nX3JldmlzaW9uCBhwZXJpb2Q4FGluZGV4OOQEJQEgR2V0IHRoZSByaW5nIHJldmlzaW9uIGZvciBhIHBhaWQgdG9rZW4gYXQgYSBnaXZlbiBwZXJpb2QgYW5kIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7JkwjExbJAe6lOwrcc2/jXA7iGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fYXNzZXQELGluc3RhbmNlX2lkOEEBFGUBIEdldCB0aGUgYW1vdW50IG9mIGFuIGluc3RhbmNlJ3MgdW5kZXJseWluZyBhc3NldCB0aGF0IGN1cnJlbnRseSBwYXlzIGZvciBvbmUgcGFpZCB1bmxvYWQcIHRva2VuLgBNASBSZXR1cm5zIGBOb25lYCBpZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgZXhpc3QsIG9yIGlmIGl0cyBhc3NldCBjYW5ub3QgY3VycmVudGx5IGJlYQEgY29udmVydGVkIGludG8gdGhlIG5hdGl2ZSBjdXJyZW5jeSwgaW4gd2hpY2ggY2FzZSBvbmx5IG5hdGl2ZSBmZWUgcGF5bWVudCBpcyBhdmFpbGFibGUuAHrCcSyKdqUqw7oQopAh7Jl9ZrKLdQTnVQpJPM4LDH19oGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfcXVvdGVfaW5fYXNzZXQILGluc3RhbmNlX2lkOBRjb3VudDhBARxZASBHZXQgdGhlIGFtb3VudCBvZiBhbiBpbnN0YW5jZSdzIHVuZGVybHlpbmcgYXNzZXQgdGhhdCBjdXJyZW50bHkgcGF5cyBmb3IgYGNvdW50YCBwYWlkPCB1bmxvYWQgdG9rZW5zLgBZASBUaGUgYmF0Y2ggaXMgcXVvdGVkIGFzIGEgc2luZ2xlIHN3YXAgaW50byB0aGUgbmF0aXZlIGN1cnJlbmN5LCBzbyBwb29sIHNsaXBwYWdlIG1ha2VzTQEgdGhlIHJlc3VsdCBkaWZmZXIgZnJvbSBgY291bnRgIHRpbWVzIHRoZSBzaW5nbGUtdG9rZW4gcXVvdGUuIFJldHVybnMgYE5vbmVgIGlmIHRoZV0BIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LCBvciBpZiBpdHMgYXNzZXQgY2Fubm90IGN1cnJlbnRseSBiZSBjb252ZXJ0ZWQgaW50byB0aGUgbmF0aXZl+CBjdXJyZW5jeSwgaW4gd2hpY2ggY2FzZSBvbmx5IG5hdGl2ZSBmZWUgcGF5bWVudCBpcyBhdmFpbGFibGUuAHrCcSyKdqUqw7oQopAh7JnOvUSgz1HVuplPbA/gLOnqjGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fbmF0aXZlAEUBBA0BIEdldCB0aGUgY3VycmVudCBmZWUgaW4gdGhlIG5hdGl2ZSBjdXJyZW5jeSBmb3IgcGFpZCB1bmxvYWQgdG9rZW5zLgB6wnEsinalKsO6EKKQIeyZnl6QXlmqQJ+xgGt4maYXhURnZXRfY29pbl9ieV9vd25lcgQUb3duZXIEVQ0EhCBHZXQgY29pbiBkZXRhaWxzIGZvciBhbiBhY2NvdW50LgB6wnEsinalKsO6EKKQIeyZ2pwW6SSCpfejl/Gf/KR/GkxnZXRfY29pbl9sb2NrX3VudGlsBBRvd25lcgS1AwxVASBHZXQgdGhlIFVuaXggdGltZXN0YW1wIHVudGlsIHdoaWNoIGEgY29pbiBpcyBjdXJyZW50bHkgbG9ja2VkIGFmdGVyIGZhaWxlZCBkaXNwYXRjaC4ASQEgUmV0dXJucyBgTm9uZWAgd2hlbiB0aGVyZSBpcyBubyBsb2NrIG9yIHdoZW4gdGhlIHN0b3JlZCBsb2NrIGhhcyBhbHJlYWR5IGV4cGlyZWQuAHrCcSyKdqUqw7oQopAh7JnWPsQ8SECUYq0X+Uf5QXXYYGdldF9yZWN5Y2xlcl9tZW1iZXJfaW5mbwQYbWVtYmVyCFkNBBkBIEdldCB0aGUgaW5zdGFuY2UgYW5kIGRlbm9taW5hdGlvbiBmb3IgYSBzcGVjaWZpYyByZWN5Y2xlciBtZW1iZXIga2V5LgB6wnEsinalKsO6EKKQIeyZTyIHCkN80VRC5T6JoCpodFBpc19wYWlkX3Rva2VuX21lbWJlcgQYbWVtYmVyCFkBBNQgQ2hlY2sgd2hldGhlciBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSBpcyByZWdpc3RlcmVkLgB6wnEsinalKsO6EKKQIeyZgcJ+1T/RosXyS822HZfw6lBnZXRfcmVjeWNsZXJfbWVtYmVycwwsaW5zdGFuY2VfaWQ4FHZhbHVlFQQUaW5kZXg4UQQIkCBHZXQgdGhlIG1lbWJlcnMgb2YgYSByZWN5Y2xlciByaW5nLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZTo5qhTYGfnK+UpKKpckNxEhyZWN5Y2xlcl9yaW5nX3Jvb3QMLGluc3RhbmNlX2lkOBR2YWx1ZRUEFGluZGV4OF0NBFkBIEdldCB0aGUgcmluZy1WUkYgcm9vdCAodGhlICJyZWN5Y2xlciByb290Iikgb2YgYSByZWN5Y2xlciByaW5nLCBpZiBpdCBoYXMgYmVlbiBidWlsdC4AesJxLIp2pSrDuhCikCHsmfE4/CBo8j4A9lUO7c5iT2FsZ2V0X3BhaWRfdG9rZW5fcmluZ19tZW1iZXJzCBhwZXJpb2Q4FGluZGV4OFEECJggR2V0IHRoZSBtZW1iZXJzIG9mIGEgcGFpZCB0b2tlbiByaW5nLg0BIFJlcXVpcmVkIHRvIGJ1aWxkIHRoZSByaW5nIGNvbW1pdG1lbnQgKGFjY3VtdWxhdG9yKSBmb3IgdGhlIHByb29mLgB6wnEsinalKsO6EKKQIeyZytLGMtBJdQa4oPYY/7Krlmhpc19yZWN5Y2xlcl9hbGlhc191bmxvYWRlZBAsaW5zdGFuY2VfaWQ4FHZhbHVlFQQUaW5kZXg4FGFsaWFzCFkBDPQgQ2hlY2sgaWYgYSByZWN5Y2xlciBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVubG9hZGVkIChzcGVudCkuAPAgSWYgdGhlIHJlY3ljbGVyIGlzIG5vdCBsaXZlLCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmS6NiyqbxAjIWuSgBYhX0I9waXNfcGFpZF90b2tlbl9hbGlhc19jb25zdW1lZAwYcGVyaW9kOBRpbmRleDgUYWxpYXMIWQEMwCBDaGVjayBpZiBhIHBhaWQgdW5sb2FkIHRva2VuIGhhcyBiZWVuIGNvbnN1bWVkLgD0IElmIHRoZSBwZXJpb2QgaXMgbm90IGN1cnJlbnQsIHRoZSByZXN1bHQgaXMgbm90IHNpZ25pZmljYW50LgB6wnEsinalKsO6EKKQIeyZvxLQeog2HQ71NeyLXBnl03Bpc19mcmVlX3Rva2VuX2FsaWFzX2NvbnN1bWVkCBhwZXJpb2Q4FGFsaWFzCFkBDMAgQ2hlY2sgaWYgYSBmcmVlIHVubG9hZCB0b2tlbiBoYXMgYmVlbiBjb25zdW1lZC4A9CBJZiB0aGUgcGVyaW9kIGlzIG5vdCBjdXJyZW50LCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmZGzLy68Hyv53pXKQlnduMW4d2VpZ2h0X2Zvcl91bmxvYWRfcmVjeWNsZXJfcGF5aW5nX3VzaW5nX291dHB1dAB5AhQxASBHZXQgdGhlIHdvcnN0LWNhc2Ugd2VpZ2h0IGZvciBhIHRyYW5zYWN0aW9uIHVzaW5nIG91dHB1dC1iYXNlZCBmZWUgcGF5bWVudC4AKQEgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBtYXhpbXVtIHdlaWdodCBmb3IgdHJhbnNhY3Rpb25zIGRpc3BhdGNoZWQgd2l0aFUBIGBBc1VubG9hZFRva2VuRnJvbU91dHB1dGAsIHVzZWZ1bCBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uIHRvIGZpbmQgYSBnb29kIHZhbHVlIGZvcpQgYE1pbmltdW1FeHBvbmVudEZvck91dHB1dFVubG9hZEZlZWAuAEQAADxNZW1iZXJzTm90aWZpZXIBPE1lbWJlcnNOb3RpZmllcjgsU3Vic2NyaWJlcnMAAQQGnGENBAAEQQEgU3Vic2NyaWJlciByZWdpc3RyeSB3aXRoIHRoZWlyIHN1YnNjcmliZWQgY29sbGVjdGlvbnMgYW5kIGluaXRpYWxpemF0aW9uIHN0YXRlLgBUQ291bnRlckZvclN1YnNjcmliZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAVFN1YnNjcmlwdGlvbldoaXRlbGlzdAABBAacZQ0EABSMIFN1YnNjcmlwdGlvbnMgYW55b25lIG1heSBhY3RpdmF0ZS4ANQEgQW4gZW50cnkgaXMgY29uc3VtZWQgdGhlIGZpcnN0IHRpbWUgdGhlIHBhcmFjaGFpbiBzdWJzY3JpYmVzLCB0aHJvdWdoIGVpdGhlcj0BIGBzdWJzY3JpYmVfd2hpdGVsaXN0ZWRgIG9yIGBzdWJzY3JpYmVgLiBPbmNlIGNvbnN1bWVkLCBvbmx5IGBNYW5hZ2VPcmlnaW5gIGNhboAgc3Vic2NyaWJlIHRoYXQgcGFyYWNoYWluIGFnYWluLgBUU3Vic2NyaWJlZENvbGxlY3Rpb25zAAEEBggQBAAE2CBDb2xsZWN0aW9ucyBhdCBsZWFzdCBvbmUgc3Vic2NyaWJlciBpcyBzdWJzY3JpYmVkIHRvLgBMU2VhbGVkQmF0Y2hTZXF1ZW5jZQEAKCAAAAAAAAAAAAyIIFNlcXVlbmNlIG51bWJlciBmb3Igc2VhbGVkIGJhdGNoLvQgSW5jcmVtZW50ZWQgd2hlbiBhIGJhdGNoIGlzIHNlYWxlZCAtIHJlYWR5IGZvciBkaXN0cmlidXRpb24u8CBTZXJ2ZXMgYXMgdGhlIGJhdGNoIGlkZW50aWZpZXIgZm9yIHJlcGxheSBhbmQgZGlzdHJpYnV0aW9uLgAkUGFnZVN0YXRlAQBpDSAAAAAAAAAAAATwIFBhZ2luZyBzdGF0ZTogd3JpdGUgcGFnZSwgc2VuZCBwYWdlLCBhbmQgbGFzdCB1cGRhdGUgYmxvY2suADhQZW5kaW5nVXBkYXRlcwABDAYGBm0NEAQADHwgQ2hhbmdlZCByaW5nIHJvb3Qga2V5cywgcGFnZWQuMQEgS2V5OiAocGFnZV9pbmRleCwgaWRlbnRpZmllciwgcmluZ19pbmRleCkuIFBvcHVsYXRlZCBieSBgT25SaW5nUm9vdENoYW5nZWAsOQEgY29uc3VtZWQgYnkgYGVucXVldWVfdXBkYXRlc2Agb25lIHBhZ2UgYXQgYSB0aW1lIGZyb20gYFBhZ2VTdGF0ZTo6c2VuZF9wYWdlYC4AQFBhZ2VVcGRhdGVzQ291bnQBAQQGzQM4EAAAAAAEtCBQZXItcGFnZSBjb3VudCBvZiBlbnRyaWVzIGluIFBlbmRpbmdVcGRhdGVzLgAsUGVuZGluZ0luaXQAAQQGnHENBAAEvCBTdGF0ZSBmb3IgcGFnaW5hdGVkIHN1YnNjcmliZXIgaW5pdGlhbGl6YXRpb24uAFRDb3VudGVyRm9yUGVuZGluZ0luaXQBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABIU2VhbGVkQmF0Y2hJbmRpY2VzAAEEBgjZBQQABNwgSW5kaWNlcyBwZXIgY29sbGVjdGlvbiBmb3IgdGhlIHNlYWxlZCAoY3VycmVudCkgYmF0Y2guADBDdXJyZW50QmF0Y2gAAHUNBAAEiCBDdXJyZW50IGJhdGNoIGRpc3RyaWJ1dGlvbiBzdGF0ZS4AbFN1YnNjcmliZXJzV2l0aEN1cnJlbnRCYXRjaAABBAacEAQABOggVHJhY2tzIHdoaWNoIHN1YnNjcmliZXJzIGhhdmUgcmVjZWl2ZWQgdGhlIGN1cnJlbnQgYmF0Y2guADhMYXN0UmVwbGF5VGltZQABCAYGeQ0oBAAI0CBMYXN0IHJlcGxheSB0aW1lIHBlciAoc3Vic2NyaWJlciwgY29sbGVjdGlvbikgcGFpci7QIFVzZWQgdG8gZW5mb3JjZSBhIGNvb2xkb3duIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzLgABxQUAASEIACg4TWF4U3Vic2NyaWJlcnM4EAoAAAAEnCBNYXhpbXVtIG51bWJlciBvZiBzdWJzY3JpYmVycyBhbGxvd2VkLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAABGwgTWF4aW11bSB1cGRhdGVzIHBlciBiYXRjaC4AbE1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcjgQAwAAAATMIE1heGltdW0gY29sbGVjdGlvbnMgYSBzdWJzY3JpYmVyIGNhbiBzdWJzY3JpYmUgdG8uADhNYXhDb2xsZWN0aW9uczgQZAAAAASQIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMuAExVcGRhdGVUcmlnZ2VyQmxvY2tzOBABAAAABMQgTWluaW11bSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gdXBkYXRlIGJhdGNoZXMuAFhVcGRhdGVUcmlnZ2VyVGhyZXNob2xkOBABAAAABOwgTWluaW11bSBudW1iZXIgb2YgdXBkYXRlcyB0byB0cmlnZ2VyIGltbWVkaWF0ZSBiYXRjaCBzZW5kLgBkUmVxdWVzdFJlcGxheVJlbW90ZVdlaWdodHkCDEGcAAQlASBQZXItaW5kZXggd2VpZ2h0IHN1cmNoYXJnZSBmb3IgcmVtb3RlIGV4ZWN1dGlvbiBvbiB0aGUgc3Vic2NyaWJlciBjaGFpbi4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE3CBNaW5pbXVtIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgcnVucy4ARFN0dWNrQmF0Y2hUaW1lb3V0OBBkAAAABOQgTnVtYmVyIG9mIGJsb2NrcyBhZnRlciB3aGljaCBhIHN0dWNrIGJhdGNoIGlzIGFiYW5kb25lZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAEWQEgQ29vbGRvd24sIGluIHNlY29uZHMsIGJldHdlZW4gcmVwbGF5IHJlcXVlc3RzIGZvciB0aGUgc2FtZSBzdWJzY3JpYmVyIGFuZCBjb2xsZWN0aW9uLgABfQ0AAABFAAAcQWlyZHJvcAEcQWlyZHJvcBgYRXZlbnRzAAEEBQiBDQQABNggUmVnaXN0ZXJlZCBhaXJkcm9wIGV2ZW50cywga2V5ZWQgYnkgdGhlaXIgaWRlbnRpZmllci4AOEFjdGlvblNjaGVkdWxlAAEIBgaJDRAEAAhdASBQZW5kaW5nIGxpZmVjeWNsZSBhY3Rpb25zIGZvciByZWdpc3RlcmVkIGV2ZW50cywgb3JkZXJlZCBieSB0aGUgdGltZXN0YW1wIGF0IHdoaWNoIHRoZWggYWN0aW9uIHNob3VsZCB0YWtlIHBsYWNlLgA0UmVnaXN0cmF0aW9ucwABCAUGkQ0tCAQACA0BIFBlci1ldmVudCBwYXJ0aWNpcGFudCByZWdpc3RyYXRpb25zLCBrZXllZCBieSAzMi1ieXRlIGVudHJvcHkgc2xvdJggaW4gYmlnLWVuZGlhbiBvcmRlciB1bmRlciBgSWRlbnRpdHlgLgAcV2lubmVycwABCAUClQ0pCAQACHEBIFdpbm5lcnMgZm9yIGFuIGV2ZW50LCBrZXllZCBieSB0aGUgZXZlbnQgaWRlbnRpZmllciBhbmQgdGhlaXIgcmVnaXN0cmF0aW9uIGVudHJ5LiBUaGlzIG1hcHPoIHRvIHRoZSBwYXJ0aWNpcGFudCdzIHRpY2tldCBmb3Igb2ZmY2hhaW4gbG9va3VwIHB1cnBvc2VzLgAwRXZlbnRFbnRyb3B5AAEEBQgpCAQACF0BIEVudHJvcHkgc2VlZCBjYXB0dXJlZCBhdCBkcmF3IHRpbWUsIHBlciBldmVudC4gVGhpcyBzZXJ2ZXMgYXMgYSBwYXJ0aXRpb24gcG9pbnQgaW4gdGhl8CBwYXJ0aWNpcGF0aW9uIHRpY2tldCBvcmRlcmVkIGxpc3QgaW4gb3JkZXIgdG8gcGljayB3aW5uZXJzLgA8U3VwcG9ydGVkQXNzZXRzAAEEBXEBRQEEABBlASBQZXItYXNzZXQgZW5hYmxlbWVudCBnYXRlLiBBbiBhc3NldCBpcyB1c2FibGUgZm9yIHNjaGVkdWxpbmcgZXZlbnRzIGlmZiBpdCBpcyBwcmVzZW50IGluZQEgdGhpcyBtYXA7IHRoZSBzdG9yZWQgdmFsdWUgaXMgdGhlIGFtb3VudCB0aGUgcGFsbGV0IHRyYW5zZmVycmVkIGludG8gaXRzIHBvdCB0byBrZWVwIHRoZVUBIHBvdCdzIGFzc2V0IGFjY291bnQgYWxpdmUgKHRoZSBhc3NldCdzIEVEIGF0IHRoZSB0aW1lIG9mIGVuYWJsaW5nKS4gYGVuYWJsZV9hc3NldGAgL8ggYGRpc2FibGVfYXNzZXRgIGFyZSB0aGUgb25seSB3YXlzIHRvIG11dGF0ZSB0aGlzLgAB3QUAASUIABQgUGFsbGV0SWTFCSBwb3AvYWRycATAIFBhbGxldCBpZCB1c2VkIHRvIGRlcml2ZSB0aGUgcHJpemUgcG90IGFjY291bnQuAChDbGVhckxpbWl0OBBkAAAACNQgTWF4aW11bSBudW1iZXIgb2YgcmVnaXN0cmF0aW9uIGVudHJpZXMgcHJvY2Vzc2VkIHBlcuggYGNsZWFuX3VwX3tyZWdpc3RyYXRpb25zLHdpbm5lcnN9X2F1dGhvcml6ZWRgIGludm9jYXRpb24uACREcmF3TGltaXQ4EGQAAAAEMQEgTWF4aW11bSBudW1iZXIgb2Ygd2lubmVyIHNsb3RzIGluc2VydGVkIHBlciBgZHJhd193aW5uZXJzX2F1dGhvcml6ZWRgIGNhbGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABNggSG93IGZyZXF1ZW50bHkgdGhlIG9mZmNoYWluIHdvcmtlciBmaXJlcyAoaW4gYmxvY2tzKS4AOGFpcmRyb3BfcG90X2lkBIBtb2RscG9wL2FkcnAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0IEFjY291bnQgaWQgb2YgdGhlIHByaXplIHBvdC4AAZkNAAAARgAAGEhvbm91cgEYSG9ub3VyDBhQb2ludHMAAQQCCJ0NBAAQmCBQb2ludHMgdGhhdCBoYXZlIGJlZW4gdXNlZCBieSB2b3RlcnMuAHUBIFJlY29yZHMgaW4gW2BQb2ludHNgXSB0cmFjayB1c2VkIHBvaW50cyB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyBhbmQgZW5mb3JjZSByYXRlLWxpbWl0aW5neCBiYXNlZCBvbiB0aGUgbGFzdCB1c2FnZSB0aW1lLgAUVm90ZXMAAQQCCBAEABB8IFZvdGVzIHRoYXQgaGF2ZSBiZWVuIGJlc3Rvd2VkLgBVASBQcmV2ZW50cyBkb3VibGUtdm90aW5nIG9uIHRoZSBzYW1lIHN1YmplY3QgYnkgdGhlIHNhbWUgdm90ZXIsIGFzIFtgU3ViamVjdEFsaWFzYF0gaXPQIHVuaXF1ZWx5IGRlcml2ZWQgZnJvbSBbYFN1YmplY3RJZGBdIGZvciBlYWNoIHZvdGVyLgAUVGFsbHkAAQQCCDUIBAAEMQEgQWJzb2x1dGUgaG9ub3VyIHNjb3JlIG9mIGEgc3ViamVjdC4gSW5pdGlhbGl6ZWQgdG8gLTEgdG8gb2Zmc2V0IHNlbGYtdm90ZXMuAAHlBQABMQgACExQb2ludEZyZWV6ZUR1cmF0aW9uKCCAUQEAAAAAAAQFASBEdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSBhIHBvaW50IGNhbiBiZSByZXVzZWQuADRDYWxsTW9ydGFsaXR5KCAsAQAAAAAAAAQ9ASBEdXJhdGlvbiBpbiBzZWNvbmRzIGEgYGJlc3Rvd2AgY2FsbCByZW1haW5zIHZhbGlkIGFmdGVyIGl0cyBgY2FsbF92YWxpZF9mcm9tYC4AAaENAAAARwAAOFBlb3BsZUFpcmRyb3BzAThQZW9wbGVBaXJkcm9wcwg0TmV4dERyYXdJbmRleAEAKCAAAAAAAAAAAAQVASBJbmRleCBvZiB0aGUgbmV4dCBkcmF3IHRvIHNjaGVkdWxlLiBGZWVkcyBbYFBhbGxldDo6ZHJhd19ldmVudF9pZGBdLgAkRHJhd1NhbHRzAAEEBQilDQQAEGkBIFBlci1kcmF3IHNsb3Qgc2FsdCwgY2FwdHVyZWQgZnJvbSB0aGUgcmFuZG9tbmVzcyBzb3VyY2UgYXQgc2NoZWR1bGluZyB0aW1lLCB0b2dldGhlciB3aXRoWQEgdGhlIGRyYXcncyBlbmQgdGltZS4gVGhlIHNhbHQgaXMgb25seSByZWFkIGR1cmluZyByZWdpc3RyYXRpb24sIHdoaWNoIGNsb3NlcyBzdHJpY3RseWUBIGJlZm9yZSB0aGUgZW5kIHRpbWUsIHNvIGFuIGVudHJ5IHdob3NlIGVuZCB0aW1lIGhhcyBwYXNzZWQgaXMgZGVhZCBhbmQgaXMgcmVtb3ZlZCBieSB0aGXQIG9mZmNoYWluIHdvcmtlciB2aWEgW2BQYWxsZXQ6OmNsZWFuX3VwX2RyYXdfc2FsdGBdLgAB8QUAATkIAAxATWF4U2NoZWR1bGVCYXRjaDgQEAAAAAT0IE1heGltdW0gbnVtYmVyIG9mIGRyYXdzIHNjaGVkdWxlZCBwZXIgYHNjaGVkdWxlX2RyYXdzYCBjYWxsLgBATWF4UmVnaXN0ZXJCYXRjaDgQEAAAAATwIE1heGltdW0gbnVtYmVyIG9mIGRyYXdzIHJlZ2lzdGVyZWQgZm9yIHBlciBgcmVnaXN0ZXJgIGNhbGwuAFxwZW9wbGVfYWlyZHJvcHNfY29udGV4dAiAHyMbgIKkblJgh9mPUQ5qjDBfxvKLExcOpiFPuDFeKW8EDQEgVGhlIGNvbnRleHQgdXNlZCB0byBhdXRoZW50aWNhdGUgcGVvcGxlIHBhcnRpY2lwYXRpbmcgaW4gYWlyZHJvcHMuAAGpDQAIOEFpcmRyb3BBc3NldElkcQEEkCBBc3NldCBpZCB1c2VkIGJ5IFtgU2VsZjo6QWlyZHJvcGBdLkxBaXJkcm9wQXNzZXRCYWxhbmNlRQEEpCBBc3NldCBiYWxhbmNlIHVzZWQgYnkgW2BTZWxmOjpBaXJkcm9wYF0uAEgAAFBNdWx0aUJsb2NrTWlncmF0aW9ucwFQTXVsdGlCbG9ja01pZ3JhdGlvbnMIGEN1cnNvcgAACQYEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQFHQYQBAAQtCBTZXQgb2YgYWxsIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCBtaWdyYXRpb25zLgBxASBUaGlzIGlzIHVzZWQgYXMgYmxhY2tsaXN0LCB0byBub3QgcmUtZXhlY3V0ZSBtaWdyYXRpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiByZW1vdmVkIGZyb20gdGhlMQEgY29kZWJhc2UgeWV0LiBHb3Zlcm5hbmNlIGNhbiByZWd1bGFybHkgY2xlYXIgdGhpcyBvdXQgdmlhIGBjbGVhcl9oaXN0b3JpY2AuAAEBBgABPQgACDBDdXJzb3JNYXhMZW44EAAAAQAQpCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBjdXJzb3IuAGUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYSBjdXJzb3Igd2l0aCBNRUwJASBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgBASWRlbnRpZmllck1heExlbjgQAAEAABC0IFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGlkZW50aWZpZXIuAFUBIEEgZ29vZCBkZWZhdWx0IG5lZWRzIHRvIHNlbGVjdGVkIHN1Y2ggdGhhdCBubyBtaWdyYXRpb24gd2lsbCBldmVyIGhhdmUgYW4gaWRlbnRpZmllci0BIHdpdGggTUVMIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAAGtDQAAEAsgGZrONWTQlk4sTUqbpGmUTbz/amzhpNCyfG/MAtJMOG9uZ29pbmdfc3RhdHVzALENBKggUmV0dXJucyB0aGUgb25nb2luZyBzdGF0dXMgb2YgbWlncmF0aW9ucy4ACyAZms41ZNCWTixNSpukaV69d2yxXZuRLieNTS1ixaEgcHJvZ3Jlc3MAtQ0QCQEgUmV0dXJucyBwcm9ncmVzcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24sIGlmIGFueS4AUQEgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBtaWdyYXRpb24ncyBwcm9ncmVzcywdASBpbmNsdWRpbmcgdGhlIG51bWJlciBvZiBzdGVwcyBjb21wbGV0ZWQgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3RlcHMuAAsgGZrONWTQlk4sTUqbpGlGr0vOxvNae7vunZ/BCVvhRGFmZmVjdGVkX3ByZWZpeGVzADQMAQEgUmV0dXJucyB0aGUgc3RvcmFnZSBwcmVmaXhlcyBhZmZlY3RlZCBieSB0aGUgY3VycmVudCBtaWdyYXRpb24uABkBIENhbiBiZSBlbXB0eSBpZiB0aGUgbWlncmF0aW9uIGRvZXMgbm90IGtub3cgb3IgdGhlcmUgYXJlIG5vIHByZWZpeGVzLgALIBmazjVk0JZOLE1Km6RpqkwooG8ZiEW9G7KexiBd3RhzdGF0dXMAvQ0E8CBSZXR1cm5zIHRoZSBjb21wcmVoZW5zaXZlIHN0YXR1cyBvZiBtdWx0aS1ibG9jayBtaWdyYXRpb25zLgBiAAAIBAUAIHkEBABYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhgVW5pdFRyYW5zYWN0aW9uRXh0ZW5zaW9uEBBQVmVyaWZ5TXVsdGlTaWduYXR1cmUpBhAgQXNQZXJzb24tBhBcQXNQcm9vZk9mSW5rUGFydGljaXBhbnQ5BhBIU2NvcmVBc1BhcnRpY2lwYW50RQYQNEdhbWVBc0ludml0ZWRRBhA4UGVvcGxlTGl0ZUF1dGhdBhAgQXNNZW1iZXJpBhAkQXNDb2luYWdldQYQLEFzUmVzb3VyY2VzhQYQKEhvbm91ckF1dGiRBhA0QXV0aG9yaXplQ2FsbJ0GEDxSZXN0cmljdE9yaWdpbnOhBhBIQ2hlY2tOb25aZXJvU2VuZGVypQYQQENoZWNrU3BlY1ZlcnNpb26pBjg4Q2hlY2tUeFZlcnNpb26tBjgwQ2hlY2tHZW5lc2lzsQY8OENoZWNrTW9ydGFsaXR5tQY8KENoZWNrTm9uY2W9BhAsQ2hlY2tXZWlnaHTBBhBQQ2hhcmdlQXNzZXRUeFBheW1lbnTFBhBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgDBDQyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAHQoEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQhMcmVsYXlfcGFyZW50X29mZnNldAA4DBUBIEZldGNoIHRoZSByZWxheSBwYXJlbnQgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uAF0BIFRoaXMgZGV0ZXJtaW5lcyBob3cgbWFueSBibG9ja3MgYmVoaW5kIHRoZSByZWxheSBjaGFpbiB0aXAgdGhlIHJlbGF5IHBhcmVudCBzaG91bGQgYmUuAFhtYXhfY2xhaW1fcXVldWVfb2Zmc2V0AAyI6CBNYXhpbXVtIGNsYWltIHF1ZXVlIG9mZnNldCBmb3IgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eS4AOQEgQm91bmRzIGhvdyBmYXIgImludG8gdGhlIGZ1dHVyZSIgYSBjYW5kaWRhdGUgbWF5IGxvb2sgaW4gdGhlIGNsYWltIHF1ZXVlIHdoZW5RASBzZWxlY3RpbmcgYSBjb3JlLiBUaGUgZWZmZWN0aXZlIGNsYWltIHF1ZXVlIGRlcHRoIGRlcGVuZHMgb24gdGhlIGNhbmRpZGF0ZSB2ZXJzaW9uOgBhASAtICoqVjEvVjIgY2FuZGlkYXRlcyoqOiB0aGUgY2xhaW0gcXVldWUgaXMgbG9va2VkIHVwIGF0IHRoZSBjYW5kaWRhdGUncyBgcmVsYXlfcGFyZW50YCxJASAgIHdoaWNoIGlzIGByZWxheV9wYXJlbnRfb2Zmc2V0YCBibG9ja3MgYmVoaW5kIHRoZSByZWxheS1jaGFpbiB0aXAuIFRoZSBlZmZlY3RpdmXsICAgZGVwdGggaXMgYHJlbGF5X3BhcmVudF9vZmZzZXQgKyBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0YC4AFQEgLSAqKlYzIGNhbmRpZGF0ZXMqKjogdGhlIGNsYWltIHF1ZXVlIGlzIGxvb2tlZCB1cCBhdCB0aGUgY2FuZGlkYXRlJ3NdASAgIGBzY2hlZHVsaW5nX3BhcmVudGAg4oCUIHRoZSByZWxheS1jaGFpbiBibG9jayBvZiB0aGUgKmxhc3QgZmluaXNoZWQqIHNsb3QsIGRlY291cGxlZCUBICAgZnJvbSB0aGUgZXhlY3V0aW9uLWNvbnRleHQgYHJlbGF5X3BhcmVudGAuIFRoZSBlZmZlY3RpdmUgZGVwdGggaXMganVzdHAgICBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAuACEBIENvbGxhdG9ycyBzZWxlY3QgYSBjb3JlIHZpYSBhbiBvZmZzZXQgaW4gYFswLCBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0XWAuAFEBIC0gKipWMiBjYW5kaWRhdGVzKio6IGBtYXhfY2xhaW1fcXVldWVfb2Zmc2V0ID0gMWAgaXMgc3VmZmljaWVudC4gVGhlIGNsYWltIHF1ZXVlIGlzWQEgICBsb29rZWQgdXAgYXQgYHJlbGF5X3BhcmVudGAsIHdoaWNoIHNpdHMgYmVoaW5kIHRoZSB0aXAuIE9mZnNldCAwIGNvdmVycyBzeW5jaHJvbm91c1UBICAgYmFja2luZyBpbiB0aGUgbmV4dCByZWxheSBibG9jazsgb2Zmc2V0IDEgY292ZXJzIGFzeW5jaHJvbm91cyBiYWNraW5nIGluIHRoZSByZWxheVAgICBibG9jayBhZnRlciB0aGF0LgAtASAtICoqVjMgY2FuZGlkYXRlcyoqOiBvZmZzZXQgMCBpcyBub3QgcmVhY2hhYmxlIOKAlCB0aGUgYHNjaGVkdWxpbmdfcGFyZW50YFUBICAgaXMgdXN1YWxseSB0aGUgbGVhZiB3aGVuIHBpY2tlZCwgYnV0IGl0cyBjaGlsZCBpcyBhbHJlYWR5IGJlaW5nIGJ1aWx0LCBzbyB0aGVyZSBpczkBICAgbm8gb3Bwb3J0dW5pdHkgdG8gbGFuZCBpbiB0aGUgbmV4dCByZWxheSBibG9jay4gT2Zmc2V0IDEgaXMgcmVhY2hhYmxlIHVuZGVyVQEgICBzeW5jaHJvbm91cy1iYWNraW5nIHNlbWFudGljcy4gRm9yIGVsYXN0aWMgc2NhbGluZyB0aGUgbGFzdCBibG9jayBpbiB0aGUgYnVuZGxlIGlzNQEgICBidWlsdCBuZWFyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2xvdCwgd2hpY2ggbWFrZXMgb2Zmc2V0IDEgdG9vIHRpZ2h0IOKAlFUBICAgYG1heF9jbGFpbV9xdWV1ZV9vZmZzZXQgPSAyYCBpcyB0aGUgbWluaW11bSBjYXAgdGhhdCBrZWVwcyBlbGFzdGljIHNjYWxpbmcgdmlhYmxlLgBVASBOb3RlOiB0aGlzIG1ldGhvZCB3YXMgYWRkZWQgaW4gYGFwaV92ZXJzaW9uID0gMmAuIENvbGxhdG9ycyBjYWxsaW5nIG9uIHJ1bnRpbWVzIHRoYXRNASBvbmx5IGltcGxlbWVudCBgYXBpX3ZlcnNpb24gPSAxYCBvZiBbYFJlbGF5UGFyZW50T2Zmc2V0QXBpYF0gd2lsbCByZWNlaXZlIGFuIGVycm9ySQEgYW5kIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBzZW5zaWJsZSBkZWZhdWx0IChjdXJyZW50IGNvbGxhdG9yIGRlZmF1bHRzOiBgMWAgb24gdGhlhCBWMyBwYXRoLCBgMGAgb24gdGhlIFYxL1YyIHBhdGgpLgD4IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4APFEBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3NlbiBhbmQgaG93IGNsYWltIHF1ZXVlYCBvZmZzZXRzIGFyZSBkZXRlcm1pbmVkLgBZASBBIGxhcmdlciByZWxheSBwYXJlbnQgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mUQEgdGhlIHJlbGF5IGNoYWluLCBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUkIHJ1bnRpbWUuAFkBIFRoZSBtYXggY2xhaW0gcXVldWUgb2Zmc2V0IGRldGVybWluZXMgaG93IGZhciAiaW50byB0aGUgZnV0dXJlIiBjb2xsYXRvcnMgdGFyZ2V0IHdoZW5RASBzZWxlY3RpbmcgY29yZXMgZnJvbSB0aGUgY2xhaW0gcXVldWUuIFRoaXMgcHJvdmlkZXMgYXN5bmMgYmFja2luZyBmbGV4aWJpbGl0eSB3aGlsZaggcHJldmVudGluZyBjb2xsYXRvcnMgZnJvbSBza2lwcGluZyBzbG90cy74IFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9pc3N1ZXMvODg5Mz4ARCBWZXJzaW9uIGhpc3Rvcnk69CAtIFZlcnNpb24gMTogSW5pdGlhbCB2ZXJzaW9uIHdpdGggYHJlbGF5X3BhcmVudF9vZmZzZXRgIG9ubHnMIC0gVmVyc2lvbiAyOiBBZGRlZCBgbWF4X2NsYWltX3F1ZXVlX29mZnNldGAgbWV0aG9kCABYU2NoZWR1bGluZ1YzRW5hYmxlZEFwaQRUc2NoZWR1bGluZ192M19lbmFibGVkAFkBBPQgUmV0dXJucyB0cnVlIGlmIFYzIHNjaGVkdWxpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBwYXJhY2hhaW4uACTwIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgd2hldGhlciBWMyBzY2hlZHVsaW5nIGlzIGVuYWJsZWQuAOQgV2hlbiBlbmFibGVkLCBjb2xsYXRvcnMgbXVzdCBwcm9kdWNlIFYzIGNhbmRpZGF0ZXMgd2l0aDrkIC0gUGFyYWNoYWluQmxvY2tEYXRhOjpWMiBjb250YWluaW5nIHRoZSBzY2hlZHVsaW5nIHByb29mvCAtIENhbmRpZGF0ZURlc2NyaXB0b3JWMyB3aXRoIHNjaGVkdWxpbmdfcGFyZW50AB0BIFRoaXMgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggcmVsYXkgcGFyZW50IG9mZnNldCAoYnVpbGRpbmcgb24gb2xkZXIdASByZWxheSBwYXJlbnRzKS4gQSBwYXJhY2hhaW4gZW5hYmxlcyBWMyB3aGVuIGl0IHdhbnRzIGxvdy1sYXRlbmN5IGJsb2NrnCBwcm9kdWN0aW9uIHdpdGggdGhlIGR1YWwtcGFyZW50IG1vZGVsLgQAYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g8EHNsb3QhClkBKDkBIFdoZXRoZXIgaXQgaXMgbGVnYWwgdG8gZXh0ZW5kIHRoZSBjaGFpbiwgYXNzdW1pbmcgdGhlIGdpdmVuIGJsb2NrIGlzIHRoZSBtb3N0NQEgcmVjZW50bHkgaW5jbHVkZWQgb25lIGFzLW9mIHRoZSByZWxheSBwYXJlbnQgdGhhdCB3aWxsIGJlIGJ1aWx0IGFnYWluc3QsIGFuZHAgdGhlIGdpdmVuIHJlbGF5IGNoYWluIHNsb3QuAFEBIFRoaXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9naWMgdGhlIHJ1bnRpbWUgdXNlcyB3aGVuIHZhbGlkYXRpbmcgYmxvY2tzIHRvOCBhdm9pZCBpc3N1ZXMuAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBlbXB0eSwgaS5lLiBgaW5jbHVkZWRfaGFzaCA9PSBhdGAsIHdoZXJlIGF0IGlzIHRoZSBibG9ja2EBIHdob3NlIHN0YXRlIHdlIGFyZSBxdWVyeWluZyBhZ2FpbnN0LCB0aGlzIG11c3QgYWx3YXlzIHJldHVybiBgdHJ1ZWAgYXMgbG9uZyBhcyB0aGUgc2xvdLwgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW5jbHVkZWQgYmxvY2sgaXRzZWxmLgA0NQEgVGhpcyBydW50aW1lIEFQSSBpcyB1c2VkIHRvIGluZm9ybSBwb3RlbnRpYWwgYmxvY2sgYXV0aG9ycyB3aGV0aGVyIHRoZXkgd2lsbCUBIGhhdmUgdGhlIHJpZ2h0IHRvIGF1dGhvciBhdCBhIHNsb3QsIGFzc3VtaW5nIHRoZXkgaGF2ZSBjbGFpbWVkIHRoZSBzbG90LgB1ASBJbiBwYXJ0aWN1bGFyLCB0aGlzIEFQSSBhbGxvd3MgQXVyYS1iYXNlZCBwYXJhY2hhaW5zIHRvIHJlZ3VsYXRlIHRoZWlyICJ1bmluY2x1ZGVkIHNlZ21lbnQiLG0BIHdoaWNoIGlzIHRoZSBzZWN0aW9uIG9mIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiB3aGljaCBoYXMgbm90IHlldCBiZWVuIG1hZGUgYXZhaWxhYmxlIGluIHRoZTQgcmVsYXkgY2hhaW4uAGEBIFdoZW4gdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBpcyBzaG9ydCwgQXVyYSBjaGFpbnMgd2lsbCBhbGxvdyBhdXRob3JzIHRvIGNyZWF0ZSBtdWx0aXBsZV0BIGJsb2NrcyBwZXIgc2xvdCBpbiBvcmRlciB0byBidWlsZCBhIGJhY2tsb2cuIFdoZW4gaXQgaXMgc2F0dXJhdGVkLCB0aGlzIEFQSSB3aWxsIGxpbWl0qCB0aGUgYW1vdW50IG9mIGJsb2NrcyB0aGF0IGNhbiBiZSBjcmVhdGVkLgAkIENoYW5nZXM6kQEgLSBWZXJzaW9uIDI6IFVwZGF0ZSB0byBgY2FuX2J1aWxkX3Vwb25gIHRvIHRha2UgYSByZWxheSBjaGFpbiBgU2xvdGAgaW5zdGVhZCBvZiBhIHBhcmFjaGFpbiBgU2xvdGAuCAAQQ29yZQwcdmVyc2lvbgB5CASQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuADRleGVjdXRlX2Jsb2NrBBRibG9ja8UNEARkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLgBAaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyXNENBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4ABCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuFAAgTWV0YWRhdGEMIG1ldGFkYXRhANUNBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLgBMbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbjjZDRCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuAERtZXRhZGF0YV92ZXJzaW9ucwBpBAykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZN0NFGlucHV0GOENBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljlQjpDRBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAFwEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudPkNpQgEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrxQ0QZGF0YfkNCQ4EVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZQ0OCHR4lQgoYmxvY2tfaGFzaDwRDiRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyXBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkJQYZDhwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQYHQ4MmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dJUIDGxlbjgpDgAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHSVCAxsZW44LQ4AAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHR5AkUBAABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOEUBAAAAEABkVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaRA8cXVlcnlfY2FsbF9pbmZvCBBjYWxsIAxsZW44KQ4ESQEgUXVlcnkgaW5mb3JtYXRpb24gb2YgYSBkaXNwYXRjaCBjbGFzcywgd2VpZ2h0LCBhbmQgZmVlIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAFhxdWVyeV9jYWxsX2ZlZV9kZXRhaWxzCBBjYWxsIAxsZW44LQ4EtCBRdWVyeSBmZWUgZGV0YWlscyBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0eQJFAQQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhFAQQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uODkOFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2U5AkUOFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodHkCFGFzc2V0sQNJDhjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9u7QEcbWVzc2FnZTkCIGFzc2V0X2lksQNNDihgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW7RAxBjYWxsIExyZXN1bHRfeGNtc192ZXJzaW9uOFEOBEQgRHJ5IHJ1biBjYWxsIFYyLgAsZHJ5X3J1bl94Y20IPG9yaWdpbl9sb2NhdGlvbu0BDHhjbYEDfQ4EUCBEcnkgcnVuIFhDTSBwcm9ncmFtACSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS4IAFBMb2NhdGlvblRvQWNjb3VudEFwaQRAY29udmVydF9sb2NhdGlvbgQgbG9jYXRpb27tAYUOBJAgQ29udmVydHMgYExvY2F0aW9uYCB0byBgQWNjb3VudElkYC4ABA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLgQAKE1vYlJ1bGVBcGkEIHZvdGVkX29uCBR2b3RlcggkZG9uZV9vbmx5WQFpBAxZASBSZXR1cm5zIGEgbGlzdCBvZiBjYXNlcyB3aGVyZSB0aGUgdXNlciBoYXMgYSB2b3RlIHN0b3JlZCBvbiBjaGFpbi4gSWYgdGhlIGBkb25lX29ubHlgVQEgZmxhZyBpcyBzZXQsIG9ubHkgY2FzZXMgdGhhdCBhcmUgZG9uZSBhbmQgcmVhZHkgdG8gYmUgY2xhaW1lZCB3aWxsIGJlIHJldHVybmVkLiBUaGlzBQEgZnVuY3Rpb24gZG9lcyBub3QgdGFrZSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHZvdGUgaW50byBhY2NvdW50LgAEtCBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSByZXdhcmRzIGZvciBtb2IgY3JlZGl0LgQANFByb29mT2ZJbmtBcGkERGNhbmRpZGFjeV9kZXBvc2l0AEUBBNQgUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gYmVjb21lIGEgY2FuZGlkYXRlLgAE7CBUaGUgQVBJIHRvIHF1ZXJ5IHRoZSBkZXBvc2l0IGZvciBhIHByb29mIG9mIGluayBjYW5kaWRhY3kuBAA0UGFsbGV0R2FtZUFwaQQwcGxheV9kZXBvc2l0AEUBBLggUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gcGxheSBhIGdhbWUuAASsIFRoZSBBUEkgdG8gcXVlcnkgdGhlIGRlcG9zaXQgZm9yIGdhbWVwbGF5LgQANE5mdENyZWRpdHNBcGkMWG5mdF9jbGFpbV9jcmVkaXRfcm9vdHMEIGNsYWltYW50CQWNDhxZASBSZXR1cm5zIHRoZSBORlQgY2xhaW0gY3JlZGl0IHJvb3RzIGBjbGFpbWFudGAgaGFzIGF0IGxlYXN0IG9uZSBjcmVkaXQgdW5kZXIsIGtleWVkIGJ5CQEgdGhlIGJsb2NrIHRoYXQgY29tbWl0dGVkIHRob3NlIGNyZWRpdHMsIGluIGFzY2VuZGluZyBibG9jayBvcmRlci4AVQEgQSB3YWxsZXQgc3RhcnRzIGhlcmUgYW5kIGFza3MgYG5mdF9jbGFpbV9jcmVkaXRfcHJvb2ZzYCBhYm91dCBlYWNoIGJsb2NrIHJldHVybmVkLiBBWQEgYmxvY2sgZ2V0cyBpdHMgcm9vdCBvbmx5IGluIHRoZSBibG9jayBhZnRlciBpdCwgc28gdGhlIG5ld2VzdCBvbmUgYSBjbGFpbWFudCdzIGNyZWRpdFkBIGxhbmRlZCBpbiBpcyBsZWZ0IG91dCB1bnRpbCB0aGVuLCBhbmQgYSBjcmVkaXQgdGhhdCBzcGlsbGVkIGludG8gYSBsYXRlciBidWZmZXIgd2FpdHNgIGZvciB0aGF0IGJ1ZmZlcidzIHRyZWUuAFxuZnRfY2xhaW1fY3JlZGl0X3Byb29mcwgodHJlZV9ibG9jazggY2xhaW1hbnQJBZUOOFkBIFJldHVybnMgdGhlIGluY2x1c2lvbiBwcm9vZiBvZiBlYWNoIGNyZWRpdCBvZiBgY2xhaW1hbnRgIHRoYXQgYHRyZWVfYmxvY2tgIGNvbW1pdHRlZCzEIHdoaWNoIGlzIHdoYXQgQXNzZXQgSHViIHZlcmlmaWVzIGEgbWludCBhZ2FpbnN0LgBhASBFdmVyeXRoaW5nIGNvbWVzIGZyb20gY2hhaW4gc3RhdGUsIHNvIGEgY2FsbGVyIG5lZWRzIG5vIGV2ZW50IGhpc3Rvcnk6IHRoZSBwcm9vZnMgY2FycnlhASB0aGUgY3JlZGl0LCBpdHMgbGVhZiBpbmRleCBhbmQgdGhlIHNpYmxpbmcgaGFzaGVzLiBFbXB0eSBpZiB0aGUgYmxvY2sgY29tbWl0dGVkIG5vdGhpbmdEIG9mIGBjbGFpbWFudGAncy4AOQEgT25seSBibG9ja3Mgd2hvc2UgYXdhcmRzIGFyZSBzdGlsbCByZXRhaW5lZCBjYW4gYmUgc2VydmVkLiBBbiBvbGRlciBvbmUgZ2l2ZXMBASBgTmZ0Q2xhaW1DcmVkaXRQcm9vZkVycm9yOjpBd2FyZHNQcnVuZWRgLCBhbmQgaGFzIHRvIGdvIHRocm91Z2iYIGBuZnRfY2xhaW1fY3JlZGl0X3Byb29mX2Zyb21fYXdhcmRzYC4AYQEgT25lIGNhbGwgcmVidWlsZHMgdGhlIGJsb2NrJ3MgdHJlZSBvbmNlLCBob3dldmVyIG1hbnkgcHJvb2ZzIGl0IHJldHVybnMsIHNvIHRoZSBjb3N0IGlzYQEgYm91bmRlZCBieSB0aGUgcGFsbGV0J3MgYEFXQVJEU19QRVJfVFJFRWAuIEEgbm9kZSBzZXJ2ZXMgdGhpcyB1bm1ldGVyZWQsIHNvIGFuIG9wZXJhdG9yBQEgZXhwb3NpbmcgaXQgcHVibGljbHkgbXVzdCByYXRlLWxpbWl0IFJQQyBhcyBmb3IgYW55IHJ1bnRpbWUgQVBJLgCIbmZ0X2NsYWltX2NyZWRpdF9wcm9vZl9mcm9tX2F3YXJkcwwodHJlZV9ibG9jazgYYXdhcmRzLQwobGVhZl9pbmRleDipDihBASBSZXR1cm5zIHRoZSBpbmNsdXNpb24gcHJvb2Ygb2YgdGhlIGNyZWRpdCBhdCBgbGVhZl9pbmRleGAgb2YgYHRyZWVfYmxvY2tgLCBmcm9thCBgYXdhcmRzYCBzdXBwbGllZCBieSB0aGUgY2FsbGVyLgBhASBUaGUgZmFsbGJhY2sgZm9yIGEgYmxvY2sgd2hvc2UgYXdhcmRzIGFyZSBubyBsb25nZXIgcmV0YWluZWQ6IGBhd2FyZHNgIGFyZSBldmVyeSBjcmVkaXRRASB0aGUgYmxvY2sgY29tbWl0dGVkLCBpbiBsZWFmIG9yZGVyLCByZWJ1aWx0IGZyb20gdGhlIGBOZnRDbGFpbUNyZWRpdEF3YXJkZWRgIGV2ZW50c1kBIG5hbWluZyB0aGF0IGJsb2NrLCB3aGljaCBhcmUgZW1pdHRlZCBpbiBpdCBvciBpbiBhbiBlYXJsaWVyIG9uZS4gTGVhZiBoYXNoaW5nIGFuZCB0aGXkIHRyZWUgbGF5b3V0IHN0YXkgaW4gdGhlIHJ1bnRpbWUsIGFuZCB0aGUgcmVjb21wdXRlZCByb290TQEgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByZWNvcmRlZCBvbmUsIHNvIGF3YXJkcyB0aGF0IGFyZSBpbmNvbXBsZXRlIG9yIG91dCBvZiBvcmRlclkBIGZhaWwgd2l0aCBgTmZ0Q2xhaW1DcmVkaXRQcm9vZkVycm9yOjpSb290TWlzbWF0Y2hgIHJhdGhlciB0aGFuIHlpZWxkaW5nIGEgcHJvb2YgQXNzZXQ0IEh1YiByZWplY3RzLgAE0CBUaGUgQVBJIGEgd2FsbGV0IG1pbnRzIGFuIE5GVCBjbGFpbSBjcmVkaXQgdGhyb3VnaC4EAFBDb2xsZWN0Q29sbGF0aW9uSW5mbwRYY29sbGVjdF9jb2xsYXRpb25faW5mbwQYaGVhZGVyXK0OEJwgQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4A9CBUaGUgZ2l2ZW4gYGhlYWRlcmAgaXMgdGhlIGhlYWRlciBvZiB0aGUgYnVpbHQgYmxvY2sgZm9yIHRoYXSoIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSBjb2xsYXRpb24gaW5mbyBmb3IuABTYIFJ1bnRpbWUgYXBpIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAEQgVmVyc2lvbiBoaXN0b3J5OgEBIC0gVmVyc2lvbiAyOiBDaGFuZ2VkIFtgU2VsZjo6Y29sbGVjdF9jb2xsYXRpb25faW5mb2BdIHNpZ25hdHVyZTUBIC0gVmVyc2lvbiAzOiBTaWduYWxzIHRvIHRoZSBub2RlIHRvIHVzZSB2ZXJzaW9uIDEgb2YgW2BQYXJhY2hhaW5CbG9ja0RhdGFgXS4MADhHZW5lc2lzQnVpbGRlcgwsYnVpbGRfc3RhdGUEEGpzb24YuQ4oZQEgQnVpbGQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIGEgSlNPTiBibG9iIG5vdCB1c2luZyBhbnkgZGVmYXVsdHMgYW5kIHN0b3JlIGl0IGluIHRoZSQgc3RvcmFnZS4AKQEgSW4gdGhlIGNhc2Ugb2YgYSBGUkFNRS1iYXNlZCBydW50aW1lLCB0aGlzIGZ1bmN0aW9uIGRlc2VyaWFsaXplcyB0aGUgZnVsbFUBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBibG9iIGFuZCBwdXRzIGl0IGludG8gdGhlIHN0b3JhZ2UuIElmIHRoZVUBIHByb3ZpZGVkIEpTT04gYmxvYiBpcyBpbmNvcnJlY3Qgb3IgaW5jb21wbGV0ZSBvciB0aGUgZGVzZXJpYWxpemF0aW9uIGZhaWxzLCBhbiBlcnJvcjQgaXMgcmV0dXJuZWQuAF0BIFBsZWFzZSBub3RlIHRoYXQgcHJvdmlkZWQgSlNPTiBibG9iIG11c3QgY29udGFpbiBhbGwgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmaWVsZHMsIG5vXCBkZWZhdWx0cyB3aWxsIGJlIHVzZWQuAChnZXRfcHJlc2V0BAhpZL0OJQY4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgBVASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RhASBleGlzdC4gUmV0dXJuZWQgYFZlYzx1OD5gIGNvbnRhaW5zIGJ5dGVzIG9mIEpTT04gYmxvYiAocGF0Y2gpIHdoaWNoIGNvbXByaXNlcyBhIGxpc3Qgb2ZNASAocG90ZW50aWFsbHkgbmVzdGVkKSBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIGN1c3RvbWl6aW5nIHRoZSBkZWZhdWx0ZQEgcnVudGltZSBnZW5lc2lzIGNvbmZpZy4gVGhlIHBhdGNoIHNoYWxsIGJlIG1lcmdlZCAocmZjNzM4Nikgd2l0aCB0aGUgSlNPTiByZXByZXNlbnRhdGlvbmEBIG9mIHRoZSBkZWZhdWx0IGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBnZW5lc2lzIGNvbmZpZyB0aGF0IGNhboQgYmUgdXNlZCBpbiBgYnVpbGRfc3RhdGVgIG1ldGhvZC4AMHByZXNldF9uYW1lcwDBDhBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4ABPAgQVBJIHRvIGludGVyYWN0IHdpdGggYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmb3IgdGhlIHJ1bnRpbWUEACDhBsUOAA==";
2
+
3
+ export { binMeta as default };