U3VtbWFyeTogTGlicmFyeSBwcm92aWRpbmcgWE1MIGFuZCBIVE1MIHN1cHBvcnQKTmFtZTogbGlieG1sMgpWZXJzaW9uOiBAVkVSU0lPTkAKUmVsZWFzZTogMQpMaWNlbnNlOiBNSVQKR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcwpTb3VyY2U6IGZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDItJXt2ZXJzaW9ufS50YXIuZ3oKQnVpbGRSb290OiAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tcm9vdApCdWlsZFJlcXVpcmVzOiBweXRob24gcHl0aG9uLWRldmVsIHpsaWItZGV2ZWwKVVJMOiBodHRwOi8veG1sc29mdC5vcmcvClByZWZpeDogJXtfcHJlZml4fQpEb2NkaXI6ICV7X2RvY2Rpcn0KCiVkZXNjcmlwdGlvbgpUaGlzIGxpYnJhcnkgYWxsb3dzIHRvIG1hbmlwdWxhdGUgWE1MIGZpbGVzLiBJdCBpbmNsdWRlcyBzdXBwb3J0IAp0byByZWFkLCBtb2RpZnkgYW5kIHdyaXRlIFhNTCBhbmQgSFRNTCBmaWxlcy4gVGhlcmUgaXMgRFREcyBzdXBwb3J0CnRoaXMgaW5jbHVkZXMgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBldmVuIHdpdGggY29tcGxleCBEdERzLCBlaXRoZXIKYXQgcGFyc2UgdGltZSBvciBsYXRlciBvbmNlIHRoZSBkb2N1bWVudCBoYXMgYmVlbiBtb2RpZmllZC4gVGhlIG91dHB1dApjYW4gYmUgYSBzaW1wbGUgU0FYIHN0cmVhbSBvciBhbmQgaW4tbWVtb3J5IERPTSBsaWtlIHJlcHJlc2VudGF0aW9ucy4KSW4gdGhpcyBjYXNlIG9uZSBjYW4gdXNlIHRoZSBidWlsdC1pbiBYUGF0aCBhbmQgWFBvaW50ZXIgaW1wbGVtZW50YXRpb24KdG8gc2VsZWN0IHN1Ym5vZGVzIG9yIHJhbmdlcy4gQSBmbGV4aWJsZSBJbnB1dC9PdXRwdXQgbWVjaGFuaXNtIGlzCmF2YWlsYWJsZSwgd2l0aCBleGlzdGluZyBIVFRQIGFuZCBGVFAgbW9kdWxlcyBhbmQgY29tYmluZWQgdG8gYW4KVVJJIGxpYnJhcnkuCgolcGFja2FnZSBkZXZlbApTdW1tYXJ5OiBMaWJyYXJpZXMsIGluY2x1ZGVzLCBldGMuIHRvIGRldmVsb3AgWE1MIGFuZCBIVE1MIGFwcGxpY2F0aW9ucwpHcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzClJlcXVpcmVzOiBsaWJ4bWwyID0gJXt2ZXJzaW9ufQpSZXF1aXJlczogemxpYi1kZXZlbAoKJWRlc2NyaXB0aW9uIGRldmVsCkxpYnJhcmllcywgaW5jbHVkZSBmaWxlcywgZXRjIHlvdSBjYW4gdXNlIHRvIGRldmVsb3AgWE1MIGFwcGxpY2F0aW9ucy4KVGhpcyBsaWJyYXJ5IGFsbG93cyB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcy4gSXQgaW5jbHVkZXMgc3VwcG9ydCAKdG8gcmVhZCwgbW9kaWZ5IGFuZCB3cml0ZSBYTUwgYW5kIEhUTUwgZmlsZXMuIFRoZXJlIGlzIERURHMgc3VwcG9ydAp0aGlzIGluY2x1ZGVzIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gZXZlbiB3aXRoIGNvbXBsZXggRHREcywgZWl0aGVyCmF0IHBhcnNlIHRpbWUgb3IgbGF0ZXIgb25jZSB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gbW9kaWZpZWQuIFRoZSBvdXRwdXQKY2FuIGJlIGEgc2ltcGxlIFNBWCBzdHJlYW0gb3IgYW5kIGluLW1lbW9yeSBET00gbGlrZSByZXByZXNlbnRhdGlvbnMuCkluIHRoaXMgY2FzZSBvbmUgY2FuIHVzZSB0aGUgYnVpbHQtaW4gWFBhdGggYW5kIFhQb2ludGVyIGltcGxlbWVudGF0aW9uCnRvIHNlbGVjdCBzdWJub2RlcyBvciByYW5nZXMuIEEgZmxleGlibGUgSW5wdXQvT3V0cHV0IG1lY2hhbmlzbSBpcwphdmFpbGFibGUsIHdpdGggZXhpc3RpbmcgSFRUUCBhbmQgRlRQIG1vZHVsZXMgYW5kIGNvbWJpbmVkIHRvIGFuClVSSSBsaWJyYXJ5LgoKJXBhY2thZ2UgcHl0aG9uClN1bW1hcnk6IFB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIGxpYnhtbDIgbGlicmFyeQpHcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzClJlcXVpcmVzOiBsaWJ4bWwyID0gJXt2ZXJzaW9ufQpSZXF1aXJlczogJXtfbGliZGlyfS9weXRob24lKGVjaG8gYHB5dGhvbiAtYyAiaW1wb3J0IHN5czsgcHJpbnQgc3lzLnZlcnNpb25bMDozXSJgKQoKJWRlc2NyaXB0aW9uIHB5dGhvbgpUaGUgbGlieG1sMi1weXRob24gcGFja2FnZSBjb250YWlucyBhIG1vZHVsZSB0aGF0IHBlcm1pdHMgYXBwbGljYXRpb25zCndyaXR0ZW4gaW4gdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byB1c2UgdGhlIGludGVyZmFjZQpzdXBwbGllZCBieSB0aGUgbGlieG1sMiBsaWJyYXJ5IHRvIG1hbmlwdWxhdGUgWE1MIGZpbGVzLgoKVGhpcyBsaWJyYXJ5IGFsbG93cyB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcy4gSXQgaW5jbHVkZXMgc3VwcG9ydCAKdG8gcmVhZCwgbW9kaWZ5IGFuZCB3cml0ZSBYTUwgYW5kIEhUTUwgZmlsZXMuIFRoZXJlIGlzIERURHMgc3VwcG9ydAp0aGlzIGluY2x1ZGVzIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gZXZlbiB3aXRoIGNvbXBsZXggRFREcywgZWl0aGVyCmF0IHBhcnNlIHRpbWUgb3IgbGF0ZXIgb25jZSB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gbW9kaWZpZWQuCgolcHJlcAolc2V0dXAgLXEKCiVidWlsZAojCiMgdHJ5IHRvIHVzZSBjb21waWxlciBwcm9maWxpbmcsIGJhc2VkIG9uIEFyamFuIHZhbiBkZSBWZW4gPGFyamFudkByZWRoYXQuY29tPgojIGluaXRpYWwgdGVzdCBzcGVjLiBUaGlzIHJlYWxseSBkb2Vzbid0IHdvcmsgb2theSBmb3IgbW9zdCB0ZXN0cyBkb25lLgojCkdDQ19WRVJTSU9OPWBnY2MgLS12ZXJzaW9uIHwgZ3JlcCAiXmdjYyIgfCBhd2sgJ3sgcHJpbnQgJDMgfScgfCBzZWQgJ3MrXChbMC05XVwpXC5cKFswLTldXClcLi4qK1wxXDIrJ2AKI2lmIFsgJEdDQ19WRVJTSU9OIC1lcSAzMiBdCiN0aGVuCiMgICAgUFJPRl9HRU49Jy1mcHJvZmlsZS1hcmNzJwojICAgIFBST0ZfVVNFPSctZmJyYW5jaC1wcm9iYWJpbGl0aWVzJwojZWxzZSBpZiBbICRHQ0NfVkVSU0lPTiAtZXEgMzMgXQojdGhlbgojICAgIFBST0ZfR0VOPSctZnByb2ZpbGUtYXJjcycKIyAgICBQUk9GX1VTRT0nLWZicmFuY2gtcHJvYmFiaWxpdGllcyAtZnRyYWNlcicKI2Vsc2UKaWYgWyAkR0NDX1ZFUlNJT04gLWdlIDM0IF0KdGhlbgogICAgUFJPRl9HRU49Jy1mcHJvZmlsZS1nZW5lcmF0ZScKICAgIFBST0ZfVVNFPSctZnByb2ZpbGUtdXNlJwpmaQojZmkKI2ZpCgppZiBbICIkUFJPRl9HRU4iICE9ICIiIF0KdGhlbgogICAgIyBGaXJzdCBnZW5lcmF0ZSBhIHByb2ZpbGluZyB2ZXJzaW9uCiAgICBDRkxBR1M9IiR7UlBNX09QVF9GTEFHU30gJHtQUk9GX0dFTn0iICAlY29uZmlndXJlCiAgICBtYWtlCiAgICAjIFJ1biBhIGZldyBzYW1wbGluZwogICAgbWFrZSBkYmExMDAwMDAueG1sCiAgICAuL3htbGxpbnQgLS1ub291dCAgZGJhMTAwMDAwLnhtbAogICAgLi94bWxsaW50IC0tc3RyZWFtICBkYmExMDAwMDAueG1sCiAgICAuL3htbGxpbnQgLS1ub291dCAtLXZhbGlkIHRlc3QvdmFsaWQvUkVDLXhtbC0xOTk4MDIxMC54bWwKICAgIC4veG1sbGludCAtLXN0cmVhbSAtLXZhbGlkIHRlc3QvdmFsaWQvUkVDLXhtbC0xOTk4MDIxMC54bWwKICAgICMgVGhlbiBnZW5lcmF0ZSBjb2RlIGJhc2VkIG9uIHByb2ZpbGUKICAgIENGTEFHUz0iJHtSUE1fT1BUX0ZMQUdTfSAke1BST0ZfVVNFfSIgICVjb25maWd1cmUKICAgIG1ha2UKZWxzZQogICAgJWNvbmZpZ3VyZQogICAgbWFrZQpmaQooY2QgZG9jL2V4YW1wbGVzIDsgbWFrZSBjbGVhbikKZ3ppcCAtOSBDaGFuZ2VMb2cKCiVpbnN0YWxsCnJtIC1mciAle2J1aWxkcm9vdH0KCiVtYWtlaW5zdGFsbAoKJWNsZWFuCnJtIC1mciAle2J1aWxkcm9vdH0KCiVwb3N0Ci9zYmluL2xkY29uZmlnCgolcG9zdHVuCi9zYmluL2xkY29uZmlnCgolZmlsZXMKJWRlZmF0dHIoLSwgcm9vdCwgcm9vdCkKCiVkb2MgQVVUSE9SUyBDaGFuZ2VMb2cuZ3ogTkVXUyBSRUFETUUgQ29weXJpZ2h0IFRPRE8KJWRvYyAle19tYW5kaXJ9L21hbjEveG1sbGludC4xKgolZG9jICV7X21hbmRpcn0vbWFuMS94bWxjYXRhbG9nLjEqCiVkb2MgJXtfbWFuZGlyfS9tYW4zL2xpYnhtbC4zKgoKJXtfbGliZGlyfS9saWIqLnNvLioKJXtwcmVmaXh9L2Jpbi94bWxsaW50CiV7cHJlZml4fS9iaW4veG1sY2F0YWxvZwoKJWZpbGVzIGRldmVsCiVkZWZhdHRyKC0sIHJvb3QsIHJvb3QpCgolZG9jICV7X21hbmRpcn0vbWFuMS94bWwyLWNvbmZpZy4xKgolZG9jIEFVVEhPUlMgQ2hhbmdlTG9nLmd6IE5FV1MgUkVBRE1FIENvcHlyaWdodCBUT0RPCiVkb2MgZG9jLyouaHRtbCBkb2MvaHRtbCBkb2MvKi5naWYgZG9jLyoucG5nCiVkb2MgZG9jL3R1dG9yaWFsIGRvYy9saWJ4bWwyLWFwaS54bWwKJWRvYyBkb2MvZXhhbXBsZXMKCiV7X2xpYmRpcn0vbGliKi5zbwole19saWJkaXJ9LyphCiV7X2xpYmRpcn0vKi5zaAole3ByZWZpeH0vaW5jbHVkZS8qCiV7cHJlZml4fS9iaW4veG1sMi1jb25maWcKJXtwcmVmaXh9L3NoYXJlL2FjbG9jYWwvbGlieG1sLm00CiV7X2xpYmRpcn0vcGtnY29uZmlnL2xpYnhtbC0yLjAucGMKJWZpbGVzIHB5dGhvbgolZGVmYXR0cigtLCByb290LCByb290KQoKJWRvYyBBVVRIT1JTIENoYW5nZUxvZy5neiBORVdTIFJFQURNRSBDb3B5cmlnaHQKJXtfbGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvbGlieG1sMi5weQole19saWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9kcnZfbGlieG1sMi5weQole19saWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9saWJ4bWwybW9kKgolZG9jIHB5dGhvbi9UT0RPCiVkb2MgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQKJWRvYyBweXRob24vdGVzdHMvKi5weQolZG9jIGRvYy8qLnB5CiVkb2MgZG9jL3B5dGhvbi5odG1sCgolY2hhbmdlbG9nCiogQFJFTERBVEVAIERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KLSB1cHN0cmVhbSByZWxlYXNlIEBWRVJTSU9OQCBzZWUgaHR0cDovL3htbHNvZnQub3JnL25ld3MuaHRtbAoKKiBUaHUgSmFuICAyIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgotIGludGVncmF0ZWQgZHJ2X2xpYnhtbDIgeG1sLnNheCBkcml2ZXIgZnJvbSBTdOlwaGFuZSBCaWRvdWwKLSBwcm92aWRlcyB0aGUgbmV3IFhtbFRleHRSZWFkZXIgaW50ZXJmYWNlcyBiYXNlZCBvbiBDIyBYTUwgQVBJcwoKKiBXZWQgT2N0IDIzIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgotIHJldmFtcGVkIHRoZSBzcGVjIGZpbGUsIGNsZWFuZWQgdXAgc29tZSBycG0gYnVpbGRpbmcgcHJvYmxlbXMKCiogRnJpIE9jdCAgNCAyMDAyIEplcmVteSBLYXR6IDxrYXR6akByZWRoYXQuY29tPgotIGJ1aWxkIHdpdGggJ21ha2UgTElCVE9PTD0vdXNyL2Jpbi9saWJ0b29sJyB0byB1c2Ugc3lzdGVtIGxpYnRvb2wKCiogV2VkIFNlcCAgNCAyMDAyIERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KCi0gbGlicmFyeSBwYXRocyBmaXhlZCBmb3IgeDg2LTY0CgoqIEZyaSBGZWIgIDEgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPHZlaWxsYXJkQHJlZGhhdC5jb20+CgotIEFkZGVkIHRoZSBweXRob24gcGFja2FnZQoKKiBTdW4gTm92ICA0IDIwMDEgRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgoKLSBjbGVhbmVkIHVwIHRoZSBzcGVjZmlsZQotIDIuNC43IGJyb2tlIFNHTUwgY2F0YWxvZ3MgYmFkbHkuIHRoaXMgZml4ZXMgaXQuCgoqIFRodSBBcHIgMjYgMjAwMSBUb3NoaW8gS3VyYXRvbWkgPGJhZGdlckBwcnRyLTEzLnVjc2MuZWR1PgoKWzIuMy43XQotIEFkZGVkIGxpYnhtbC5tNCB0byB0aGUgZGlzdHJpYnV0aW9uIGZpbGUgbGlzdAotIE1vdmVkIHRoZSBtYW4gcGFnZXMgZnJvbSAvdXNyL21hbiB0byAvdXNyL3NoYXJlL21hbiB0byBjb25mb3JtIHRvIEZIUzIuMAotIE1vdmVkIHByb2dyYW1tZXIgZG9jdW1lbnRhdGlvbiBpbnRvIHRoZSBkZXZlbCBwYWNrYWdlCgoqIFRodSBTZXAgMjMgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+CgotIGNvcnJlY3RlZCB0aGUgc3BlYyBmaWxlIGFscGhhIHN0dWZmCi0gc3dpdGNoZWQgdG8gdmVyc2lvbiAxLjcuMQotIEFkZGVkIHZhbGlkYXRpb24sIFhQYXRoLCBuYW5vaHR0cCwgcmVtb3ZlZCBtZW1vcnkgbGVha3MKLSBSZW5hbWVkIENIQVIgdG8geG1sQ2hhcgoKKiBXZWQgSnVuICAyIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgoKLSBTd2l0Y2hlZCB0byB2ZXJzaW9uIDEuMTogU0FYIGV4dGVuc2lvbnMsIGJldHRlciBlbnRpdGllcyBzdXBwb3J0LCBsb3RzIG9mCiAgYnVnIGZpeGVzLgoKKiBTdW4gT2N0ICA0IDE5OTggRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgoKLSBBZGRlZCB4bWwtY29uZmlnIHRvIHRoZSBwYWNrYWdlCgoqIFRodSBTZXAgMjQgMTk5OCBNaWNoYWVsIEZ1bGJyaWdodCA8bXNmQHJlZGhhdC5jb20+CgotIEJ1aWx0IHJlbGVhc2UgMC4zMAoK