Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t0guz-00Ci8K-5s for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Oct 2024 12:44:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t0guw-006beK-MD for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Oct 2024 12:44:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t0guv-006beC-VZ for pgsql-hackers@lists.postgresql.org; Tue, 15 Oct 2024 12:44:50 +0000 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t0gus-0010K1-EP for pgsql-hackers@postgresql.org; Tue, 15 Oct 2024 12:44:49 +0000 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-539e7e73740so2400517e87.3 for ; Tue, 15 Oct 2024 05:44:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728996284; x=1729601084; darn=postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=EBcIsudL7WlFAGTBovpzBgQ8q2Ds/p1JPyit97iv+BE=; b=feLcSeybFkpwfA0HVFYUBbrk0SQzbPNEhwS1dDpP+FWgyt/bzWYAxaku3GMbeZd05m q7bL6XVK8Q0wLe8mOaepJTeke4AWKo3idbFuB3UMjgaEluiLOsIDiHo1JiyvXzb2Pjg3 DpW+Y49wMzbFVMBUXLLaorUgYpZATU8EEaaWyevZrdH2mrdAoHrEEdXRJflFUaO+fEaQ 9WIuaRoDBiUtrgTy2z6kJMOTXJRB3pTQ/RJWHK8XHLVoDms10Oh4dO4qkMpjyC+ER3jZ lRWrhFaAsXYYCN1GR4KRmQ9y55DTeuEx5uVbQ6vVa3KdEUpjKdJVMO/FakiIvnnu6Hek UwLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728996284; x=1729601084; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EBcIsudL7WlFAGTBovpzBgQ8q2Ds/p1JPyit97iv+BE=; b=J6PzVyzSMvyyyT52StYrmrqUhReGj9LJYRYZAIDTckCCdQAhwi8VLvk2qljW5lHNzM an64Zg1STcid+6DdAT5Y5MQ3RB1A9t+gxas9Siu2sQiTYGXrtHc/3pEkNZ0r7W137gnh b/sBRBWTFM2Nki60N2pvr0axqpu8mVmMyQDnM3eJ4l4+bmAMr3Lb0sSqjmg2+ZuGh7aM SdkU1vVN8e9svtPHTZXKybRCQxSMhuTEuDVWfP+U3I6Qp4LKo6mn6RgC2mbi/R3fYVbR jZYPYxgv/P0isrTbI4Q3U4jA5xCkhGqYoylZd9ULPI2tJU57bCL0dN3ZvPBV6336af/u sIEg== X-Gm-Message-State: AOJu0YyPhJuLz2aRNhKTk1YDlwmoOxMqLbAW6/Ry4CFP1LcqYPNMBtIF cUkd3imp3ztHF4GDK+GTOb2PYKr9yDGsyjEwEfVOS5aaH1+XhOFywSEoX6CO X-Google-Smtp-Source: AGHT+IF4C27Y6/zTMhKMaV3kFkp6S/yakU2/kyW5PbPEUsRg6B9dZ70JQn+lS2zy71zGWSw7MFMeoQ== X-Received: by 2002:a05:6512:1090:b0:539:e651:5d97 with SMTP id 2adb3069b0e04-539e6515f25mr5370304e87.50.1728996283844; Tue, 15 Oct 2024 05:44:43 -0700 (PDT) Received: from [192.168.1.157] (95-25-56-244.broadband.corbina.ru. [95.25.56.244]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-539ffff4079sm157866e87.145.2024.10.15.05.44.42 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Oct 2024 05:44:42 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------XMzl7pf7r2mOIFuTu410hXYC" Message-ID: <8cf421a6-0a16-41b5-8ec0-10bc0a85e436@gmail.com> Date: Tue, 15 Oct 2024 15:44:40 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US, ru-RU, ru To: pgsql-hackers@postgresql.org From: Gurev Oleg Subject: Added anchor links generation function for refsect1,2,3 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------XMzl7pf7r2mOIFuTu410hXYC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello. There is small patch for documentation. Some extend of "Make HTML ids discoverable" by Brar Piening. Discussion: https://www.postgresql.org/message-id/flat/CAB8KJ=jpuQU9QJe4+RgWENrK5g9jhoysMw2nvTN_esoOU0=a_w@mail It adds docbook function, that generates anchor links ("#" symbol related to any refsect1/2/3). e.g. for amcheck or pg_restore You can compile documentation and anchor will be available in local .html by placing mouse cursor on refsect header. Best regards, Oleg Gurev. --------------XMzl7pf7r2mOIFuTu410hXYC Content-Type: text/x-patch; charset=UTF-8; name="anchors.patch" Content-Disposition: attachment; filename="anchors.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zdHlsZXNoZWV0LWh0bWwtY29tbW9uLnhzbCBi L2RvYy9zcmMvc2dtbC9zdHlsZXNoZWV0LWh0bWwtY29tbW9uLnhzbAppbmRleCA5ZGNmOTZj MDJlNS4uMDNiYWE5OTQ4OTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zdHlsZXNoZWV0 LWh0bWwtY29tbW9uLnhzbAorKysgYi9kb2Mvc3JjL3NnbWwvc3R5bGVzaGVldC1odG1sLWNv bW1vbi54c2wKQEAgLTM5MCw2ICszOTAsNDUgQEAgc2V0ICAgICAgIHRvYyx0aXRsZQogICA8 L3hzbDppZj4KIDwveHNsOnRlbXBsYXRlPgogCis8IS0tIEFkZCBhbiBpZCBsaW5rIGZvciBl YWNoIHJlZnNlY3QgZW50cnkgLS0+Cis8eHNsOnRlbXBsYXRlIG1hdGNoPSJyZWZzZWN0MS90 aXRsZQorICAgICAgICAgICAgICAgICAgICB8cmVmc2VjdDIvdGl0bGUKKyAgICAgICAgICAg ICAgICAgICAgfHJlZnNlY3QzL3RpdGxlIj4KKworICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rp b24iCisgICAgICAgICAgICBzZWxlY3Q9IihhbmNlc3Rvcjo6cmVmc2VjdDEKKyAgICAgICAg ICAgICAgICAgICAgfGFuY2VzdG9yOjpyZWZzZWN0MgorICAgICAgICAgICAgICAgICAgICB8 YW5jZXN0b3I6OnJlZnNlY3QzKVtsYXN0KCldIi8+CisKKyAgPCEtLSBTZWxlY3QgaGVhZGVy IHNpemUgcmVsYXRlZCB0byBzZWN0aW9uIGxldmVsIC0tPgorICA8eHNsOnZhcmlhYmxlIG5h bWU9ImhsZXZlbCI+CisgICAgPHhzbDpjaG9vc2U+CisgICAgICA8eHNsOndoZW4gdGVzdD0i bG9jYWwtbmFtZSgkc2VjdGlvbikgPSAncmVmc2VjdDEnIj4yPC94c2w6d2hlbj4KKyAgICAg IDx4c2w6d2hlbiB0ZXN0PSJsb2NhbC1uYW1lKCRzZWN0aW9uKSA9ICdyZWZzZWN0MiciPjM8 L3hzbDp3aGVuPgorICAgICAgPHhzbDp3aGVuIHRlc3Q9ImxvY2FsLW5hbWUoJHNlY3Rpb24p ID0gJ3JlZnNlY3QzJyI+NDwveHNsOndoZW4+CisgICAgICA8eHNsOm90aGVyd2lzZT4xPC94 c2w6b3RoZXJ3aXNlPgorICAgIDwveHNsOmNob29zZT4KKyAgPC94c2w6dmFyaWFibGU+Cisg IDwhLS0gV2UgbmVlZCB0byByZWRvIDxoWzIuLjRdPiB0YWcgdG8gbWFrZSBzYW1lIGZvbnQg c2l6ZS4gLS0+CisgICAgPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMi PiZsdDtoPC94c2w6dGV4dD4KKyAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdCA9IiRobGV2ZWwi Lz4KKyAgICA8eHNsOnRleHQgZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyI+Jmd0Ozwv eHNsOnRleHQ+CisgIDwhLS0gQXBwbHkgZGVmYXVsdCB0ZW1wbGF0ZXMgLS0+CisgICAgPHhz bDphcHBseS10ZW1wbGF0ZXMvPgorICAgIDwhLS0gQ2hlY2sgdGhhdCB0aXRsZSBwYXJlbnQg aGFzIEBpZCB2YXJpYWJsZSAtLT4KKyAgICA8eHNsOmNob29zZT4KKyAgICAgIDx4c2w6d2hl biB0ZXN0PSIkc2VjdGlvbi9AaWQgb3IgJHNlY3Rpb24vQHhtbDppZCI+CisgICAgICA8IS0t IEZvcm0gYW5kIGFkZCBsaW5rIC0tPgorICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFt ZT0icGcuaWQubGluayI+CisgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9Im9iamVj dCIgc2VsZWN0PSIkc2VjdGlvbiIvPgorICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgor ICAgICAgPC94c2w6d2hlbj4KKyAgICA8L3hzbDpjaG9vc2U+CisgICAgPCEtLSBXZSBuZWVk IHRvIHJlZG8gPC9oWzIuLjRdPiB0YWcgdG8gbWFrZSBzYW1lIGZvbnQgc2l6ZS4gLS0+Cisg ICAgPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPiZsdDsvaDwveHNs OnRleHQ+CisgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3QgPSIkaGxldmVsIi8+CisgICAgPHhz bDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPiZndDs8L3hzbDp0ZXh0Pgor PC94c2w6dGVtcGxhdGU+CiAKIDwhLS0gQ3JlYXRlIGEgbGluayBwb2ludGluZyB0byBhbiBp ZCB3aXRoaW4gdGhlIGRvY3VtZW50IC0tPgogPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwZy5pZC5s aW5rIj4K --------------XMzl7pf7r2mOIFuTu410hXYC Content-Type: text/html; charset=UTF-8; name="amcheck.html" Content-Disposition: attachment; filename="amcheck.html" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+ CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRp b25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFu c2l0aW9uYWwuZHRkIj48aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt bCI+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIC8+PHRpdGxlPkYuMi7CoGFtY2hlY2sg4oCUIHRvb2xz IHRvIHZlcmlmeSB0YWJsZSBhbmQgaW5kZXggY29uc2lzdGVuY3k8L3RpdGxlPjxsaW5rIHJl bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiAv PjxsaW5rIHJldj0ibWFkZSIgaHJlZj0icGdzcWwtZG9jc0BsaXN0cy5wb3N0Z3Jlc3FsLm9y ZyIgLz48bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxl c2hlZXRzIFZzbmFwc2hvdCIgLz48bGluayByZWw9InByZXYiIGhyZWY9ImFkbWlucGFjay5o dG1sIiB0aXRsZT0iRi4xLsKgYWRtaW5wYWNrIOKAlCBwZ0FkbWluIHN1cHBvcnQgdG9vbHBh Y2siIC8+PGxpbmsgcmVsPSJuZXh0IiBocmVmPSJhdXRoLWRlbGF5Lmh0bWwiIHRpdGxlPSJG LjMuwqBhdXRoX2RlbGF5IOKAlCBwYXVzZSBvbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIiAv PjwvaGVhZD48Ym9keSBpZD0iZG9jQ29udGVudCIgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCBj b2wtMTAiPjxkaXYgY2xhc3M9Im5hdmhlYWRlciI+PHRhYmxlIHdpZHRoPSIxMDAlIiBzdW1t YXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciI+PHRyPjx0aCBjb2xzcGFuPSI1IiBhbGlnbj0iY2Vu dGVyIj5GLjIuwqBhbWNoZWNrIOKAlCB0b29scyB0byB2ZXJpZnkgdGFibGUgYW5kIGluZGV4 IGNvbnNpc3RlbmN5PC90aD48L3RyPjx0cj48dGQgd2lkdGg9IjEwJSIgYWxpZ249ImxlZnQi PjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iYWRtaW5wYWNrLmh0bWwiIHRpdGxlPSJGLjEuwqBh ZG1pbnBhY2sg4oCUIHBnQWRtaW4gc3VwcG9ydCB0b29scGFjayI+UHJldjwvYT7CoDwvdGQ+ PHRkIHdpZHRoPSIxMCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNv bnRyaWIuaHRtbCIgdGl0bGU9IkFwcGVuZGl4wqBGLsKgQWRkaXRpb25hbCBTdXBwbGllZCBN b2R1bGVzIGFuZCBFeHRlbnNpb25zIj5VcDwvYT48L3RkPjx0aCB3aWR0aD0iNjAlIiBhbGln bj0iY2VudGVyIj5BcHBlbmRpeMKgRi7CoEFkZGl0aW9uYWwgU3VwcGxpZWQgTW9kdWxlcyBh bmQgRXh0ZW5zaW9uczwvdGg+PHRkIHdpZHRoPSIxMCUiIGFsaWduPSJyaWdodCI+PGEgYWNj ZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iUG9zdGdyZVNRTCAxNi40IERv Y3VtZW50YXRpb24iPkhvbWU8L2E+PC90ZD48dGQgd2lkdGg9IjEwJSIgYWxpZ249InJpZ2h0 Ij7CoDxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iYXV0aC1kZWxheS5odG1sIiB0aXRsZT0iRi4z LsKgYXV0aF9kZWxheSDigJQgcGF1c2Ugb24gYXV0aGVudGljYXRpb24gZmFpbHVyZSI+TmV4 dDwvYT48L3RkPjwvdHI+PC90YWJsZT48aHIgLz48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0MSIg aWQ9IkFNQ0hFQ0siPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFz cz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ri4yLsKgYW1jaGVjayDigJQgdG9vbHMg dG8gdmVyaWZ5IHRhYmxlIGFuZCBpbmRleCBjb25zaXN0ZW5jeSA8YSBocmVmPSIjQU1DSEVD SyIgY2xhc3M9ImlkX2xpbmsiPiM8L2E+PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNs YXNzPSJ0b2MiPjxkbCBjbGFzcz0idG9jIj48ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBo cmVmPSJhbWNoZWNrLmh0bWwjQU1DSEVDSy1GVU5DVElPTlMiPkYuMi4xLiBGdW5jdGlvbnM8 L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iYW1jaGVj ay5odG1sI0FNQ0hFQ0stT1BUSU9OQUwtSEVBUEFMTElOREVYRUQtVkVSSUZJQ0FUSU9OIj5G LjIuMi4gT3B0aW9uYWwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmhlYXBhbGxpbmRl eGVkPC9jb2RlPjwvZW0+IFZlcmlmaWNhdGlvbjwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4g Y2xhc3M9InNlY3QyIj48YSBocmVmPSJhbWNoZWNrLmh0bWwjQU1DSEVDSy1VU0lORy1BTUNI RUNLLUVGRkVDVElWRUxZIj5GLjIuMy4gVXNpbmcgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5h bWNoZWNrPC9jb2RlPiBFZmZlY3RpdmVseTwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xh c3M9InNlY3QyIj48YSBocmVmPSJhbWNoZWNrLmh0bWwjQU1DSEVDSy1SRVBBSVJJTkctQ09S UlVQVElPTiI+Ri4yLjQuIFJlcGFpcmluZyBDb3JydXB0aW9uPC9hPjwvc3Bhbj48L2R0Pjwv ZGw+PC9kaXY+PGEgaWQ9ImlkLTEuMTEuNy4xMi4yIiBjbGFzcz0iaW5kZXh0ZXJtIj48L2E+ PHA+CiAgVGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YW1jaGVjazwvY29kZT4gbW9kdWxl IHByb3ZpZGVzIGZ1bmN0aW9ucyB0aGF0IGFsbG93IHlvdSB0bwogIHZlcmlmeSB0aGUgbG9n aWNhbCBjb25zaXN0ZW5jeSBvZiB0aGUgc3RydWN0dXJlIG9mIHJlbGF0aW9ucy4KIDwvcD48 cD4KICBUaGUgQi1UcmVlIGNoZWNraW5nIGZ1bmN0aW9ucyB2ZXJpZnkgdmFyaW91cyA8c3Bh biBjbGFzcz0iZW1waGFzaXMiPjxlbT5pbnZhcmlhbnRzPC9lbT48L3NwYW4+IGluIHRoZQog IHN0cnVjdHVyZSBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgcGFydGljdWxhciByZWxhdGlv bnMuICBUaGUKICBjb3JyZWN0bmVzcyBvZiB0aGUgYWNjZXNzIG1ldGhvZCBmdW5jdGlvbnMg YmVoaW5kIGluZGV4IHNjYW5zIGFuZAogIG90aGVyIGltcG9ydGFudCBvcGVyYXRpb25zIHJl bGllcyBvbiB0aGVzZSBpbnZhcmlhbnRzIGFsd2F5cwogIGhvbGRpbmcuICBGb3IgZXhhbXBs ZSwgY2VydGFpbiBmdW5jdGlvbnMgdmVyaWZ5LCBhbW9uZyBvdGhlciB0aGluZ3MsCiAgdGhh dCBhbGwgQi1UcmVlIHBhZ2VzIGhhdmUgaXRlbXMgaW4gPHNwYW4gY2xhc3M9InF1b3RlIj7i gJw8c3BhbiBjbGFzcz0icXVvdGUiPmxvZ2ljYWw8L3NwYW4+4oCdPC9zcGFuPiBvcmRlciAo ZS5nLiwKICBmb3IgQi1UcmVlIGluZGV4ZXMgb24gPGNvZGUgY2xhc3M9InR5cGUiPnRleHQ8 L2NvZGU+LCBpbmRleCB0dXBsZXMgc2hvdWxkIGJlIGluCiAgY29sbGF0ZWQgbGV4aWNhbCBv cmRlcikuICBJZiB0aGF0IHBhcnRpY3VsYXIgaW52YXJpYW50IHNvbWVob3cgZmFpbHMKICB0 byBob2xkLCB3ZSBjYW4gZXhwZWN0IGJpbmFyeSBzZWFyY2hlcyBvbiB0aGUgYWZmZWN0ZWQg cGFnZSB0bwogIGluY29ycmVjdGx5IGd1aWRlIGluZGV4IHNjYW5zLCByZXN1bHRpbmcgaW4g d3JvbmcgYW5zd2VycyB0byBTUUwKICBxdWVyaWVzLiAgSWYgdGhlIHN0cnVjdHVyZSBhcHBl YXJzIHRvIGJlIHZhbGlkLCBubyBlcnJvciBpcyByYWlzZWQuCiA8L3A+PHA+CiAgVmVyaWZp Y2F0aW9uIGlzIHBlcmZvcm1lZCB1c2luZyB0aGUgc2FtZSBwcm9jZWR1cmVzIGFzIHRob3Nl IHVzZWQgYnkKICBpbmRleCBzY2FucyB0aGVtc2VsdmVzLCB3aGljaCBtYXkgYmUgdXNlci1k ZWZpbmVkIG9wZXJhdG9yIGNsYXNzCiAgY29kZS4gIEZvciBleGFtcGxlLCBCLVRyZWUgaW5k ZXggdmVyaWZpY2F0aW9uIHJlbGllcyBvbiBjb21wYXJpc29ucwogIG1hZGUgd2l0aCBvbmUg b3IgbW9yZSBCLVRyZWUgc3VwcG9ydCBmdW5jdGlvbiAxIHJvdXRpbmVzLiAgU2VlIDxhIGNs YXNzPSJ4cmVmIiBocmVmPSJ4aW5kZXguaHRtbCNYSU5ERVgtU1VQUE9SVCIgdGl0bGU9IjM4 LjE2LjMuwqBJbmRleCBNZXRob2QgU3VwcG9ydCBSb3V0aW5lcyI+U2VjdGlvbsKgMzguMTYu MzwvYT4gZm9yIGRldGFpbHMgb2Ygb3BlcmF0b3IgY2xhc3Mgc3VwcG9ydAogIGZ1bmN0aW9u cy4KIDwvcD48cD4KICBVbmxpa2UgdGhlIEItVHJlZSBjaGVja2luZyBmdW5jdGlvbnMgd2hp Y2ggcmVwb3J0IGNvcnJ1cHRpb24gYnkgcmFpc2luZwogIGVycm9ycywgdGhlIGhlYXAgY2hl Y2tpbmcgZnVuY3Rpb24gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj52ZXJpZnlfaGVhcGFtPC9j b2RlPiBjaGVja3MKICBhIHRhYmxlIGFuZCBhdHRlbXB0cyB0byByZXR1cm4gYSBzZXQgb2Yg cm93cywgb25lIHJvdyBwZXIgY29ycnVwdGlvbgogIGRldGVjdGVkLiAgRGVzcGl0ZSB0aGlz LCBpZiBmYWNpbGl0aWVzIHRoYXQKICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnZlcmlmeV9o ZWFwYW08L2NvZGU+IHJlbGllcyB1cG9uIGFyZSB0aGVtc2VsdmVzIGNvcnJ1cHRlZCwgdGhl CiAgZnVuY3Rpb24gbWF5IGJlIHVuYWJsZSB0byBjb250aW51ZSBhbmQgbWF5IGluc3RlYWQg cmFpc2UgYW4gZXJyb3IuCiA8L3A+PHA+CiAgUGVybWlzc2lvbiB0byBleGVjdXRlIDxjb2Rl IGNsYXNzPSJmaWxlbmFtZSI+YW1jaGVjazwvY29kZT4gZnVuY3Rpb25zIG1heSBiZSBncmFu dGVkCiAgdG8gbm9uLXN1cGVydXNlcnMsIGJ1dCBiZWZvcmUgZ3JhbnRpbmcgc3VjaCBwZXJt aXNzaW9ucyBjYXJlZnVsIGNvbnNpZGVyYXRpb24KICBzaG91bGQgYmUgZ2l2ZW4gdG8gZGF0 YSBzZWN1cml0eSBhbmQgcHJpdmFjeSBjb25jZXJucy4gIEFsdGhvdWdoIHRoZQogIGNvcnJ1 cHRpb24gcmVwb3J0cyBnZW5lcmF0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGRvIG5vdCBmb2N1 cyBvbiB0aGUgY29udGVudHMKICBvZiB0aGUgY29ycnVwdGVkIGRhdGEgc28gbXVjaCBhcyBv biB0aGUgc3RydWN0dXJlIG9mIHRoYXQgZGF0YSBhbmQgdGhlIG5hdHVyZQogIG9mIHRoZSBj b3JydXB0aW9ucyBmb3VuZCwgYW4gYXR0YWNrZXIgd2hvIGdhaW5zIHBlcm1pc3Npb24gdG8g ZXhlY3V0ZSB0aGVzZQogIGZ1bmN0aW9ucywgcGFydGljdWxhcmx5IGlmIHRoZSBhdHRhY2tl ciBjYW4gYWxzbyBpbmR1Y2UgY29ycnVwdGlvbiwgbWlnaHQgYmUKICBhYmxlIHRvIGluZmVy IHNvbWV0aGluZyBvZiB0aGUgZGF0YSBpdHNlbGYgZnJvbSBzdWNoIG1lc3NhZ2VzLgogPC9w PjxkaXYgY2xhc3M9InNlY3QyIiBpZD0iQU1DSEVDSy1GVU5DVElPTlMiPjxkaXYgY2xhc3M9 InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPkYuMi4xLsKgRnVuY3Rp b25zIDxhIGhyZWY9IiNBTUNIRUNLLUZVTkNUSU9OUyIgY2xhc3M9ImlkX2xpbmsiPiM8L2E+ PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbCBj bGFzcz0idmFyaWFibGVsaXN0Ij48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgIDxjb2Rl IGNsYXNzPSJmdW5jdGlvbiI+YnRfaW5kZXhfY2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBh bGxpbmRleGVkIGJvb2xlYW4pIHJldHVybnMgdm9pZDwvY29kZT4KICAgICA8YSBpZD0iaWQt MS4xMS43LjEyLjguMi4xLjEuMiIgY2xhc3M9ImluZGV4dGVybSI+PC9hPgogICAgPC9zcGFu PjwvZHQ+PGRkPjxwPgogICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2No ZWNrPC9jb2RlPiB0ZXN0cyB0aGF0IGl0cyB0YXJnZXQsIGEKICAgICAgQi1UcmVlIGluZGV4 LCByZXNwZWN0cyBhIHZhcmlldHkgb2YgaW52YXJpYW50cy4gIEV4YW1wbGUgdXNhZ2U6Cjwv cD48cHJlIGNsYXNzPSJzY3JlZW4iPgp0ZXN0PSMgU0VMRUNUIGJ0X2luZGV4X2NoZWNrKGlu ZGV4ID0mZ3Q7IGMub2lkLCBoZWFwYWxsaW5kZXhlZCA9Jmd0OyBpLmluZGlzdW5pcXVlKSwK ICAgICAgICAgICAgICAgYy5yZWxuYW1lLAogICAgICAgICAgICAgICBjLnJlbHBhZ2VzCkZS T00gcGdfaW5kZXggaQpKT0lOIHBnX29wY2xhc3Mgb3AgT04gaS5pbmRjbGFzc1swXSA9IG9w Lm9pZApKT0lOIHBnX2FtIGFtIE9OIG9wLm9wY21ldGhvZCA9IGFtLm9pZApKT0lOIHBnX2Ns YXNzIGMgT04gaS5pbmRleHJlbGlkID0gYy5vaWQKSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBj LnJlbG5hbWVzcGFjZSA9IG4ub2lkCldIRVJFIGFtLmFtbmFtZSA9ICdidHJlZScgQU5EIG4u bnNwbmFtZSA9ICdwZ19jYXRhbG9nJwotLSBEb24ndCBjaGVjayB0ZW1wIHRhYmxlcywgd2hp Y2ggbWF5IGJlIGZyb20gYW5vdGhlciBzZXNzaW9uOgpBTkQgYy5yZWxwZXJzaXN0ZW5jZSAh PSAndCcKLS0gRnVuY3Rpb24gbWF5IHRocm93IGFuIGVycm9yIHdoZW4gdGhpcyBpcyBvbWl0 dGVkOgpBTkQgYy5yZWxraW5kID0gJ2knIEFORCBpLmluZGlzcmVhZHkgQU5EIGkuaW5kaXN2 YWxpZApPUkRFUiBCWSBjLnJlbHBhZ2VzIERFU0MgTElNSVQgMTA7CiBidF9pbmRleF9jaGVj ayB8ICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAgfCByZWxwYWdlcwotLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t CiAgICAgICAgICAgICAgICB8IHBnX2RlcGVuZF9yZWZlcmVuY2VfaW5kZXggICAgICAgfCAg ICAgICA0MwogICAgICAgICAgICAgICAgfCBwZ19kZXBlbmRfZGVwZW5kZXJfaW5kZXggICAg ICAgIHwgICAgICAgNDAKICAgICAgICAgICAgICAgIHwgcGdfcHJvY19wcm9uYW1lX2FyZ3Nf bnNwX2luZGV4ICB8ICAgICAgIDMxCiAgICAgICAgICAgICAgICB8IHBnX2Rlc2NyaXB0aW9u X29fY19vX2luZGV4ICAgICAgfCAgICAgICAyMQogICAgICAgICAgICAgICAgfCBwZ19hdHRy aWJ1dGVfcmVsaWRfYXR0bmFtX2luZGV4IHwgICAgICAgMTQKICAgICAgICAgICAgICAgIHwg cGdfcHJvY19vaWRfaW5kZXggICAgICAgICAgICAgICB8ICAgICAgIDEwCiAgICAgICAgICAg ICAgICB8IHBnX2F0dHJpYnV0ZV9yZWxpZF9hdHRudW1faW5kZXggfCAgICAgICAgOQogICAg ICAgICAgICAgICAgfCBwZ19hbXByb2NfZmFtX3Byb2NfaW5kZXggICAgICAgIHwgICAgICAg IDUKICAgICAgICAgICAgICAgIHwgcGdfYW1vcF9vcHJfZmFtX2luZGV4ICAgICAgICAgICB8 ICAgICAgICA1CiAgICAgICAgICAgICAgICB8IHBnX2Ftb3BfZmFtX3N0cmF0X2luZGV4ICAg ICAgICAgfCAgICAgICAgNQooMTAgcm93cykKPC9wcmU+PHA+CiAgICAgIFRoaXMgZXhhbXBs ZSBzaG93cyBhIHNlc3Npb24gdGhhdCBwZXJmb3JtcyB2ZXJpZmljYXRpb24gb2YgdGhlCiAg ICAgIDEwIGxhcmdlc3QgY2F0YWxvZyBpbmRleGVzIGluIHRoZSBkYXRhYmFzZSA8c3BhbiBj bGFzcz0icXVvdGUiPuKAnDxzcGFuIGNsYXNzPSJxdW90ZSI+dGVzdDwvc3Bhbj7igJ08L3Nw YW4+LgogICAgICBWZXJpZmljYXRpb24gb2YgdGhlIHByZXNlbmNlIG9mIGhlYXAgdHVwbGVz IGFzIGluZGV4IHR1cGxlcyBpcwogICAgICByZXF1ZXN0ZWQgZm9yIHRoZSBzdWJzZXQgdGhh dCBhcmUgdW5pcXVlIGluZGV4ZXMuICBTaW5jZSBubwogICAgICBlcnJvciBpcyByYWlzZWQs IGFsbCBpbmRleGVzIHRlc3RlZCBhcHBlYXIgdG8gYmUgbG9naWNhbGx5CiAgICAgIGNvbnNp c3RlbnQuICBOYXR1cmFsbHksIHRoaXMgcXVlcnkgY291bGQgZWFzaWx5IGJlIGNoYW5nZWQg dG8KICAgICAgY2FsbCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNrPC9j b2RlPiBmb3IgZXZlcnkgaW5kZXggaW4gdGhlCiAgICAgIGRhdGFiYXNlIHdoZXJlIHZlcmlm aWNhdGlvbiBpcyBzdXBwb3J0ZWQuCiAgICAgPC9wPjxwPgogICAgICA8Y29kZSBjbGFzcz0i ZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNrPC9jb2RlPiBhY3F1aXJlcyBhbiA8Y29kZSBjbGFz cz0ibGl0ZXJhbCI+QWNjZXNzU2hhcmVMb2NrPC9jb2RlPgogICAgICBvbiB0aGUgdGFyZ2V0 IGluZGV4IGFuZCB0aGUgaGVhcCByZWxhdGlvbiBpdCBiZWxvbmdzIHRvLiBUaGlzIGxvY2sg bW9kZQogICAgICBpcyB0aGUgc2FtZSBsb2NrIG1vZGUgYWNxdWlyZWQgb24gcmVsYXRpb25z IGJ5IHNpbXBsZQogICAgICA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+U0VMRUNUPC9jb2RlPiBz dGF0ZW1lbnRzLgogICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNr PC9jb2RlPiBkb2VzIG5vdCB2ZXJpZnkgaW52YXJpYW50cwogICAgICB0aGF0IHNwYW4gY2hp bGQvcGFyZW50IHJlbGF0aW9uc2hpcHMsIGJ1dCB3aWxsIHZlcmlmeSB0aGUKICAgICAgcHJl c2VuY2Ugb2YgYWxsIGhlYXAgdHVwbGVzIGFzIGluZGV4IHR1cGxlcyB3aXRoaW4gdGhlIGlu ZGV4CiAgICAgIHdoZW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmhlYXBhbGxpbmRl eGVkPC9jb2RlPjwvZW0+IGlzCiAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj50cnVlPC9j b2RlPi4gIFdoZW4gYSByb3V0aW5lLCBsaWdodHdlaWdodCB0ZXN0IGZvcgogICAgICBjb3Jy dXB0aW9uIGlzIHJlcXVpcmVkIGluIGEgbGl2ZSBwcm9kdWN0aW9uIGVudmlyb25tZW50LCB1 c2luZwogICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNrPC9jb2Rl PiBvZnRlbiBwcm92aWRlcyB0aGUgYmVzdAogICAgICB0cmFkZS1vZmYgYmV0d2VlbiB0aG9y b3VnaG5lc3Mgb2YgdmVyaWZpY2F0aW9uIGFuZCBsaW1pdGluZyB0aGUKICAgICAgaW1wYWN0 IG9uIGFwcGxpY2F0aW9uIHBlcmZvcm1hbmNlIGFuZCBhdmFpbGFiaWxpdHkuCiAgICAgPC9w PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rp b24iPmJ0X2luZGV4X3BhcmVudF9jaGVjayhpbmRleCByZWdjbGFzcywgaGVhcGFsbGluZGV4 ZWQgYm9vbGVhbiwgcm9vdGRlc2NlbmQgYm9vbGVhbikgcmV0dXJucyB2b2lkPC9jb2RlPgog ICAgIDxhIGlkPSJpZC0xLjExLjcuMTIuOC4yLjIuMS4yIiBjbGFzcz0iaW5kZXh0ZXJtIj48 L2E+CiAgICA8L3NwYW4+PC9kdD48ZGQ+PHA+CiAgICAgIDxjb2RlIGNsYXNzPSJmdW5jdGlv biI+YnRfaW5kZXhfcGFyZW50X2NoZWNrPC9jb2RlPiB0ZXN0cyB0aGF0IGl0cwogICAgICB0 YXJnZXQsIGEgQi1UcmVlIGluZGV4LCByZXNwZWN0cyBhIHZhcmlldHkgb2YgaW52YXJpYW50 cy4KICAgICAgT3B0aW9uYWxseSwgd2hlbiB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxj b2RlPmhlYXBhbGxpbmRleGVkPC9jb2RlPjwvZW0+CiAgICAgIGFyZ3VtZW50IGlzIDxjb2Rl IGNsYXNzPSJsaXRlcmFsIj50cnVlPC9jb2RlPiwgdGhlIGZ1bmN0aW9uIHZlcmlmaWVzIHRo ZQogICAgICBwcmVzZW5jZSBvZiBhbGwgaGVhcCB0dXBsZXMgdGhhdCBzaG91bGQgYmUgZm91 bmQgd2l0aGluIHRoZQogICAgICBpbmRleC4gIFdoZW4gdGhlIG9wdGlvbmFsIDxlbSBjbGFz cz0icGFyYW1ldGVyIj48Y29kZT5yb290ZGVzY2VuZDwvY29kZT48L2VtPgogICAgICBhcmd1 bWVudCBpcyA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+dHJ1ZTwvY29kZT4sIHZlcmlmaWNhdGlv biByZS1maW5kcwogICAgICB0dXBsZXMgb24gdGhlIGxlYWYgbGV2ZWwgYnkgcGVyZm9ybWlu ZyBhIG5ldyBzZWFyY2ggZnJvbSB0aGUKICAgICAgcm9vdCBwYWdlIGZvciBlYWNoIHR1cGxl LiAgVGhlIGNoZWNrcyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgYnkKICAgICAgPGNvZGUgY2xh c3M9ImZ1bmN0aW9uIj5idF9pbmRleF9wYXJlbnRfY2hlY2s8L2NvZGU+IGFyZSBhIHN1cGVy c2V0IG9mIHRoZQogICAgICBjaGVja3MgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIGJ5IDxjb2Rl IGNsYXNzPSJmdW5jdGlvbiI+YnRfaW5kZXhfY2hlY2s8L2NvZGU+LgogICAgICA8Y29kZSBj bGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X3BhcmVudF9jaGVjazwvY29kZT4gY2FuIGJlIHRo b3VnaHQgb2YgYXMKICAgICAgYSBtb3JlIHRob3JvdWdoIHZhcmlhbnQgb2YgPGNvZGUgY2xh c3M9ImZ1bmN0aW9uIj5idF9pbmRleF9jaGVjazwvY29kZT46CiAgICAgIHVubGlrZSA8Y29k ZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNrPC9jb2RlPiwKICAgICAgPGNvZGUg Y2xhc3M9ImZ1bmN0aW9uIj5idF9pbmRleF9wYXJlbnRfY2hlY2s8L2NvZGU+IGFsc28gY2hl Y2tzCiAgICAgIGludmFyaWFudHMgdGhhdCBzcGFuIHBhcmVudC9jaGlsZCByZWxhdGlvbnNo aXBzLCBpbmNsdWRpbmcgY2hlY2tpbmcKICAgICAgdGhhdCB0aGVyZSBhcmUgbm8gbWlzc2lu ZyBkb3dubGlua3MgaW4gdGhlIGluZGV4IHN0cnVjdHVyZS4KICAgICAgPGNvZGUgY2xhc3M9 ImZ1bmN0aW9uIj5idF9pbmRleF9wYXJlbnRfY2hlY2s8L2NvZGU+IGZvbGxvd3MgdGhlIGdl bmVyYWwKICAgICAgY29udmVudGlvbiBvZiByYWlzaW5nIGFuIGVycm9yIGlmIGl0IGZpbmRz IGEgbG9naWNhbAogICAgICBpbmNvbnNpc3RlbmN5IG9yIG90aGVyIHByb2JsZW0uCiAgICAg PC9wPjxwPgogICAgICBBIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5TaGFyZUxvY2s8L2NvZGU+ IGlzIHJlcXVpcmVkIG9uIHRoZSB0YXJnZXQgaW5kZXggYnkKICAgICAgPGNvZGUgY2xhc3M9 ImZ1bmN0aW9uIj5idF9pbmRleF9wYXJlbnRfY2hlY2s8L2NvZGU+IChhCiAgICAgIDxjb2Rl IGNsYXNzPSJsaXRlcmFsIj5TaGFyZUxvY2s8L2NvZGU+IGlzIGFsc28gYWNxdWlyZWQgb24g dGhlIGhlYXAgcmVsYXRpb24pLgogICAgICBUaGVzZSBsb2NrcyBwcmV2ZW50IGNvbmN1cnJl bnQgZGF0YSBtb2RpZmljYXRpb24gZnJvbQogICAgICA8Y29kZSBjbGFzcz0iY29tbWFuZCI+ SU5TRVJUPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImNvbW1hbmQiPlVQREFURTwvY29kZT4sIGFu ZCA8Y29kZSBjbGFzcz0iY29tbWFuZCI+REVMRVRFPC9jb2RlPgogICAgICBjb21tYW5kcy4g IFRoZSBsb2NrcyBhbHNvIHByZXZlbnQgdGhlIHVuZGVybHlpbmcgcmVsYXRpb24gZnJvbQog ICAgICBiZWluZyBjb25jdXJyZW50bHkgcHJvY2Vzc2VkIGJ5IDxjb2RlIGNsYXNzPSJjb21t YW5kIj5WQUNVVU08L2NvZGU+LCBhcyB3ZWxsIGFzCiAgICAgIGFsbCBvdGhlciB1dGlsaXR5 IGNvbW1hbmRzLiAgTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBob2xkcyBsb2NrcwogICAgICBv bmx5IHdoaWxlIHJ1bm5pbmcsIG5vdCBmb3IgdGhlIGVudGlyZSB0cmFuc2FjdGlvbi4KICAg ICA8L3A+PHA+CiAgICAgIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YnRfaW5kZXhfcGFyZW50 X2NoZWNrPC9jb2RlPidzIGFkZGl0aW9uYWwKICAgICAgdmVyaWZpY2F0aW9uIGlzIG1vcmUg bGlrZWx5IHRvIGRldGVjdCB2YXJpb3VzIHBhdGhvbG9naWNhbAogICAgICBjYXNlcy4gIFRo ZXNlIGNhc2VzIG1heSBpbnZvbHZlIGFuIGluY29ycmVjdGx5IGltcGxlbWVudGVkCiAgICAg IEItVHJlZSBvcGVyYXRvciBjbGFzcyB1c2VkIGJ5IHRoZSBpbmRleCB0aGF0IGlzIGNoZWNr ZWQsIG9yLAogICAgICBoeXBvdGhldGljYWxseSwgdW5kaXNjb3ZlcmVkIGJ1Z3MgaW4gdGhl IHVuZGVybHlpbmcgQi1UcmVlIGluZGV4CiAgICAgIGFjY2VzcyBtZXRob2QgY29kZS4gIE5v dGUgdGhhdAogICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X3BhcmVudF9j aGVjazwvY29kZT4gY2Fubm90IGJlIHVzZWQgd2hlbgogICAgICBob3Qgc3RhbmRieSBtb2Rl IGlzIGVuYWJsZWQgKGkuZS4sIG9uIHJlYWQtb25seSBwaHlzaWNhbAogICAgICByZXBsaWNh cyksIHVubGlrZSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJ0X2luZGV4X2NoZWNrPC9jb2Rl Pi4KICAgICA8L3A+PC9kZD48L2RsPjwvZGl2PjxkaXYgY2xhc3M9InRpcCI+PGgzIGNsYXNz PSJ0aXRsZSI+VGlwPC9oMz48cD4KICAgIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YnRfaW5k ZXhfY2hlY2s8L2NvZGU+IGFuZAogICAgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5idF9pbmRl eF9wYXJlbnRfY2hlY2s8L2NvZGU+IGJvdGggb3V0cHV0IGxvZwogICAgbWVzc2FnZXMgYWJv dXQgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZXNzIGF0CiAgICA8Y29kZSBjbGFzcz0ibGl0ZXJh bCI+REVCVUcxPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkRFQlVHMjwvY29k ZT4gc2V2ZXJpdHkKICAgIGxldmVscy4gIFRoZXNlIG1lc3NhZ2VzIHByb3ZpZGUgZGV0YWls ZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICB2ZXJpZmljYXRpb24gcHJvY2VzcyB0aGF0 IG1heSBiZSBvZiBpbnRlcmVzdCB0bwogICAgPHNwYW4gY2xhc3M9InByb2R1Y3RuYW1lIj5Q b3N0Z3JlU1FMPC9zcGFuPiBkZXZlbG9wZXJzLiAgQWR2YW5jZWQgdXNlcnMKICAgIG1heSBh bHNvIGZpbmQgdGhpcyBpbmZvcm1hdGlvbiBoZWxwZnVsLCBzaW5jZSBpdCBwcm92aWRlcwog ICAgYWRkaXRpb25hbCBjb250ZXh0IHNob3VsZCB2ZXJpZmljYXRpb24gYWN0dWFsbHkgZGV0 ZWN0IGFuCiAgICBpbmNvbnNpc3RlbmN5LiAgUnVubmluZzoKPC9wPjxwcmUgY2xhc3M9InBy b2dyYW1saXN0aW5nIj4KU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBERUJVRzE7CjwvcHJl PjxwPgogICAgaW4gYW4gaW50ZXJhY3RpdmUgPHNwYW4gY2xhc3M9ImFwcGxpY2F0aW9uIj5w c3FsPC9zcGFuPiBzZXNzaW9uIGJlZm9yZQogICAgcnVubmluZyBhIHZlcmlmaWNhdGlvbiBx dWVyeSB3aWxsIGRpc3BsYXkgbWVzc2FnZXMgYWJvdXQgdGhlCiAgICBwcm9ncmVzcyBvZiB2 ZXJpZmljYXRpb24gd2l0aCBhIG1hbmFnZWFibGUgbGV2ZWwgb2YgZGV0YWlsLgogICA8L3A+ PC9kaXY+PGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48ZGwgY2xhc3M9InZhcmlhYmxlbGlz dCI+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICA8Y29kZSBjbGFzcz0iZnVuY3Rpb24i PgogICAgICB2ZXJpZnlfaGVhcGFtKHJlbGF0aW9uIHJlZ2NsYXNzLAogICAgICAgICAgICAg ICAgICAgIG9uX2Vycm9yX3N0b3AgYm9vbGVhbiwKICAgICAgICAgICAgICAgICAgICBjaGVj a190b2FzdCBib29sZWFuLAogICAgICAgICAgICAgICAgICAgIHNraXAgdGV4dCwKICAgICAg ICAgICAgICAgICAgICBzdGFydGJsb2NrIGJpZ2ludCwKICAgICAgICAgICAgICAgICAgICBl bmRibG9jayBiaWdpbnQsCiAgICAgICAgICAgICAgICAgICAgYmxrbm8gT1VUIGJpZ2ludCwK ICAgICAgICAgICAgICAgICAgICBvZmZudW0gT1VUIGludGVnZXIsCiAgICAgICAgICAgICAg ICAgICAgYXR0bnVtIE9VVCBpbnRlZ2VyLAogICAgICAgICAgICAgICAgICAgIG1zZyBPVVQg dGV4dCkKICAgICAgcmV0dXJucyBzZXRvZiByZWNvcmQKICAgICA8L2NvZGU+CiAgICA8L3Nw YW4+PC9kdD48ZGQ+PHA+CiAgICAgIENoZWNrcyBhIHRhYmxlLCBzZXF1ZW5jZSwgb3IgbWF0 ZXJpYWxpemVkIHZpZXcgZm9yIHN0cnVjdHVyYWwgY29ycnVwdGlvbiwKICAgICAgd2hlcmUg cGFnZXMgaW4gdGhlIHJlbGF0aW9uIGNvbnRhaW4gZGF0YSB0aGF0IGlzIGludmFsaWRseSBm b3JtYXR0ZWQsIGFuZAogICAgICBmb3IgbG9naWNhbCBjb3JydXB0aW9uLCB3aGVyZSBwYWdl cyBhcmUgc3RydWN0dXJhbGx5IHZhbGlkIGJ1dAogICAgICBpbmNvbnNpc3RlbnQgd2l0aCB0 aGUgcmVzdCBvZiB0aGUgZGF0YWJhc2UgY2x1c3Rlci4KICAgICA8L3A+PHA+CiAgICAgIFRo ZSBmb2xsb3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzIGFyZSByZWNvZ25pemVkOgogICAgIDwv cD48ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij48 ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5vbl9lcnJvcl9z dG9wPC9jb2RlPjwvc3Bhbj48L2R0PjxkZD48cD4KICAgICAgICAgSWYgdHJ1ZSwgY29ycnVw dGlvbiBjaGVja2luZyBzdG9wcyBhdCB0aGUgZW5kIG9mIHRoZSBmaXJzdCBibG9jayBpbgog ICAgICAgICB3aGljaCBhbnkgY29ycnVwdGlvbnMgYXJlIGZvdW5kLgogICAgICAgIDwvcD48 cD4KICAgICAgICAgRGVmYXVsdHMgdG8gZmFsc2UuCiAgICAgICAgPC9wPjwvZGQ+PGR0Pjxz cGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+Y2hlY2tfdG9hc3Q8L2Nv ZGU+PC9zcGFuPjwvZHQ+PGRkPjxwPgogICAgICAgICBJZiB0cnVlLCB0b2FzdGVkIHZhbHVl cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSB0YXJnZXQgcmVsYXRpb24ncwogICAgICAgICBU T0FTVCB0YWJsZS4KICAgICAgICA8L3A+PHA+CiAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGtu b3duIHRvIGJlIHNsb3cuICBBbHNvLCBpZiB0aGUgdG9hc3QgdGFibGUgb3IgaXRzCiAgICAg ICAgIGluZGV4IGlzIGNvcnJ1cHQsIGNoZWNraW5nIGl0IGFnYWluc3QgdG9hc3QgdmFsdWVz IGNvdWxkIGNvbmNlaXZhYmx5CiAgICAgICAgIGNyYXNoIHRoZSBzZXJ2ZXIsIGFsdGhvdWdo IGluIG1hbnkgY2FzZXMgdGhpcyB3b3VsZCBqdXN0IHByb2R1Y2UgYW4KICAgICAgICAgZXJy b3IuCiAgICAgICAgPC9wPjxwPgogICAgICAgICBEZWZhdWx0cyB0byBmYWxzZS4KICAgICAg ICA8L3A+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJsaXRlcmFs Ij5za2lwPC9jb2RlPjwvc3Bhbj48L2R0PjxkZD48cD4KICAgICAgICAgSWYgbm90IDxjb2Rl IGNsYXNzPSJsaXRlcmFsIj5ub25lPC9jb2RlPiwgY29ycnVwdGlvbiBjaGVja2luZyBza2lw cyBibG9ja3MgdGhhdAogICAgICAgICBhcmUgbWFya2VkIGFzIGFsbC12aXNpYmxlIG9yIGFs bC1mcm96ZW4sIGFzIHNwZWNpZmllZC4KICAgICAgICAgVmFsaWQgb3B0aW9ucyBhcmUgPGNv ZGUgY2xhc3M9ImxpdGVyYWwiPmFsbC12aXNpYmxlPC9jb2RlPiwKICAgICAgICAgPGNvZGUg Y2xhc3M9ImxpdGVyYWwiPmFsbC1mcm96ZW48L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0ibGl0 ZXJhbCI+bm9uZTwvY29kZT4uCiAgICAgICAgPC9wPjxwPgogICAgICAgICBEZWZhdWx0cyB0 byA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+bm9uZTwvY29kZT4uCiAgICAgICAgPC9wPjwvZGQ+ PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+c3RhcnRibG9j azwvY29kZT48L3NwYW4+PC9kdD48ZGQ+PHA+CiAgICAgICAgIElmIHNwZWNpZmllZCwgY29y cnVwdGlvbiBjaGVja2luZyBiZWdpbnMgYXQgdGhlIHNwZWNpZmllZCBibG9jaywKICAgICAg ICAgc2tpcHBpbmcgYWxsIHByZXZpb3VzIGJsb2Nrcy4gIEl0IGlzIGFuIGVycm9yIHRvIHNw ZWNpZnkgYQogICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhcnRibG9j azwvY29kZT48L2VtPiBvdXRzaWRlIHRoZSByYW5nZSBvZiBibG9ja3MgaW4gdGhlCiAgICAg ICAgIHRhcmdldCB0YWJsZS4KICAgICAgICA8L3A+PHA+CiAgICAgICAgIEJ5IGRlZmF1bHQs IGNoZWNraW5nIGJlZ2lucyBhdCB0aGUgZmlyc3QgYmxvY2suCiAgICAgICAgPC9wPjwvZGQ+ PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+ZW5kYmxvY2s8 L2NvZGU+PC9zcGFuPjwvZHQ+PGRkPjxwPgogICAgICAgICBJZiBzcGVjaWZpZWQsIGNvcnJ1 cHRpb24gY2hlY2tpbmcgZW5kcyBhdCB0aGUgc3BlY2lmaWVkIGJsb2NrLAogICAgICAgICBz a2lwcGluZyBhbGwgcmVtYWluaW5nIGJsb2Nrcy4gIEl0IGlzIGFuIGVycm9yIHRvIHNwZWNp ZnkgYW4KICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmVuZGJsb2NrPC9j b2RlPjwvZW0+IG91dHNpZGUgdGhlIHJhbmdlIG9mIGJsb2NrcyBpbiB0aGUgdGFyZ2V0CiAg ICAgICAgIHRhYmxlLgogICAgICAgIDwvcD48cD4KICAgICAgICAgQnkgZGVmYXVsdCwgYWxs IGJsb2NrcyBhcmUgY2hlY2tlZC4KICAgICAgICA8L3A+PC9kZD48L2RsPjwvZGl2PjxwPgog ICAgICBGb3IgZWFjaCBjb3JydXB0aW9uIGRldGVjdGVkLCA8Y29kZSBjbGFzcz0iZnVuY3Rp b24iPnZlcmlmeV9oZWFwYW08L2NvZGU+IHJldHVybnMKICAgICAgYSByb3cgd2l0aCB0aGUg Zm9sbG93aW5nIGNvbHVtbnM6CiAgICAgPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+ PGRsIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUg Y2xhc3M9ImxpdGVyYWwiPmJsa25vPC9jb2RlPjwvc3Bhbj48L2R0PjxkZD48cD4KICAgICAg ICAgVGhlIG51bWJlciBvZiB0aGUgYmxvY2sgY29udGFpbmluZyB0aGUgY29ycnVwdCBwYWdl LgogICAgICAgIDwvcD48L2RkPjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9 ImxpdGVyYWwiPm9mZm51bTwvY29kZT48L3NwYW4+PC9kdD48ZGQ+PHA+CiAgICAgICAgIFRo ZSBPZmZzZXROdW1iZXIgb2YgdGhlIGNvcnJ1cHQgdHVwbGUuCiAgICAgICAgPC9wPjwvZGQ+ PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+YXR0bnVtPC9j b2RlPjwvc3Bhbj48L2R0PjxkZD48cD4KICAgICAgICAgVGhlIGF0dHJpYnV0ZSBudW1iZXIg b2YgdGhlIGNvcnJ1cHQgY29sdW1uIGluIHRoZSB0dXBsZSwgaWYgdGhlCiAgICAgICAgIGNv cnJ1cHRpb24gaXMgc3BlY2lmaWMgdG8gYSBjb2x1bW4gYW5kIG5vdCB0aGUgdHVwbGUgYXMg YSB3aG9sZS4KICAgICAgICA8L3A+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2Rl IGNsYXNzPSJsaXRlcmFsIj5tc2c8L2NvZGU+PC9zcGFuPjwvZHQ+PGRkPjxwPgogICAgICAg ICBBIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgcHJvYmxlbSBkZXRlY3RlZC4KICAgICAgICA8 L3A+PC9kZD48L2RsPjwvZGl2PjwvZGQ+PC9kbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJz ZWN0MiIgaWQ9IkFNQ0hFQ0stT1BUSU9OQUwtSEVBUEFMTElOREVYRUQtVkVSSUZJQ0FUSU9O Ij48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj5G LjIuMi7CoE9wdGlvbmFsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWFwYWxsaW5k ZXhlZDwvY29kZT48L2VtPiBWZXJpZmljYXRpb24gPGEgaHJlZj0iI0FNQ0hFQ0stT1BUSU9O QUwtSEVBUEFMTElOREVYRUQtVkVSSUZJQ0FUSU9OIiBjbGFzcz0iaWRfbGluayI+IzwvYT48 L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPgogIFdoZW4gdGhlIDxlbSBjbGFzcz0icGFyYW1l dGVyIj48Y29kZT5oZWFwYWxsaW5kZXhlZDwvY29kZT48L2VtPiBhcmd1bWVudCB0byBCLVRy ZWUKICB2ZXJpZmljYXRpb24gZnVuY3Rpb25zIGlzIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj50 cnVlPC9jb2RlPiwgYW4gYWRkaXRpb25hbAogIHBoYXNlIG9mIHZlcmlmaWNhdGlvbiBpcyBw ZXJmb3JtZWQgYWdhaW5zdCB0aGUgdGFibGUgYXNzb2NpYXRlZCB3aXRoCiAgdGhlIHRhcmdl dCBpbmRleCByZWxhdGlvbi4gIFRoaXMgY29uc2lzdHMgb2YgYSA8c3BhbiBjbGFzcz0icXVv dGUiPuKAnDxzcGFuIGNsYXNzPSJxdW90ZSI+ZHVtbXk8L3NwYW4+4oCdPC9zcGFuPgogIDxj b2RlIGNsYXNzPSJjb21tYW5kIj5DUkVBVEUgSU5ERVg8L2NvZGU+IG9wZXJhdGlvbiwgd2hp Y2ggY2hlY2tzIGZvciB0aGUKICBwcmVzZW5jZSBvZiBhbGwgaHlwb3RoZXRpY2FsIG5ldyBp bmRleCB0dXBsZXMgYWdhaW5zdCBhIHRlbXBvcmFyeSwKICBpbi1tZW1vcnkgc3VtbWFyaXpp bmcgc3RydWN0dXJlICh0aGlzIGlzIGJ1aWx0IHdoZW4gbmVlZGVkIGR1cmluZwogIHRoZSBi YXNpYyBmaXJzdCBwaGFzZSBvZiB2ZXJpZmljYXRpb24pLiAgVGhlIHN1bW1hcml6aW5nIHN0 cnVjdHVyZQogIDxzcGFuIGNsYXNzPSJxdW90ZSI+4oCcPHNwYW4gY2xhc3M9InF1b3RlIj5m aW5nZXJwcmludHM8L3NwYW4+4oCdPC9zcGFuPiBldmVyeSB0dXBsZSBmb3VuZCB3aXRoaW4g dGhlIHRhcmdldAogIGluZGV4LiAgVGhlIGhpZ2ggbGV2ZWwgcHJpbmNpcGxlIGJlaGluZAog IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWFwYWxsaW5kZXhlZDwvY29kZT48L2Vt PiB2ZXJpZmljYXRpb24gaXMgdGhhdCBhIG5ldwogIGluZGV4IHRoYXQgaXMgZXF1aXZhbGVu dCB0byB0aGUgZXhpc3RpbmcsIHRhcmdldCBpbmRleCBtdXN0IG9ubHkKICBoYXZlIGVudHJp ZXMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIGV4aXN0aW5nIHN0cnVjdHVyZS4KIDwvcD48 cD4KICBUaGUgYWRkaXRpb25hbCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVhcGFs bGluZGV4ZWQ8L2NvZGU+PC9lbT4gcGhhc2UgYWRkcwogIHNpZ25pZmljYW50IG92ZXJoZWFk OiB2ZXJpZmljYXRpb24gd2lsbCB0eXBpY2FsbHkgdGFrZSBzZXZlcmFsIHRpbWVzCiAgbG9u Z2VyLiAgSG93ZXZlciwgdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSByZWxhdGlvbi1sZXZl bCBsb2NrcwogIGFjcXVpcmVkIHdoZW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmhl YXBhbGxpbmRleGVkPC9jb2RlPjwvZW0+IHZlcmlmaWNhdGlvbiBpcwogIHBlcmZvcm1lZC4K IDwvcD48cD4KICBUaGUgc3VtbWFyaXppbmcgc3RydWN0dXJlIGlzIGJvdW5kIGluIHNpemUg YnkKICA8Y29kZSBjbGFzcz0idmFybmFtZSI+bWFpbnRlbmFuY2Vfd29ya19tZW08L2NvZGU+ LiAgSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQKICB0aGVyZSBpcyBubyBtb3JlIHRoYW4gYSAy JSBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlIHRvIGRldGVjdCBhbgogIGluY29uc2lzdGVuY3kg Zm9yIGVhY2ggaGVhcCB0dXBsZSB0aGF0IHNob3VsZCBiZSByZXByZXNlbnRlZCBpbiB0aGUK ICBpbmRleCwgYXBwcm94aW1hdGVseSAyIGJ5dGVzIG9mIG1lbW9yeSBhcmUgbmVlZGVkIHBl ciB0dXBsZS4gIEFzCiAgbGVzcyBtZW1vcnkgaXMgbWFkZSBhdmFpbGFibGUgcGVyIHR1cGxl LCB0aGUgcHJvYmFiaWxpdHkgb2YgbWlzc2luZwogIGFuIGluY29uc2lzdGVuY3kgc2xvd2x5 IGluY3JlYXNlcy4gIFRoaXMgYXBwcm9hY2ggbGltaXRzIHRoZQogIG92ZXJoZWFkIG9mIHZl cmlmaWNhdGlvbiBzaWduaWZpY2FudGx5LCB3aGlsZSBvbmx5IHNsaWdodGx5IHJlZHVjaW5n CiAgdGhlIHByb2JhYmlsaXR5IG9mIGRldGVjdGluZyBhIHByb2JsZW0sIGVzcGVjaWFsbHkg Zm9yIGluc3RhbGxhdGlvbnMKICB3aGVyZSB2ZXJpZmljYXRpb24gaXMgdHJlYXRlZCBhcyBh IHJvdXRpbmUgbWFpbnRlbmFuY2UgdGFzay4gIEFueQogIHNpbmdsZSBhYnNlbnQgb3IgbWFs Zm9ybWVkIHR1cGxlIGhhcyBhIG5ldyBvcHBvcnR1bml0eSB0byBiZQogIGRldGVjdGVkIHdp dGggZWFjaCBuZXcgdmVyaWZpY2F0aW9uIGF0dGVtcHQuCiA8L3A+PC9kaXY+PGRpdiBjbGFz cz0ic2VjdDIiIGlkPSJBTUNIRUNLLVVTSU5HLUFNQ0hFQ0stRUZGRUNUSVZFTFkiPjxkaXYg Y2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPkYuMi4zLsKg VXNpbmcgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hbWNoZWNrPC9jb2RlPiBFZmZlY3RpdmVs eSA8YSBocmVmPSIjQU1DSEVDSy1VU0lORy1BTUNIRUNLLUVGRkVDVElWRUxZIiBjbGFzcz0i aWRfbGluayI+IzwvYT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPgogIDxjb2RlIGNsYXNz PSJmaWxlbmFtZSI+YW1jaGVjazwvY29kZT4gY2FuIGJlIGVmZmVjdGl2ZSBhdCBkZXRlY3Rp bmcgdmFyaW91cyB0eXBlcyBvZgogIGZhaWx1cmUgbW9kZXMgdGhhdCA8YSBjbGFzcz0ibGlu ayIgaHJlZj0iYXBwLWluaXRkYi5odG1sI0FQUC1JTklUREItREFUQS1DSEVDS1NVTVMiPjxz cGFuIGNsYXNzPSJhcHBsaWNhdGlvbiI+ZGF0YQogIGNoZWNrc3Vtczwvc3Bhbj48L2E+IHdp bGwgZmFpbCB0byBjYXRjaC4gIFRoZXNlIGluY2x1ZGU6CgogIDwvcD48ZGl2IGNsYXNzPSJp dGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiBzdHlsZT0ibGlzdC1zdHls ZS10eXBlOiBkaXNjOyAiPjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPgogICAgIFN0cnVjdHVy YWwgaW5jb25zaXN0ZW5jaWVzIGNhdXNlZCBieSBpbmNvcnJlY3Qgb3BlcmF0b3IgY2xhc3MK ICAgICBpbXBsZW1lbnRhdGlvbnMuCiAgICA8L3A+PHA+CiAgICAgVGhpcyBpbmNsdWRlcyBp c3N1ZXMgY2F1c2VkIGJ5IHRoZSBjb21wYXJpc29uIHJ1bGVzIG9mIG9wZXJhdGluZwogICAg IHN5c3RlbSBjb2xsYXRpb25zIGNoYW5naW5nLiBDb21wYXJpc29ucyBvZiBkYXR1bXMgb2Yg YSBjb2xsYXRhYmxlCiAgICAgdHlwZSBsaWtlIDxjb2RlIGNsYXNzPSJ0eXBlIj50ZXh0PC9j b2RlPiBtdXN0IGJlIGltbXV0YWJsZSAoanVzdCBhcyBhbGwKICAgICBjb21wYXJpc29ucyB1 c2VkIGZvciBCLVRyZWUgaW5kZXggc2NhbnMgbXVzdCBiZSBpbW11dGFibGUpLCB3aGljaAog ICAgIGltcGxpZXMgdGhhdCBvcGVyYXRpbmcgc3lzdGVtIGNvbGxhdGlvbiBydWxlcyBtdXN0 IG5ldmVyIGNoYW5nZS4KICAgICBUaG91Z2ggcmFyZSwgdXBkYXRlcyB0byBvcGVyYXRpbmcg c3lzdGVtIGNvbGxhdGlvbiBydWxlcyBjYW4KICAgICBjYXVzZSB0aGVzZSBpc3N1ZXMuIE1v cmUgY29tbW9ubHksIGFuIGluY29uc2lzdGVuY3kgaW4gdGhlCiAgICAgY29sbGF0aW9uIG9y ZGVyIGJldHdlZW4gYSBwcmltYXJ5IHNlcnZlciBhbmQgYSBzdGFuZGJ5IHNlcnZlciBpcwog ICAgIGltcGxpY2F0ZWQsIHBvc3NpYmx5IGJlY2F1c2UgdGhlIDxzcGFuIGNsYXNzPSJlbXBo YXNpcyI+PGVtPm1ham9yPC9lbT48L3NwYW4+IG9wZXJhdGluZwogICAgIHN5c3RlbSB2ZXJz aW9uIGluIHVzZSBpcyBpbmNvbnNpc3RlbnQuICBTdWNoIGluY29uc2lzdGVuY2llcyB3aWxs CiAgICAgZ2VuZXJhbGx5IG9ubHkgYXJpc2Ugb24gc3RhbmRieSBzZXJ2ZXJzLCBhbmQgc28g Y2FuIGdlbmVyYWxseQogICAgIG9ubHkgYmUgZGV0ZWN0ZWQgb24gc3RhbmRieSBzZXJ2ZXJz LgogICAgPC9wPjxwPgogICAgIElmIGEgcHJvYmxlbSBsaWtlIHRoaXMgYXJpc2VzLCBpdCBt YXkgbm90IGFmZmVjdCBlYWNoIGluZGl2aWR1YWwKICAgICBpbmRleCB0aGF0IGlzIG9yZGVy ZWQgdXNpbmcgYW4gYWZmZWN0ZWQgY29sbGF0aW9uLCBzaW1wbHkgYmVjYXVzZQogICAgIDxz cGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmluZGV4ZWQ8L2VtPjwvc3Bhbj4gdmFsdWVzIG1p Z2h0IGhhcHBlbiB0byBoYXZlIHRoZSBzYW1lCiAgICAgYWJzb2x1dGUgb3JkZXJpbmcgcmVn YXJkbGVzcyBvZiB0aGUgYmVoYXZpb3JhbCBpbmNvbnNpc3RlbmN5LiBTZWUKICAgICA8YSBj bGFzcz0ieHJlZiIgaHJlZj0ibG9jYWxlLmh0bWwiIHRpdGxlPSIyNC4xLsKgTG9jYWxlIFN1 cHBvcnQiPlNlY3Rpb27CoDI0LjE8L2E+IGFuZCA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY29s bGF0aW9uLmh0bWwiIHRpdGxlPSIyNC4yLsKgQ29sbGF0aW9uIFN1cHBvcnQiPlNlY3Rpb27C oDI0LjI8L2E+IGZvcgogICAgIGZ1cnRoZXIgZGV0YWlscyBhYm91dCBob3cgPHNwYW4gY2xh c3M9InByb2R1Y3RuYW1lIj5Qb3N0Z3JlU1FMPC9zcGFuPiB1c2VzCiAgICAgb3BlcmF0aW5n IHN5c3RlbSBsb2NhbGVzIGFuZCBjb2xsYXRpb25zLgogICAgPC9wPjwvbGk+PGxpIGNsYXNz PSJsaXN0aXRlbSI+PHA+CiAgICAgU3RydWN0dXJhbCBpbmNvbnNpc3RlbmNpZXMgYmV0d2Vl biBpbmRleGVzIGFuZCB0aGUgaGVhcCByZWxhdGlvbnMKICAgICB0aGF0IGFyZSBpbmRleGVk ICh3aGVuIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWFwYWxsaW5kZXhlZDwvY29k ZT48L2VtPgogICAgIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQpLgogICAgPC9wPjxwPgog ICAgIFRoZXJlIGlzIG5vIGNyb3NzLWNoZWNraW5nIG9mIGluZGV4ZXMgYWdhaW5zdCB0aGVp ciBoZWFwIHJlbGF0aW9uCiAgICAgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uICBTeW1wdG9t cyBvZiBoZWFwIGNvcnJ1cHRpb24gY2FuIGJlIHN1YnRsZS4KICAgIDwvcD48L2xpPjxsaSBj bGFzcz0ibGlzdGl0ZW0iPjxwPgogICAgIENvcnJ1cHRpb24gY2F1c2VkIGJ5IGh5cG90aGV0 aWNhbCB1bmRpc2NvdmVyZWQgYnVncyBpbiB0aGUKICAgICB1bmRlcmx5aW5nIDxzcGFuIGNs YXNzPSJwcm9kdWN0bmFtZSI+UG9zdGdyZVNRTDwvc3Bhbj4gYWNjZXNzIG1ldGhvZAogICAg IGNvZGUsIHNvcnQgY29kZSwgb3IgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBjb2RlLgogICAg PC9wPjxwPgogICAgIEF1dG9tYXRpYyB2ZXJpZmljYXRpb24gb2YgdGhlIHN0cnVjdHVyYWwg aW50ZWdyaXR5IG9mIGluZGV4ZXMKICAgICBwbGF5cyBhIHJvbGUgaW4gdGhlIGdlbmVyYWwg dGVzdGluZyBvZiBuZXcgb3IgcHJvcG9zZWQKICAgICA8c3BhbiBjbGFzcz0icHJvZHVjdG5h bWUiPlBvc3RncmVTUUw8L3NwYW4+IGZlYXR1cmVzIHRoYXQgY291bGQgcGxhdXNpYmx5IGFs bG93IGEKICAgICBsb2dpY2FsIGluY29uc2lzdGVuY3kgdG8gYmUgaW50cm9kdWNlZC4gIFZl cmlmaWNhdGlvbiBvZiB0YWJsZQogICAgIHN0cnVjdHVyZSBhbmQgYXNzb2NpYXRlZCB2aXNp YmlsaXR5IGFuZCB0cmFuc2FjdGlvbiBzdGF0dXMKICAgICBpbmZvcm1hdGlvbiBwbGF5cyBh IHNpbWlsYXIgcm9sZS4gIE9uZSBvYnZpb3VzIHRlc3Rpbmcgc3RyYXRlZ3kKICAgICBpcyB0 byBjYWxsIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YW1jaGVjazwvY29kZT4gZnVuY3Rpb25z IGNvbnRpbnVvdXNseQogICAgIHdoZW4gcnVubmluZyB0aGUgc3RhbmRhcmQgcmVncmVzc2lv biB0ZXN0cy4gIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0icmVncmVzcy1ydW4uaHRtbCIg dGl0bGU9IjMzLjEuwqBSdW5uaW5nIHRoZSBUZXN0cyI+U2VjdGlvbsKgMzMuMTwvYT4gZm9y IGRldGFpbHMgb24gcnVubmluZyB0aGUgdGVzdHMuCiAgICA8L3A+PC9saT48bGkgY2xhc3M9 Imxpc3RpdGVtIj48cD4KICAgICBGaWxlIHN5c3RlbSBvciBzdG9yYWdlIHN1YnN5c3RlbSBm YXVsdHMgd2hlcmUgY2hlY2tzdW1zIGhhcHBlbiB0bwogICAgIHNpbXBseSBub3QgYmUgZW5h YmxlZC4KICAgIDwvcD48cD4KICAgICBOb3RlIHRoYXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1l Ij5hbWNoZWNrPC9jb2RlPiBleGFtaW5lcyBhIHBhZ2UgYXMgcmVwcmVzZW50ZWQgaW4gc29t ZQogICAgIHNoYXJlZCBtZW1vcnkgYnVmZmVyIGF0IHRoZSB0aW1lIG9mIHZlcmlmaWNhdGlv biBpZiB0aGVyZSBpcyBvbmx5IGEKICAgICBzaGFyZWQgYnVmZmVyIGhpdCB3aGVuIGFjY2Vz c2luZyB0aGUgYmxvY2suIENvbnNlcXVlbnRseSwKICAgICA8Y29kZSBjbGFzcz0iZmlsZW5h bWUiPmFtY2hlY2s8L2NvZGU+IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGV4YW1pbmUgZGF0YSBy ZWFkIGZyb20gdGhlCiAgICAgZmlsZSBzeXN0ZW0gYXQgdGhlIHRpbWUgb2YgdmVyaWZpY2F0 aW9uLiBOb3RlIHRoYXQgd2hlbiBjaGVja3N1bXMgYXJlCiAgICAgZW5hYmxlZCwgPGNvZGUg Y2xhc3M9ImZpbGVuYW1lIj5hbWNoZWNrPC9jb2RlPiBtYXkgcmFpc2UgYW4gZXJyb3IgZHVl IHRvIGEgY2hlY2tzdW0KICAgICBmYWlsdXJlIHdoZW4gYSBjb3JydXB0IGJsb2NrIGlzIHJl YWQgaW50byBhIGJ1ZmZlci4KICAgIDwvcD48L2xpPjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxw PgogICAgIENvcnJ1cHRpb24gY2F1c2VkIGJ5IGZhdWx0eSBSQU0sIG9yIHRoZSBicm9hZGVy IG1lbW9yeSBzdWJzeXN0ZW0uCiAgICA8L3A+PHA+CiAgICAgPHNwYW4gY2xhc3M9InByb2R1 Y3RuYW1lIj5Qb3N0Z3JlU1FMPC9zcGFuPiBkb2VzIG5vdCBwcm90ZWN0IGFnYWluc3QgY29y cmVjdGFibGUKICAgICBtZW1vcnkgZXJyb3JzIGFuZCBpdCBpcyBhc3N1bWVkIHlvdSB3aWxs IG9wZXJhdGUgdXNpbmcgUkFNIHRoYXQKICAgICB1c2VzIGluZHVzdHJ5IHN0YW5kYXJkIEVy cm9yIENvcnJlY3RpbmcgQ29kZXMgKEVDQykgb3IgYmV0dGVyCiAgICAgcHJvdGVjdGlvbi4g IEhvd2V2ZXIsIEVDQyBtZW1vcnkgaXMgdHlwaWNhbGx5IG9ubHkgaW1tdW5lIHRvCiAgICAg c2luZ2xlLWJpdCBlcnJvcnMsIGFuZCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdG8gcHJvdmlk ZQogICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmFic29sdXRlPC9lbT48L3NwYW4+ IHByb3RlY3Rpb24gYWdhaW5zdCBmYWlsdXJlcyB0aGF0CiAgICAgcmVzdWx0IGluIG1lbW9y eSBjb3JydXB0aW9uLgogICAgPC9wPjxwPgogICAgIFdoZW4gPGVtIGNsYXNzPSJwYXJhbWV0 ZXIiPjxjb2RlPmhlYXBhbGxpbmRleGVkPC9jb2RlPjwvZW0+IHZlcmlmaWNhdGlvbiBpcwog ICAgIHBlcmZvcm1lZCwgdGhlcmUgaXMgZ2VuZXJhbGx5IGEgZ3JlYXRseSBpbmNyZWFzZWQg Y2hhbmNlIG9mCiAgICAgZGV0ZWN0aW5nIHNpbmdsZS1iaXQgZXJyb3JzLCBzaW5jZSBzdHJp Y3QgYmluYXJ5IGVxdWFsaXR5IGlzCiAgICAgdGVzdGVkLCBhbmQgdGhlIGluZGV4ZWQgYXR0 cmlidXRlcyB3aXRoaW4gdGhlIGhlYXAgYXJlIHRlc3RlZC4KICAgIDwvcD48L2xpPjwvdWw+ PC9kaXY+PHA+CiA8L3A+PHA+CiAgU3RydWN0dXJhbCBjb3JydXB0aW9uIGNhbiBoYXBwZW4g ZHVlIHRvIGZhdWx0eSBzdG9yYWdlIGhhcmR3YXJlLCBvcgogIHJlbGF0aW9uIGZpbGVzIGJl aW5nIG92ZXJ3cml0dGVuIG9yIG1vZGlmaWVkIGJ5IHVucmVsYXRlZCBzb2Z0d2FyZS4KICBU aGlzIGtpbmQgb2YgY29ycnVwdGlvbiBjYW4gYWxzbyBiZSBkZXRlY3RlZCB3aXRoCiAgPGEg Y2xhc3M9ImxpbmsiIGhyZWY9ImNoZWNrc3Vtcy5odG1sIiB0aXRsZT0iMzAuMi7CoERhdGEg Q2hlY2tzdW1zIj48c3BhbiBjbGFzcz0iYXBwbGljYXRpb24iPmRhdGEgcGFnZQogIGNoZWNr c3Vtczwvc3Bhbj48L2E+LgogPC9wPjxwPgogIFJlbGF0aW9uIHBhZ2VzIHdoaWNoIGFyZSBj b3JyZWN0bHkgZm9ybWF0dGVkLCBpbnRlcm5hbGx5IGNvbnNpc3RlbnQsIGFuZAogIGNvcnJl Y3QgcmVsYXRpdmUgdG8gdGhlaXIgb3duIGludGVybmFsIGNoZWNrc3VtcyBtYXkgc3RpbGwg Y29udGFpbgogIGxvZ2ljYWwgY29ycnVwdGlvbi4gIEFzIHN1Y2gsIHRoaXMga2luZCBvZiBj b3JydXB0aW9uIGNhbm5vdCBiZSBkZXRlY3RlZAogIHdpdGggPHNwYW4gY2xhc3M9ImFwcGxp Y2F0aW9uIj5jaGVja3N1bXM8L3NwYW4+LiAgRXhhbXBsZXMgaW5jbHVkZSB0b2FzdGVkCiAg dmFsdWVzIGluIHRoZSBtYWluIHRhYmxlIHdoaWNoIGxhY2sgYSBjb3JyZXNwb25kaW5nIGVu dHJ5IGluIHRoZSB0b2FzdAogIHRhYmxlLCBhbmQgdHVwbGVzIGluIHRoZSBtYWluIHRhYmxl IHdpdGggYSBUcmFuc2FjdGlvbiBJRCB0aGF0IGlzIG9sZGVyCiAgdGhhbiB0aGUgb2xkZXN0 IHZhbGlkIFRyYW5zYWN0aW9uIElEIGluIHRoZSBkYXRhYmFzZSBvciBjbHVzdGVyLgogPC9w PjxwPgogIE11bHRpcGxlIGNhdXNlcyBvZiBsb2dpY2FsIGNvcnJ1cHRpb24gaGF2ZSBiZWVu IG9ic2VydmVkIGluIHByb2R1Y3Rpb24KICBzeXN0ZW1zLCBpbmNsdWRpbmcgYnVncyBpbiB0 aGUgPHNwYW4gY2xhc3M9InByb2R1Y3RuYW1lIj5Qb3N0Z3JlU1FMPC9zcGFuPgogIHNlcnZl ciBzb2Z0d2FyZSwgZmF1bHR5IGFuZCBpbGwtY29uY2VpdmVkIGJhY2t1cCBhbmQgcmVzdG9y ZSB0b29scywgYW5kCiAgdXNlciBlcnJvci4KIDwvcD48cD4KICBDb3JydXB0IHJlbGF0aW9u cyBhcmUgbW9zdCBjb25jZXJuaW5nIGluIGxpdmUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMs CiAgcHJlY2lzZWx5IHRoZSBzYW1lIGVudmlyb25tZW50cyB3aGVyZSBoaWdoIHJpc2sgYWN0 aXZpdGllcyBhcmUgbGVhc3QKICB3ZWxjb21lLiAgRm9yIHRoaXMgcmVhc29uLCA8Y29kZSBj bGFzcz0iZnVuY3Rpb24iPnZlcmlmeV9oZWFwYW08L2NvZGU+IGhhcyBiZWVuCiAgZGVzaWdu ZWQgdG8gZGlhZ25vc2UgY29ycnVwdGlvbiB3aXRob3V0IHVuZHVlIHJpc2suICBJdCBjYW5u b3QgZ3VhcmQKICBhZ2FpbnN0IGFsbCBjYXVzZXMgb2YgYmFja2VuZCBjcmFzaGVzLCBhcyBl dmVuIGV4ZWN1dGluZyB0aGUgY2FsbGluZwogIHF1ZXJ5IGNvdWxkIGJlIHVuc2FmZSBvbiBh IGJhZGx5IGNvcnJ1cHRlZCBzeXN0ZW0uICAgQWNjZXNzIHRvIDxhIGNsYXNzPSJsaW5rIiBo cmVmPSJjYXRhbG9ncy1vdmVydmlldy5odG1sIiB0aXRsZT0iNTMuMS7CoE92ZXJ2aWV3Ij5j YXRhbG9nIHRhYmxlczwvYT4gaXMgcGVyZm9ybWVkIGFuZCBjb3VsZAogIGJlIHByb2JsZW1h dGljIGlmIHRoZSBjYXRhbG9ncyB0aGVtc2VsdmVzIGFyZSBjb3JydXB0ZWQuCiA8L3A+PHA+ CiAgSW4gZ2VuZXJhbCwgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hbWNoZWNrPC9jb2RlPiBj YW4gb25seSBwcm92ZSB0aGUgcHJlc2VuY2Ugb2YKICBjb3JydXB0aW9uOyBpdCBjYW5ub3Qg cHJvdmUgaXRzIGFic2VuY2UuCiA8L3A+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDIiIGlkPSJB TUNIRUNLLVJFUEFJUklORy1DT1JSVVBUSU9OIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxk aXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj5GLjIuNC7CoFJlcGFpcmluZyBDb3JydXB0aW9u IDxhIGhyZWY9IiNBTUNIRUNLLVJFUEFJUklORy1DT1JSVVBUSU9OIiBjbGFzcz0iaWRfbGlu ayI+IzwvYT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPgogIE5vIGVycm9yIGNvbmNlcm5p bmcgY29ycnVwdGlvbiByYWlzZWQgYnkgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hbWNoZWNr PC9jb2RlPiBzaG91bGQKICBldmVyIGJlIGEgZmFsc2UgcG9zaXRpdmUuICA8Y29kZSBjbGFz cz0iZmlsZW5hbWUiPmFtY2hlY2s8L2NvZGU+IHJhaXNlcwogIGVycm9ycyBpbiB0aGUgZXZl bnQgb2YgY29uZGl0aW9ucyB0aGF0LCBieSBkZWZpbml0aW9uLCBzaG91bGQgbmV2ZXIKICBo YXBwZW4sIGFuZCBzbyBjYXJlZnVsIGFuYWx5c2lzIG9mIDxjb2RlIGNsYXNzPSJmaWxlbmFt ZSI+YW1jaGVjazwvY29kZT4KICBlcnJvcnMgaXMgb2Z0ZW4gcmVxdWlyZWQuCiA8L3A+PHA+ CiAgVGhlcmUgaXMgbm8gZ2VuZXJhbCBtZXRob2Qgb2YgcmVwYWlyaW5nIHByb2JsZW1zIHRo YXQKICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmFtY2hlY2s8L2NvZGU+IGRldGVjdHMuICBB biBleHBsYW5hdGlvbiBmb3IgdGhlIHJvb3QgY2F1c2Ugb2YKICBhbiBpbnZhcmlhbnQgdmlv bGF0aW9uIHNob3VsZCBiZSBzb3VnaHQuICA8YSBjbGFzcz0ieHJlZiIgaHJlZj0icGFnZWlu c3BlY3QuaHRtbCIgdGl0bGU9IkYuMjUuwqBwYWdlaW5zcGVjdCDigJQgbG93LWxldmVsIGlu c3BlY3Rpb24gb2YgZGF0YWJhc2UgcGFnZXMiPnBhZ2VpbnNwZWN0PC9hPiBtYXkgcGxheSBh IHVzZWZ1bCByb2xlIGluIGRpYWdub3NpbmcKICBjb3JydXB0aW9uIHRoYXQgPGNvZGUgY2xh c3M9ImZpbGVuYW1lIj5hbWNoZWNrPC9jb2RlPiBkZXRlY3RzLiAgQSA8Y29kZSBjbGFzcz0i Y29tbWFuZCI+UkVJTkRFWDwvY29kZT4KICBtYXkgbm90IGJlIGVmZmVjdGl2ZSBpbiByZXBh aXJpbmcgY29ycnVwdGlvbi4KIDwvcD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJuYXZmb290 ZXIiPjxociAvPjx0YWJsZSB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBmb290 ZXIiPjx0cj48dGQgd2lkdGg9IjQwJSIgYWxpZ249ImxlZnQiPjxhIGFjY2Vzc2tleT0icCIg aHJlZj0iYWRtaW5wYWNrLmh0bWwiIHRpdGxlPSJGLjEuwqBhZG1pbnBhY2sg4oCUIHBnQWRt aW4gc3VwcG9ydCB0b29scGFjayI+UHJldjwvYT7CoDwvdGQ+PHRkIHdpZHRoPSIyMCUiIGFs aWduPSJjZW50ZXIiPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY29udHJpYi5odG1sIiB0aXRs ZT0iQXBwZW5kaXjCoEYuwqBBZGRpdGlvbmFsIFN1cHBsaWVkIE1vZHVsZXMgYW5kIEV4dGVu c2lvbnMiPlVwPC9hPjwvdGQ+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJyaWdodCI+wqA8YSBh Y2Nlc3NrZXk9Im4iIGhyZWY9ImF1dGgtZGVsYXkuaHRtbCIgdGl0bGU9IkYuMy7CoGF1dGhf ZGVsYXkg4oCUIHBhdXNlIG9uIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUiPk5leHQ8L2E+PC90 ZD48L3RyPjx0cj48dGQgd2lkdGg9IjQwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj5G LjEuwqBhZG1pbnBhY2sg4oCUIHBnQWRtaW4gc3VwcG9ydCB0b29scGFja8KgPC90ZD48dGQg d2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciI+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRl eC5odG1sIiB0aXRsZT0iUG9zdGdyZVNRTCAxNi40IERvY3VtZW50YXRpb24iPkhvbWU8L2E+ PC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+wqBGLjMu wqBhdXRoX2RlbGF5IOKAlCBwYXVzZSBvbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlPC90ZD48 L3RyPjwvdGFibGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4= --------------XMzl7pf7r2mOIFuTu410hXYC--