From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D7836F48B for ; Fri, 21 Feb 2020 15:38:32 +0000 (UTC) From: Akeem G Abodunrin Date: Fri, 21 Feb 2020 00:22:43 -0800 Message-Id: <20200221082243.19807-2-akeem.g.abodunrin@intel.com> In-Reply-To: <20200221082243.19807-1-akeem.g.abodunrin@intel.com> References: <20200221082243.19807-1-akeem.g.abodunrin@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 1/1] tools/generate_cb_buffer: Add script to assemble CB kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: akeem.g.abodunrin@intel.com, jon.bloomfield@intel.com, sudeep.dutt@intel.com, daniel.vetter@intel.com, joonas.lahtinen@linux.intel.com, jani.nikula@intel.com, chris.p.wilson@intel.com, prathap.kumar.valsan@intel.com, mika.kuoppala@intel.com, francesco.balestrieri@intel.com, ville.syrjala@linux.intel.com, petri.latvala@intel.com, igt-dev@lists.freedesktop.org List-ID: VGhpcyBwYXRjaCBhZGRzIHNjcmlwdCBhbmQgYXBwbGljYWJsZSBhc3NlbWJseSBzb3VyY2VzLCBz byB0aGF0IHdlIGNhbiB1c2UKaWd0IHRvIGFzc2VtYmxlIENsZWFyIEJhdGNoIEJ1ZmZlciBrZXJu ZWwgZm9yIGdlbjcgYW5kIGdlbjcuNSBkZXZpY2VzIC0KUmVzdWx0YW50IGhlYWRlciBmaWxlcyB3 b3VsZCBiZSBpbXBvcnRlZCB0byBpOTE1LCBhbmQgdXNlZCBhcyB0aGV5IGFyZS4uLgoKV2l0aCB0 aGlzIHBhdGNoLCB1c2VyIG5lZWQgdG8gaGF2ZSBtZXNhIGNvbmZpZ3VyZWQgb24gdGhlaXIgcGxh dGZvcm0sCmJlZm9yZSBpZ3QgY291bGQgYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBwdXJwb3NlIG9m IGFzc2VtYmxpbmcgdGhlIGtlcm5lbApmcm9tIHNvdXJjZS4KClRoaXMgaXMgbmVlZGVkIGZvciAi U2VjdXJpdHkgbWl0aWdhdGlvbiBmb3IgSW50ZWwgR2VuNy83LjUgSFdzIgpJbnRlbCBJRDogUFNJ UlQtVEEtMjAxOTEwLTAwMS9DVkVJRDogQ1ZFLTIwMTktMTQ2MTUKCnYyOiBBZGRyZXNzZWQgZm9y bWF0dGluZywgLWcgb3B0aW9uIGFuZCBvdGhlciBtaW5vciBpc3N1ZXMgKFBldHJpKQpWMzogVXBk YXRlIHNjcmlwdCBkdWUgdG8gc3VnZ2VzdGVkIGNoYW5nZXMgaW4gaTkxNSwgYW5kIE1lc2EgdG9v bAp2NDogVXBkYXRlIGhlbHAgY29tbWVudCB3aXRoIE1lc2EgYnVpbGQgb3B0aW9uIHdpdGggbWVz b24gKFBldHJpKQoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+CkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUGV0cmkgTGF0 dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+CkNjOiBCbG9vbWZpZWxkIEpvbiA8am9uLmJs b29tZmllbGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBa2VlbSBHIEFib2R1bnJpbiA8YWtl ZW0uZy5hYm9kdW5yaW5AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaCAg ICAgICAgICAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2Fzc2Vt Ymx5X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFzbSB8IDE0MSArKysrKysrKysrKysrKysrKysrKysr CiB0b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20gfCAxMzkgKysrKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQzMyBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA3NTUgc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg dG9vbHMvYXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNtCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvYXNzZW1ibHlfc291cmNlL2l2Yl9jbGVhcl9idWYuYXNtCgpkaWZmIC0tZ2l0IGEv c2NyaXB0cy9hc21fZXVfa2VybmVsLnNoIGIvc2NyaXB0cy9hc21fZXVfa2VybmVsLnNoCm5ldyBm aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwLi4xOTU4ODI5YwotLS0gL2Rldi9udWxsCisr KyBiL3NjcmlwdHMvYXNtX2V1X2tlcm5lbC5zaApAQCAtMCwwICsxLDE1MyBAQAorIyEvYmluL2Jh c2gKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworIyBDb3B5cmlnaHQgwqkg MjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorIyBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorIyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisjIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorIyBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyMgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorIyBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisjIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisjIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisjIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisjIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyMgSU4gVEhFIFNPRlRXQVJFLgorCitleHBv cnQgQVNTRU1CTFlfU09VUkNFPS4vdG9vbHMvYXNzZW1ibHlfc291cmNlCisKK2Z1bmN0aW9uIGdl dF9oZWxwIHsKKyAgICAgICAgZWNobyAiVXNhZ2U6ICAgIGFzbV9ldV9rZXJuZWwuc2ggW29wdGlv bnNdIgorICAgICAgICBlY2hvICJOb3RlOiBoc3dfY2xlYXJfa2VybmVsLmMvaXZiX2NsZWFyX2tl cm5lbC5jIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoaXMgc2NyaXB0IHNob3VsZCBuZXZl ciBiZSBtb2RpZmllZCAtIGl0IHdvdWxkIGJlIGltcG9ydGVkIHRvIGk5MTUsIHRvIHVzZSBhcyBp dCBpcy4uLiIKKyAgICAgICAgZWNobyAiICIKKyAgICAgICAgZWNobyAiUGxlYXNlIG1ha2Ugc3Vy ZSB5b3VyIE1lc2EgdG9vbCBpcyBjb21waWxlZCB3aXRoICItRHRvb2xzPWludGVsIiBhbmQgIi1E ZHJpLWRyaXZlcnM9aTk2NSIsIGFuZCBydW4gdGhpcyBzY3JpcHQgZnJvbSBJR1Qgc291cmNlIHJv b3QgZGlyZWN0b3J5IgorICAgICAgICBlY2hvICIgIgorICAgICAgICBlY2hvICJPcHRpb25zIGFy ZToiCisgICAgICAgIGVjaG8gIiAtaCAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGlz IGhlbHAgbWVzc2FnZSwgYW5kIGV4aXQiCisgICAgICAgIGVjaG8gIiAtZz1wbGF0Zm9ybSAgICAg ICAgICAgICAgZ2VuZXJhdGlvbiBvZiBkZXZpY2U6IHVzZSAiaHN3IiBmb3IgZ2VuNy41LCBhbmQg Iml2YiIgZm9yIGdlbjcgZGV2aWNlcyIKKyAgICAgICAgZWNobyAiIC1vPW5hbWVfb2ZfZmlsZSAg ICAgICAgICBvdXRwdXQgZmlsZSB0byBzdG9yZSBNZXNhIGFzc2VtYmxlZCBjLWxpdGVyYWwgZm9y IHRoZSBkZXZpY2UgLSBJZiBub25lIHNwZWNpZmllZCwgZGVmYXVsdCBmaWxlIHdpbGwgYmUgdXNl ZCAtIGl2Yi9oc3ctY2JfYXNzZW1ibGVkIgorICAgICAgICBlY2hvICIgLW09bWVzYSAgICAgICAg ICAgICAgICAgIE1lc2Egc291cmNlIGRpcmVjdG9yeSIKKyAgICAgICAgZWNobyAiICIKKyAgICAg ICAgZWNobyAiIFVzYWdlIGV4YW1wbGU6IFwic2NyaXB0cy9hc21fZXVfa2VybmVsLnNoIC1nIGhz dyAtbyBoc3dfY2xlYXJfYnVmZmVyLmggLW0gL3BhdGgvdG8vTWVzYS9zb3VyY2UvZGlyZWN0b3J5 XCIiCit9CisKK2Z1bmN0aW9uIGluY2x1ZGVfYXJyYXkgIyAkMT1hcnJheV9uYW1lCit7CisJZWNo byAic3RhdGljIGNvbnN0IHUzMiAkKGJhc2VuYW1lICQxKV9jbGVhcl9rZXJuZWxbXSA9IHsiCit9 CitmdW5jdGlvbiBwcmVmaXhfaGVhZGVyICMgJDE9ZmlsZW5hbWUgJDI9Y29tbWVudAoreworCWFy cmF5X25hbWU9JChpbmNsdWRlX2FycmF5ICQxKQorCisJY2F0IDw8RU9GCisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9y YXRpb24KKyAqCisgKiBHZW5lcmF0ZWQgYnk6IElHVCBHcHUgVG9vbHMgb24gJChkYXRlKQorICov CisKKyRhcnJheV9uYW1lCitFT0YKK30KKworZnVuY3Rpb24gcG9zdGZpeF9mb290ZXIgIyBmaWxl bmFtZQoreworCWNhdCA8PEVPRgorfTsKK0VPRgorfQorCitmdW5jdGlvbiBjaGVja19vdXRwdXRf ZmlsZSAjY2hlY2sgb3V0cHV0IGZpbGUKK3sKKyAgICAgICAgaWYgWyAieCRvdXRwdXRfZmlsZSIg IT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBpZiBbIC1mICIkb3V0cHV0X2ZpbGUiIF07 IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gLWUgIldhcm5pbmc6IFRoZSBcIiRv dXRwdXRfZmlsZVwiIGZpbGUgYWxyZWFkeSBleGlzdCAtIGNob29zZSBhbm90aGVyIGZpbGVcbiIK KyAgICAgICAgICAgICAgICAgICAgICAgIGdldF9oZWxwCisgICAgICAgICAgICAgICAgICAgICAg ICBleGl0IDEKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgIyBJdCBpcyBva2F5IHRvIG92ZXJ3cml0ZSBkZWZhdWx0IGZpbGUgY3JlYXRlZAorICAgICAg ICAgICAgICAgIGVjaG8gLWUgIk91dHB1dCBmaWxlIG5vdCBzcGVjaWZpZWQgLSB1c2luZyBkZWZh dWx0IGZpbGUgXCIkZ2VuX2RldmljZS1jYl9hc3NlbWJsZWRcIlxuIgorICAgICAgICAgICAgICAg IG91dHB1dF9maWxlPSIkZ2VuX2RldmljZS1jYl9hc3NlbWJsZWQiCisgICAgICAgIGZpCit9Citm dW5jdGlvbiBhc21fY2Jfa2VybmVsICMgYXMtcm9vdCA8YXJncz4KK3sKKyAgICAgICAgY2hlY2tf b3V0cHV0X2ZpbGUKKworICAgICAgICAjIFVzaW5nIGk5NjVfYXNtIHRvb2wgdG8gYXNzZW1ibGUg aGV4IGZpbGUgZnJvbSBhc3NlbWJseSBzb3VyY2UKKyAgICAgICAgJEk5NjVfQVNNIC1nICRnZW5f ZGV2aWNlIC10IGNfbGl0ZXJhbCAgJGlucHV0X2FzbV9zb3VyY2UgLW8gJG91dHB1dF9maWxlCisK KyAgICAgICAgIyBHZW5lcmF0ZSBoZWFkZXIgZmlsZQorICAgICAgICBpZiBbICIkZ2VuX2Rldmlj ZSIgPT0gImhzdyIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gIkdlbmVyYXRpbmcgZ2Vu Ny41IENCIEtlcm5lbCBhc3NlbWJsZWQgZmlsZSBcImhzd19jbGVhcl9rZXJuZWwuY1wiIGZvciBp OTE1IGRyaXZlci4uLiIKKworICAgICAgICAgICAgICAgIGk5MTVfZmlsZW5hbWU9aHN3X2NsZWFy X2tlcm5lbC5jCisgICAgICAgICAgICAgICAgcHJlZml4X2hlYWRlciAkZ2VuX2RldmljZSA+ICRp OTE1X2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgY2F0ICRvdXRwdXRfZmlsZSA+PiAkaTkxNV9m aWxlbmFtZQorICAgICAgICAgICAgICAgIHBvc3RmaXhfZm9vdGVyICRpOTE1X2ZpbGVuYW1lID4+ ICRpOTE1X2ZpbGVuYW1lCisKKyAgICAgICAgZWxpZiBbICIkZ2VuX2RldmljZSIgPT0gIml2YiIg XTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gIkdlbmVyYXRpbmcgZ2VuNyBDQiBLZXJuZWwg YXNzZW1ibGVkIGZpbGUgXCJpdmJfY2xlYXJfa2VybmVsLmNcIiBmb3IgaTkxNSBkcml2ZXIuLi4i CisKKyAgICAgICAgICAgICAgICBpOTE1X2ZpbGVuYW1lPWl2Yl9jbGVhcl9rZXJuZWwuYworICAg ICAgICAgICAgICAgIHByZWZpeF9oZWFkZXIgJGdlbl9kZXZpY2UgPiAkaTkxNV9maWxlbmFtZQor ICAgICAgICAgICAgICAgIGNhdCAkb3V0cHV0X2ZpbGUgPj4gJGk5MTVfZmlsZW5hbWUKKyAgICAg ICAgICAgICAgICBwb3N0Zml4X2Zvb3RlciAkaTkxNV9maWxlbmFtZSA+PiAkaTkxNV9maWxlbmFt ZQorICAgICAgICBmaQorfQorCit3aGlsZSBnZXRvcHRzICJoZzpvOm06IiBvcHQ7IGRvCisJY2Fz ZSAkb3B0IGluCisJCWgpIGdldF9oZWxwOyBleGl0IDA7OworCQlnKSBnZW5fZGV2aWNlPSIkT1BU QVJHIiA7OworCQlvKSBvdXRwdXRfZmlsZT0iJE9QVEFSRyIgOzsKKyAgICAgICAgICAgICAgICBt KSBtZXNhX2Rpcj0iJE9QVEFSRyIgOzsKKwkJXD8pCisJCQllY2hvIC1lICJVbmtub3duIG9wdGlv bjogLSRPUFRBUkdcbiIKKwkJCWdldF9oZWxwCisJCQlleGl0IDEKKwkJCTs7CisJZXNhYworZG9u ZQorc2hpZnQgJCgoJE9QVElORC0xKSkKKworaWYgWyAieCQxIiAhPSAieCIgXTsgdGhlbgorCWVj aG8gLWUgIlVua25vd24gb3B0aW9uOiAkMVxuIgorCWdldF9oZWxwCisJZXhpdCAxCitmaQorCitJ OTY1X0FTTT0iJG1lc2FfZGlyL2J1aWxkL2RlYnVnL3NyYy9pbnRlbC90b29scy9pOTY1X2FzbSIK K2lmIFsgISAtZiAke0k5NjVfQVNNfSBdOyB0aGVuCisgICAgICAgIGVjaG8gLWUgImk5NjVfYXNt IG5vdCBmb3VuZCBhdCAke0k5NjVfQVNNfVxuIgorICAgICAgICBnZXRfaGVscAorICAgICAgICBl eGl0IDEKK2ZpCisKK2lmIFsgIngkZ2VuX2RldmljZSIgIT0gIngiIF07IHRoZW4KKyAgICAgICAg aWYgWyAiJGdlbl9kZXZpY2UiID09ICJoc3ciIF07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnB1 dF9hc21fc291cmNlPSIke0FTU0VNQkxZX1NPVVJDRX0vaHN3X2NsZWFyX2J1Zi5hc20iCisgICAg ICAgIGVsaWYgWyAiJGdlbl9kZXZpY2UiID09ICJpdmIiIF07IHRoZW4KKyAgICAgICAgICAgICAg ICBpbnB1dF9hc21fc291cmNlPSIke0FTU0VNQkxZX1NPVVJDRX0vaXZiX2NsZWFyX2J1Zi5hc20i CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlY2hvIC1lICJVbmtub3duIHBsYXRmb3Jt IHNwZWNpZmllZFxuIgorICAgICAgICAgICAgICAgIGdldF9oZWxwCisgICAgICAgICAgICAgICAg ZXhpdCAxCisgICAgICAgIGZpCisJYXNtX2NiX2tlcm5lbAorZWxzZQorICAgICAgICBlY2hvIC1l ICJQbGF0Zm9ybSBnZW5lcmF0aW9uIG5vdCBzcGVjaWZpZWRcbiIKKyAgICAgICAgZ2V0X2hlbHAK KyAgICAgICAgZXhpdCAxCitmaQpkaWZmIC0tZ2l0IGEvdG9vbHMvYXNzZW1ibHlfc291cmNlL2hz d19jbGVhcl9idWYuYXNtIGIvdG9vbHMvYXNzZW1ibHlfc291cmNlL2hzd19jbGVhcl9idWYuYXNt Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iYzI5YmFmMgotLS0gL2Rldi9u dWxsCisrKyBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9oc3dfY2xlYXJfYnVmLmFzbQpAQCAtMCww ICsxLDE0MSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENv cHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisvKioKKyAqIEtlcm5lbCBuYW1lOiBo c3dfY2xlYXJfYnVmLmFzbQorICoKKyAqIEtlcm5lbCBmb3IgUEFWUCBidWZmZXIgY2xlYXIuCisg KgorICoJMS4gQ2xlYXIgYWxsIDY0IEdSRiByZWdpc3RlcnMgYXNzaWduZWQgdG8gdGhlIGtlcm5l bCB3aXRoIGRlc2lnbmF0ZWQgdmFsdWU7CisgKgkyLiBXcml0ZSAzMngxNiBibG9jayBvZiBhbGwg IjAiIHRvIHJlbmRlciB0YXJnZXQgYnVmZmVyIHdoaWNoIGluZGlyZWN0bHkgY2xlYXJzCisgKgkg ICA1MTIgYnl0ZXMgb2YgUmVuZGVyIENhY2hlLgorICovCisKKy8qIFN0b3JlIGRlc2lnbmF0ZWQg ImNsZWFyIEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBmMC4xPDE+VVcgICAgICAgZzEu MjwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCisvKioKKyAqIEN1 cmJlIEZvcm1hdAorICoKKyAqIERXIDEuMCAtIEJsb2NrIE9mZnNldCB0byB3cml0ZSBSZW5kZXIg Q2FjaGUKKyAqIERXIDEuMSBbMTU6MF0gLSBDbGVhciBXb3JkCisgKiBEVyAxLjIgLSBEZWxheSBp dGVyYXRpb25zCisgKiBEVyAxLjMgLSBFbmFibGUgSW5zdHJ1bWVudGF0aW9uIChvbmx5IGZvciBk ZWJ1ZykKKyAqIERXIDEuNCAtIFJzdmQgKGludGVuZGVkIGZvciBjb250ZXh0IElEKQorICogRFcg MS41IC0gWzMxOjE2XTpTbGljZUNvdW50LCBbMTU6MF06U3ViU2xpY2VQZXJTbGljZUNvdW50Cisg KiBEVyAxLjYgLSBSc3ZkIE1CWiAoaW50ZW5kZWQgZm9yIEVuYWJsZSBXYWl0IG9uIFRvdGFsIFRo cmVhZCBDb3VudCkKKyAqIERXIDEuNyAtIFJzdmQgTUJaIChpbnRlZGVkIGZvciBUb3RhbCBUaHJl YWQgQ291bnQpCisgKgorICogQmluZGluZyBUYWJsZQorICoKKyAqIEJUSSAwOiAyRCBTdXJmYWNl IHRvIGhlbHAgY2xlYXIgTDMgKFJlbmRlci9EYXRhIENhY2hlKQorICogQlRJIDE6IFdhaXQvSW5z dHJ1bWVudGF0aW9uIEJ1ZmZlcgorICogIFNpemUgOiAoU2xpY2VDb3VudCAqIFN1YlNsaWNlQ291 bnQgICogMTYgRVVzL1N1YlNsaWNlKSByb3dzICogKDE2IHRocmVhZHMvRVUpIGNvbHMgKEZvcm1h dCBSMzJfVUlOVCkKKyAqICAgICAgICAgRXhwZWN0ZWQgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBi eSBkcml2ZXIvYW5vdGhlciBrZXJuZWwKKyAqICBMYXlvdXQ6CisgKiAgICAgICAgICBSb3dOOiBI aXN0b2dyYW0gZm9yIEVVLU46IChTbGljZUlEKlN1YlNsaWNlUGVyU2xpY2VDb3VudCArIFNTSUQp KjE2ICsgRVVJRCBbYXNzdW1lIG1heCAxNiBFVXMgLyBTU10KKyAqICAgICAgICAgIENvbC1rW0RX LWtdOiBUaHJlYWRzIEV4ZWN1dGVkIG9uIFRocmVhZElELWsgZm9yIEVVLU4KKyAqLworYWRkKDEp ICAgICAgICAgIGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVEICAgMHgwMDAwMDAwMVVEICAg IHsgYWxpZ24xIDFOIH07IC8qIExvb3AgY291bnQgdG8gZGVsYXkga2VybmVsOiBJbml0IHRvIChn MS4yICsgMSkgKi8KK2NtcC56LmYwLjAoMSkgICBudWxsPDE+VUQgICAgICAgZzEuMzwwLDEsMD5V RCAgIDB4MDAwMDAwMDBVRCAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIDM1MkQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2Fs bCAxTiB9OworCisvKioKKyAqIFN0YXRlIFJlZ2lzdGVyIGhhcyBpbmZvIG9uIHdoZXJlIHRoaXMg dGhyZWFkIGlzIHJ1bm5pbmcKKyAqCUlWQjogc3IwLjAgOjogWzE1OjEzXTogTUJaLCAxMjogSFNJ RCAoSGFsZi1TbGljZSBJRCksIFsxMTo4XUVVSUQsIFsyOjBdIFRocmVhZFNsb3RJRAorICoJSFNX OiBzcjAuMCA6OiAxNTogTUJaLCBbMTQ6MTNdOiBTbGljZUlELCAxMjogSFNJRCAoSGFsZi1TbGlj ZSBJRCksIFsxMTo4XUVVSUQsIFsyOjBdIFRocmVhZFNsb3RJRAorICovCittb3YoOCkgICAgICAg ICAgZzM8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGln bjEgMVEgfTsKK3NocigxKSAgICAgICAgICBnMzwxPkQgICAgICAgICAgc3IwPDAsMSwwPkQgICAg IDEyRCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYW5kKDEpICAgICAgICAgIGczPDE+RCAg ICAgICAgICBnMzwwLDEsMD5EICAgICAgMUQgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8q IGczIGhhcyBIU0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMTwxPkQgICAgICAgIHNyMDwwLDEs MD5EICAgICAxM0QgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBn My4xPDE+RCAgICAgICAgZzMuMTwwLDEsMD5EICAgIDNEICAgICAgICAgICAgICB7IGFsaWduMSAx TiB9OyAvKiBnMy4xIGhhcyBzbGljZUlEICovCittdWwoMSkgICAgICAgICAgZzMuNTwxPkQgICAg ICAgIGczLjE8MCwxLDA+RCAgICBnMS4xMDwwLDEsMD5VVyAgeyBhbGlnbjEgMU4gfTsKK2FkZCgx KSAgICAgICAgICBnMzwxPkQgICAgICAgICAgZzM8MCwxLDA+RCAgICAgIGczLjU8MCwxLDA+RCAg ICB7IGFsaWduMSAxTiB9OyAvKiBnMyA9IHNsaWNlSUQgKiBTdWJTbGljZVBlclNsaWNlQ291bnQg KyBIU0lEICovCitzaHIoMSkgICAgICAgICAgZzMuMjwxPkQgICAgICAgIHNyMDwwLDEsMD5EICAg ICA4RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMy4yPDE+ RCAgICAgICAgZzMuMjwwLDEsMD5EICAgIDE1RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAv KiBnMy4yID0gRVVJRCAqLworbXVsKDEpICAgICAgICAgIGczLjQ8MT5EICAgICAgICBnMzwwLDEs MD5EICAgICAgMTZEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithZGQoMSkgICAgICAgICAg ZzMuMjwxPkQgICAgICAgIGczLjI8MCwxLDA+RCAgICBnMy40PDAsMSwwPkQgICAgeyBhbGlnbjEg MU4gfTsgLyogZzMuMiBub3cgcG9pbnRzIHRvIEVVIHJvdyBudW1iZXIgKFktcGl4ZWwgPSBWIGFk ZHJlc3MgKSAgaW4gaW5zdHJ1bWVudGF0aW9uIHN1cmYgKi8KKworbW92KDgpICAgICAgICAgIGc1 PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFR IH07CithbmQoMSkgICAgICAgICAgZzMuMzwxPkQgICAgICAgIHNyMDwwLDEsMD5EICAgICA3RCAg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK211bCgxKSAgICAgICAgICBnMy4zPDE+RCAgICAg ICAgZzMuMzwwLDEsMD5EICAgIDREICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCittb3Yo OCkgICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMVEgfTsgLyogSW5pdGlhbGl6ZSBtZXNzYWdlIGhlYWRlciB3aXRoIGcwICov Cittb3YoMSkgICAgICAgICAgZzQ8MT5VRCAgICAgICAgIGczLjM8MCwxLDA+VUQgICAgICAgICAg ICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxvY2sgb2Zmc2V0ICovCittb3YoMSkgICAgICAg ICAgZzQuMTwxPlVEICAgICAgIGczLjI8MCwxLDA+VUQgICAgICAgICAgICAgICAgICAgeyBhbGln bjEgMU4gfTsgLyogQmxvY2sgb2Zmc2V0ICovCittb3YoMSkgICAgICAgICAgZzQuMjwxPlVEICAg ICAgIDB4MDAwMDAwMDNVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogQmxv Y2sgc2l6ZSAoMSByb3cgeCA0IGJ5dGVzKSAqLworYW5kKDEpICAgICAgICAgIGc0LjM8MT5VRCAg ICAgICBnNC4zPDAsMSwwPlVXICAgMHhmZmZmZmZmZlVEICAgIHsgYWxpZ24xIDFOIH07CisKKy8q IE1lZGlhIGJsb2NrIHJlYWQgdG8gZmV0Y2ggY3VycmVudCB2YWx1ZSBhdCBzcGVjaWZpZWQgbG9j YXRpb24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLworc2VuZGMoOCkgICAgICAgIGc1PDE+ VUQgICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwMjE5MDAwMQorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVuZGVyIE1zZ0Rlc2M6IG1lZGlhIGJsb2NrIHJlYWQgTXNnQ3RybCA9IDB4 MCBTdXJmYWNlID0gMSBtbGVuIDEgcmxlbiAxIHsgYWxpZ24xIDFRIH07CithZGQoMSkgICAgICAg ICAgZzU8MT5EICAgICAgICAgIGc1PDAsMSwwPkQgICAgICAxRCAgICAgICAgICAgICAgeyBhbGln bjEgMU4gfTsKKworLyogTWVkaWEgYmxvY2sgd3JpdGUgZm9yIHVwZGF0ZWQgdmFsdWUgYXQgc3Bl Y2lmaWVkIGxvY2F0aW9uIGluIGluc3RydW1lbnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAg ICAgICBnNTwxPlVEICAgICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4MDQwYTgwMDEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgd3JpdGUgTXNn Q3RybCA9IDB4MCBTdXJmYWNlID0gMSBtbGVuIDIgcmxlbiAwIHsgYWxpZ24xIDFRIH07CisKKy8q IERlbGF5IHRocmVhZCBmb3Igc3BlY2lmaWVkIHBhcmFtZXRlciAqLworYWRkLm56LmYwLjAoMSkg IGcxLjI8MT5VRCAgICAgICBnMS4yPDAsMSwwPlVEICAgLTFEICAgICAgICAgICAgIHsgYWxpZ24x IDFOIH07CisoK2YwLjApIGptcGkoMSkgLTMyRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisKKy8qIFN0b3JlIGRlc2lnbmF0 ZWQgImNsZWFyIEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBmMC4xPDE+VVcgICAgICAg ZzEuMjwwLDEsMD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCisvKiBJbml0 aWFsaXplIGxvb3BpbmcgcGFyYW1ldGVycyAqLworbW92KDEpICAgICAgICAgIGEwPDE+RCAgICAg ICAgICAwRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIElu aXRpYWxpemUgYTAuMDp3PTAgKi8KK21vdigxKSAgICAgICAgICBhMC40PDE+VyAgICAgICAgMTI3 VyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBMb29wIGNvdW50 LiBFYWNoIGxvb3AgY29udGFpbnMgMTYgR1JGJ3MgKi8KKworLyogV3JpdGUgMzJ4MTYgYWxsICIw IiBibG9jayAqLworbW92KDgpICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMDw4LDgsMT5VRCAg ICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoOCkgICAgICAgICAgZzEyNzwx PlVEICAgICAgIGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsK K21vdigyKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MiwyLDE+VVcgICAgICAgICAgICAg ICAgICAgICB7IGFsaWduMSAxTiB9OworbW92KDEpICAgICAgICAgIGcyLjI8MT5VRCAgICAgICAw eDAwMGYwMDBmVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIHNp emUgKDE2eDE2KSAqLworYW5kKDEpICAgICAgICAgIGcyLjM8MT5VRCAgICAgICBnMi4zPDAsMSww PlVXICAgMHhmZmZmZmZlZlVEICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAgICAgICAgZzM8 MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUgg fTsKK21vdigxNikgICAgICAgICBnNDwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAg ICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc1PDE+VUQgICAgICAg ICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYp ICAgICAgICAgZzY8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAg eyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnNzwxPlVEICAgICAgICAgMHgwMDAwMDAw MFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc4 PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFI IH07Cittb3YoMTYpICAgICAgICAgZzk8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAg ICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnMTA8MT5VRCAgICAg ICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9Oworc2VuZGMo OCkgICAgICAgIG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5GICAgICAgMHgxMjBhODAwMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0 ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBybGVuIDAgeyBhbGlnbjEgMVEgfTsK K2FkZCgxKSAgICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MCwxLDA+VVcgICAgIDB4MDAxMFVX ICAgICAgICB7IGFsaWduMSAxTiB9Oworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAgICAgICBn Mjw4LDgsMT5GICAgICAgMHgxMjBhODAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl bmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAw IG1sZW4gOSBybGVuIDAgeyBhbGlnbjEgMVEgfTsKKworLyogTm93LCBjbGVhciBhbGwgR1JGIHJl Z2lzdGVycyAqLworYWRkLm56LmYwLjAoMSkgIGEwLjQ8MT5XICAgICAgICBhMC40PDAsMSwwPlcg ICAgLTFXICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAgICAgICAgZ1thMF08 MT5VVyAgICAgIGYwLjE8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsK K2FkZCgxKSAgICAgICAgICBhMDwxPkQgICAgICAgICAgYTA8MCwxLDA+RCAgICAgIDMyRCAgICAg ICAgICAgICB7IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIC02NEQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2FsbCAxTiB9OworCisv KiBUZXJtaW5hbnRlIHRoZSB0aHJlYWQgKi8KK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAg ICAgZzEyNzw4LDgsMT5GICAgIDB4ODIwMDAwMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aHJlYWRfc3Bhd25lciBNc2dEZXNjOiBtbGVuIDEgcmxlbiAwICAgICAgICAgICB7IGFsaWdu MSAxUSBFT1QgfTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xlYXJf YnVmLmFzbSBiL3Rvb2xzL2Fzc2VtYmx5X3NvdXJjZS9pdmJfY2xlYXJfYnVmLmFzbQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYjIxYmM5NDgKLS0tIC9kZXYvbnVsbAorKysg Yi90b29scy9hc3NlbWJseV9zb3VyY2UvaXZiX2NsZWFyX2J1Zi5hc20KQEAgLTAsMCArMSwxMzkg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyoqCisgKiBLZXJuZWwgbmFtZTogaXZiX2NsZWFy X2J1Zi5hc20KKyAqCisgKiBLZXJuZWwgZm9yIFBBVlAgYnVmZmVyIGNsZWFyLgorICoKKyAqCTEu IENsZWFyIGFsbCA2NCBHUkYgcmVnaXN0ZXJzIGFzc2lnbmVkIHRvIHRoZSBrZXJuZWwgd2l0aCBk ZXNpZ25hdGVkIHZhbHVlOworICoJMi4gV3JpdGUgMzJ4MTYgYmxvY2sgb2YgYWxsICIwIiB0byBy ZW5kZXIgdGFyZ2V0IGJ1ZmZlciB3aGljaCBpbmRpcmVjdGx5IGNsZWFycworICoJICAgNTEyIGJ5 dGVzIG9mIFJlbmRlciBDYWNoZS4KKyAqLworCisvKiBTdG9yZSBkZXNpZ25hdGVkICJjbGVhciBH UkYiIHZhbHVlICovCittb3YoMSkgICAgICAgICAgZjAuMTwxPlVXICAgICAgIGcxLjI8MCwxLDA+ VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworLyoqCisgKiBDdXJiZSBGb3Jt YXQKKyAqCisgKiBEVyAxLjAgLSBCbG9jayBPZmZzZXQgdG8gd3JpdGUgUmVuZGVyIENhY2hlCisg KiBEVyAxLjEgWzE1OjBdIC0gQ2xlYXIgV29yZAorICogRFcgMS4yIC0gRGVsYXkgaXRlcmF0aW9u cworICogRFcgMS4zIC0gRW5hYmxlIEluc3RydW1lbnRhdGlvbiAob25seSBmb3IgZGVidWcpCisg KiBEVyAxLjQgLSBSc3ZkIChpbnRlbmRlZCBmb3IgY29udGV4dCBJRCkKKyAqIERXIDEuNSAtIFsz MToxNl06U2xpY2VDb3VudCwgWzE1OjBdOlN1YlNsaWNlUGVyU2xpY2VDb3VudAorICogRFcgMS42 IC0gUnN2ZCBNQlogKGludGVuZGVkIGZvciBFbmFibGUgV2FpdCBvbiBUb3RhbCBUaHJlYWQgQ291 bnQpCisgKiBEVyAxLjcgLSBSc3ZkIE1CWiAoaW50ZWRlZCBmb3IgVG90YWwgVGhyZWFkIENvdW50 KQorICoKKyAqIEJpbmRpbmcgVGFibGUKKyAqCisgKiBCVEkgMDogMkQgU3VyZmFjZSB0byBoZWxw IGNsZWFyIEwzIChSZW5kZXIvRGF0YSBDYWNoZSkKKyAqIEJUSSAxOiBXYWl0L0luc3RydW1lbnRh dGlvbiBCdWZmZXIKKyAqICBTaXplIDogKFNsaWNlQ291bnQgKiBTdWJTbGljZUNvdW50ICAqIDE2 IEVVcy9TdWJTbGljZSkgcm93cyAqICgxNiB0aHJlYWRzL0VVKSBjb2xzIChGb3JtYXQgUjMyX1VJ TlQpCisgKiAgICAgICAgIEV4cGVjdGVkIHRvIGJlIGluaXRpYWxpemVkIHRvIDAgYnkgZHJpdmVy L2Fub3RoZXIga2VybmVsCisgKiAgTGF5b3V0IDoKKyAqICAgICAgICAgICBSb3dOOiBIaXN0b2dy YW0gZm9yIEVVLU46IChTbGljZUlEKlN1YlNsaWNlUGVyU2xpY2VDb3VudCArIFNTSUQpKjE2ICsg RVVJRCBbYXNzdW1lIG1heCAxNiBFVXMgLyBTU10KKyAqICAgICAgICAgICBDb2wta1tEVy1rXTog VGhyZWFkcyBFeGVjdXRlZCBvbiBUaHJlYWRJRC1rIGZvciBFVS1OCisgKi8KK2FkZCgxKSAgICAg ICAgICBnMS4yPDE+VUQgICAgICAgZzEuMjwwLDEsMD5VRCAgIDB4MDAwMDAwMDFVRCAgICB7IGFs aWduMSAxTiB9OyAvKiBMb29wIGNvdW50IHRvIGRlbGF5IGtlcm5lbDogSW5pdCB0byAoZzEuMiAr IDEpICovCitjbXAuei5mMC4wKDEpICAgbnVsbDwxPlVEICAgICAgIGcxLjM8MCwxLDA+VUQgICAw eDAwMDAwMDAwVUQgICAgeyBhbGlnbjEgMU4gfTsKKygrZjAuMCkgam1waSgxKSA0NEQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSBXRV9hbGwgMU4g fTsKKworLyoqCisgKiBTdGF0ZSBSZWdpc3RlciBoYXMgaW5mbyBvbiB3aGVyZSB0aGlzIHRocmVh ZCBpcyBydW5uaW5nCisgKglJVkI6IHNyMC4wIDo6IFsxNToxM106IE1CWiwgMTI6IEhTSUQgKEhh bGYtU2xpY2UgSUQpLCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqCUhTVzogc3Iw LjAgOjogMTU6IE1CWiwgWzE0OjEzXTogU2xpY2VJRCwgMTI6IEhTSUQgKEhhbGYtU2xpY2UgSUQp LCBbMTE6OF1FVUlELCBbMjowXSBUaHJlYWRTbG90SUQKKyAqLworbW92KDgpICAgICAgICAgIGcz PDE+VUQgICAgICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFR IH07CitzaHIoMSkgICAgICAgICAgZzM8MT5EICAgICAgICAgIHNyMDwwLDEsMD5EICAgICAxMkQg ICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKK2FuZCgxKSAgICAgICAgICBnMzwxPkQgICAgICAg ICAgZzM8MCwxLDA+RCAgICAgIDFEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBnMyBo YXMgSFNJRCAqLworc2hyKDEpICAgICAgICAgIGczLjE8MT5EICAgICAgICBzcjA8MCwxLDA+RCAg ICAgMTNEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzMuMTwx PkQgICAgICAgIGczLjE8MCwxLDA+RCAgICAzRCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsg LyogZzMuMSBoYXMgc2xpY2VJRCAqLworbXVsKDEpICAgICAgICAgIGczLjU8MT5EICAgICAgICBn My4xPDAsMSwwPkQgICAgZzEuMTA8MCwxLDA+VVcgIHsgYWxpZ24xIDFOIH07CithZGQoMSkgICAg ICAgICAgZzM8MT5EICAgICAgICAgIGczPDAsMSwwPkQgICAgICBnMy41PDAsMSwwPkQgICAgeyBh bGlnbjEgMU4gfTsgLyogZzMgPSBzbGljZUlEICogU3ViU2xpY2VQZXJTbGljZUNvdW50ICsgSFNJ RCAqLworc2hyKDEpICAgICAgICAgIGczLjI8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgOEQg ICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07CithbmQoMSkgICAgICAgICAgZzMuMjwxPkQgICAg ICAgIGczLjI8MCwxLDA+RCAgICAxNUQgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsgLyogZzMu MiA9IEVVSUQgKi8KK211bCgxKSAgICAgICAgICBnMy40PDE+RCAgICAgICAgZzM8MCwxLDA+RCAg ICAgIDE2RCAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworYWRkKDEpICAgICAgICAgIGczLjI8 MT5EICAgICAgICBnMy4yPDAsMSwwPkQgICAgZzMuNDwwLDEsMD5EICAgIHsgYWxpZ24xIDFOIH07 IC8qIGczLjIgbm93IHBvaW50cyB0byBFVSByb3cgbnVtYmVyIChZLXBpeGVsID0gViBhZGRyZXNz ICkgIGluIGluc3RydW1lbnRhdGlvbiBzdXJmICovCisKK21vdig4KSAgICAgICAgICBnNTwxPlVE ICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxUSB9Owor YW5kKDEpICAgICAgICAgIGczLjM8MT5EICAgICAgICBzcjA8MCwxLDA+RCAgICAgN0QgICAgICAg ICAgICAgIHsgYWxpZ24xIDFOIH07CittdWwoMSkgICAgICAgICAgZzMuMzwxPkQgICAgICAgIGcz LjM8MCwxLDA+RCAgICA0RCAgICAgICAgICAgICAgeyBhbGlnbjEgMU4gfTsKKworbW92KDgpICAg ICAgICAgIGc0PDE+VUQgICAgICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAgICAgICAgICAgIHsg YWxpZ24xIDFRIH07IC8qIEluaXRpYWxpemUgbWVzc2FnZSBoZWFkZXIgd2l0aCBnMCAqLworbW92 KDEpICAgICAgICAgIGc0PDE+VUQgICAgICAgICBnMy4zPDAsMSwwPlVEICAgICAgICAgICAgICAg ICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAgICAgIGc0 LjE8MT5VRCAgICAgICBnMy4yPDAsMSwwPlVEICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFO IH07IC8qIEJsb2NrIG9mZnNldCAqLworbW92KDEpICAgICAgICAgIGc0LjI8MT5VRCAgICAgICAw eDAwMDAwMDAzVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIHNp emUgKDEgcm93IHggNCBieXRlcykgKi8KK2FuZCgxKSAgICAgICAgICBnNC4zPDE+VUQgICAgICAg ZzQuMzwwLDEsMD5VVyAgIDB4ZmZmZmZmZmZVRCAgICB7IGFsaWduMSAxTiB9OworCisvKiBNZWRp YSBibG9jayByZWFkIHRvIGZldGNoIGN1cnJlbnQgdmFsdWUgYXQgc3BlY2lmaWVkIGxvY2F0aW9u IGluIGluc3RydW1lbnRhdGlvbiBidWZmZXIgKi8KK3NlbmRjKDgpICAgICAgICBnNTwxPlVEICAg ICAgICAgZzQ8OCw4LDE+RiAgICAgIDB4MDIxOTAwMDEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZW5kZXIgTXNnRGVzYzogbWVkaWEgYmxvY2sgcmVhZCBNc2dDdHJsID0gMHgwIFN1cmZh Y2UgPSAxIG1sZW4gMSBybGVuIDEgeyBhbGlnbjEgMVEgfTsKK2FkZCgxKSAgICAgICAgICBnNTwx PkQgICAgICAgICAgZzU8MCwxLDA+RCAgICAgIDFEICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9 OworCisvKiBNZWRpYSBibG9jayB3cml0ZSBmb3IgdXBkYXRlZCB2YWx1ZSBhdCBzcGVjaWZpZWQg bG9jYXRpb24gaW4gaW5zdHJ1bWVudGF0aW9uIGJ1ZmZlciAqLworc2VuZGMoOCkgICAgICAgIGc1 PDE+VUQgICAgICAgICBnNDw4LDgsMT5GICAgICAgMHgwNDBhODAwMQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJsID0g MHgwIFN1cmZhY2UgPSAxIG1sZW4gMiBybGVuIDAgeyBhbGlnbjEgMVEgfTsKKy8qIERlbGF5IHRo cmVhZCBmb3Igc3BlY2lmaWVkIHBhcmFtZXRlciAqLworYWRkLm56LmYwLjAoMSkgIGcxLjI8MT5V RCAgICAgICBnMS4yPDAsMSwwPlVEICAgLTFEICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07Ciso K2YwLjApIGptcGkoMSkgLTREICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyBhbGlnbjEgV0VfYWxsIDFOIH07CisKKy8qIFN0b3JlIGRlc2lnbmF0ZWQgImNsZWFy IEdSRiIgdmFsdWUgKi8KK21vdigxKSAgICAgICAgICBmMC4xPDE+VVcgICAgICAgZzEuMjwwLDEs MD5VVyAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OworCisvKiBJbml0aWFsaXplIGxv b3BpbmcgcGFyYW1ldGVycyAqLworbW92KDEpICAgICAgICAgIGEwPDE+RCAgICAgICAgICAwRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEluaXRpYWxpemUg YTAuMDp3PTAgKi8KK21vdigxKSAgICAgICAgICBhMC40PDE+VyAgICAgICAgMTI3VyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxTiB9OyAvKiBMb29wIGNvdW50LiBFYWNoIGxv b3AgY29udGFpbnMgMTYgR1JGJ3MgKi8KKworLyogV3JpdGUgMzJ4MTYgYWxsICIwIiBibG9jayAq LworbW92KDgpICAgICAgICAgIGcyPDE+VUQgICAgICAgICBnMDw4LDgsMT5VRCAgICAgICAgICAg ICAgICAgICAgIHsgYWxpZ24xIDFRIH07Cittb3YoOCkgICAgICAgICAgZzEyNzwxPlVEICAgICAg IGcwPDgsOCwxPlVEICAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMVEgfTsKK21vdigyKSAg ICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MiwyLDE+VVcgICAgICAgICAgICAgICAgICAgICB7 IGFsaWduMSAxTiB9OworbW92KDEpICAgICAgICAgIGcyLjI8MT5VRCAgICAgICAweDAwMGYwMDBm VUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFOIH07IC8qIEJsb2NrIHNpemUgKDE2eDE2 KSAqLworYW5kKDEpICAgICAgICAgIGcyLjM8MT5VRCAgICAgICBnMi4zPDAsMSwwPlVXICAgMHhm ZmZmZmZlZlVEICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAgICAgICAgZzM8MT5VRCAgICAg ICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK21vdigx NikgICAgICAgICBnNDwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAgICAgICAgICAgICAg ICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc1PDE+VUQgICAgICAgICAweDAwMDAw MDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3YoMTYpICAgICAgICAg ZzY8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEg MUggfTsKK21vdigxNikgICAgICAgICBnNzwxPlVEICAgICAgICAgMHgwMDAwMDAwMFVEICAgICAg ICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9OworbW92KDE2KSAgICAgICAgIGc4PDE+VUQgICAg ICAgICAweDAwMDAwMDAwVUQgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIDFIIH07Cittb3Yo MTYpICAgICAgICAgZzk8MT5VRCAgICAgICAgIDB4MDAwMDAwMDBVRCAgICAgICAgICAgICAgICAg ICAgeyBhbGlnbjEgMUggfTsKK21vdigxNikgICAgICAgICBnMTA8MT5VRCAgICAgICAgMHgwMDAw MDAwMFVEICAgICAgICAgICAgICAgICAgICB7IGFsaWduMSAxSCB9Oworc2VuZGMoOCkgICAgICAg IG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5GICAgICAgMHgxMjBhODAwMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlbmRlciBNc2dEZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJs ID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBybGVuIDAgeyBhbGlnbjEgMVEgfTsKK2FkZCgxKSAg ICAgICAgICBnMjwxPlVEICAgICAgICAgZzE8MCwxLDA+VVcgICAgIDB4MDAxMFVXICAgICAgICB7 IGFsaWduMSAxTiB9Oworc2VuZGMoOCkgICAgICAgIG51bGw8MT5VRCAgICAgICBnMjw4LDgsMT5G ICAgICAgMHgxMjBhODAwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlciBNc2dE ZXNjOiBtZWRpYSBibG9jayB3cml0ZSBNc2dDdHJsID0gMHgwIFN1cmZhY2UgPSAwIG1sZW4gOSBy bGVuIDAgeyBhbGlnbjEgMVEgfTsKKworLyogTm93LCBjbGVhciBhbGwgR1JGIHJlZ2lzdGVycyAq LworYWRkLm56LmYwLjAoMSkgIGEwLjQ8MT5XICAgICAgICBhMC40PDAsMSwwPlcgICAgLTFXICAg ICAgICAgICAgIHsgYWxpZ24xIDFOIH07Cittb3YoMTYpICAgICAgICAgZ1thMF08MT5VVyAgICAg IGYwLjE8MCwxLDA+VVcgICAgICAgICAgICAgICAgICAgeyBhbGlnbjEgMUggfTsKK2FkZCgxKSAg ICAgICAgICBhMDwxPkQgICAgICAgICAgYTA8MCwxLDA+RCAgICAgIDMyRCAgICAgICAgICAgICB7 IGFsaWduMSAxTiB9OworKCtmMC4wKSBqbXBpKDEpIC04RCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgYWxpZ24xIFdFX2FsbCAxTiB9OworCisvKiBUZXJtaW5h bnRlIHRoZSB0aHJlYWQgKi8KK3NlbmRjKDgpICAgICAgICBudWxsPDE+VUQgICAgICAgZzEyNzw4 LDgsMT5GICAgIDB4ODIwMDAwMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRf c3Bhd25lciBNc2dEZXNjOiBtbGVuIDEgcmxlbiAwICAgICAgICAgICB7IGFsaWduMSAxUSBFT1Qg fTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==