<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>143717</bug_id>
          
          <creation_ts>2015-04-14 10:39:42 -0700</creation_ts>
          <short_desc>Add JSC_functionOverrides=&lt;overrides file&gt; debugging tool</short_desc>
          <delta_ts>2015-04-16 13:03:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085188</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-14 10:39:42 -0700</bug_when>
    <thetext>This tool allows us to do runtime replacement of function bodies with alternatives for debugging purposes.  For example, this is useful when we need to debug VM bugs which manifest in scripts executing in webpages downloaded from remote servers that we don&apos;t control.  The tool allows us to augment those scripts with logging or test code to help isolate the bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085195</commentid>
    <comment_count>1</comment_count>
      <attachid>250717</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-14 10:54:28 -0700</bug_when>
    <thetext>Created attachment 250717
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085200</commentid>
    <comment_count>2</comment_count>
      <attachid>250718</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-14 11:31:25 -0700</bug_when>
    <thetext>Created attachment 250718
patch 2: fix EFL, GTK, and Win build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086026</commentid>
    <comment_count>3</comment_count>
      <attachid>250718</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-16 12:41:02 -0700</bug_when>
    <thetext>Comment on attachment 250718
patch 2: fix EFL, GTK, and Win build failures.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086034</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-16 13:03:26 -0700</bug_when>
    <thetext>Thanks for the review.  I really appreciate it.

Landed in r182903: &lt;http://trac.webkit.org/r182903&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250717</attachid>
            <date>2015-04-14 10:54:28 -0700</date>
            <delta_ts>2015-04-14 11:31:25 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-143717.patch</filename>
            <type>text/plain</type>
            <size>28904</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDE1LTA0LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzPTxvdmVycmlkZXMgZmlsZT4gZGVidWdnaW5nIHRvb2wu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRv
b2wgYWxsb3dzIHVzIHRvIGRvIHJ1bnRpbWUgcmVwbGFjZW1lbnQgb2YgZnVuY3Rpb24gYm9kaWVz
IHdpdGggYWx0ZXJuYXRpdmVzCisgICAgICAgIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICBGb3Ig
ZXhhbXBsZSwgdGhpcyBpcyB1c2VmdWwgd2hlbiB3ZSBuZWVkIHRvIGRlYnVnIFZNIGJ1Z3MKKyAg
ICAgICAgd2hpY2ggbWFuaWZlc3QgaW4gc2NyaXB0cyBleGVjdXRpbmcgaW4gd2VicGFnZXMgZG93
bmxvYWRlZCBmcm9tIHJlbW90ZSBzZXJ2ZXJzCisgICAgICAgIHRoYXQgd2UgZG9uJ3QgY29udHJv
bC4gIFRoZSB0b29sIGFsbG93cyB1cyB0byBhdWdtZW50IHRob3NlIHNjcmlwdHMgd2l0aCBsb2dn
aW5nCisgICAgICAgIG9yIHRlc3QgY29kZSB0byBoZWxwIGlzb2xhdGUgdGhlIGJ1Z3MuCisKKyAg
ICAgICAgVGhpcyB0b29sIHdvcmtzIGJ5IHN1YnN0aXR1dGluZyB0aGUgU291cmNlQ29kZSBhdCBG
dW5jdGlvbkV4ZWN1dGFibGUgY3JlYXRpb24KKyAgICAgICAgdGltZS4gIEl0IGlkZW50aWZpZXMg
d2hpY2ggU291cmNlQ29kZSB0byBzdWJzdGl0dXRlIGJ5IGNvbXBhcmluZyB0aGUgc291cmNlCisg
ICAgICAgIHN0cmluZyBhZ2FpbnN0IGtleXMgaW4gYSBzZXQgb2Yga2V5IHZhbHVlIHBhaXJzLgor
CisgICAgICAgIFRoZSBrZXlzIGFyZSBmdW5jdGlvbiBib2R5IHN0cmluZ3MgZGVmaW5lZCBieSAn
b3ZlcnJpZGUnIGNsYXVzZXMgaW4gdGhlIG92ZXJyaWRlcworICAgICAgICBmaWxlIHNwZWNpZmll
ZCBieSBpbiB0aGUgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzIG9wdGlvbi4gIFRoZSB2YWx1ZXMgYXJl
IGZ1bmN0aW9uCisgICAgICAgIGJvZHkgc3RyaW5ncyBkZWZpbmVzIGJ5ICd3aXRoJyBjbGF1c2Vz
IGluIHRoZSBvdmVycmlkZXMgZmlsZS4KKyAgICAgICAgU2VlIGNvbW1lbnQgYmxvYiBhdCB0b3Ag
b2YgRnVuY3Rpb25PdmVycmlkZXMuY3BwIG9uIHRoZSBmb3JtYXR0aW5nCisgICAgICAgIG9mIHRo
ZSBvdmVycmlkZXMgZmlsZS4KKworICAgICAgICBBdCBGdW5jdGlvbkV4ZWN1dGFibGUgY3JlYXRp
b24gdGltZSwgaWYgdGhlIFNvdXJjZUNvZGUgc3RyaW5nIG1hdGNoZXMgb25lIG9mIHRoZQorICAg
ICAgICAnb3ZlcnJpZGUnIGtleXMgZnJvbSB0aGUgb3ZlcnJpZGVzIGZpbGUsIHRoZSB0b29sIHdp
bGwgcmVwbGFjZSB0aGUgU291cmNlQ29kZSB3aXRoCisgICAgICAgIGEgbmV3IG9uZSBiYXNlZCBv
biB0aGUgY29ycmVzcG9uZGluZyAnd2l0aCcgdmFsdWUgc3RyaW5nLiAgVGhlIEZ1bmN0aW9uRXhl
Y3V0YWJsZQorICAgICAgICB3aWxsIHRoZW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgU291cmNl
Q29kZSBpbnN0ZWFkLgorCisgICAgICAgIFNvbWUgZGVzaWduIGRlY2lzaW9uczoKKyAgICAgICAg
MS4gV2Ugb3B0ZWQgdG8gcmVxdWlyZSB0aGF0IHRoZSAnd2l0aCcgY2xhdXNlIGFwcGVhciBvbiBh
IHNlcGFyYXRlIGxpbmUgdGhhbiB0aGUKKyAgICAgICAgICAgJ292ZXJyaWRlJyBjbGF1c2UgYmVj
YXVzZSB0aGlzIG1ha2VzIGl0IGVhc2llciB0byByZWFkIGFuZCB3cml0ZSB3aGVuIHRoZQorICAg
ICAgICAgICAnb3ZlcnJpZGUnIGNsYXVzZSdzIGZ1bmN0aW9uIGJvZHkgaXMgc2luZ2xlIGxpbmVk
IGFuZCBsb25nLgorCisgICAgICAgIDIuIFRoZSB1c2VyIGNhbiB1c2UgYW55IHNlcXVlbmNlIG9m
IGNoYXJhY3RlcnMgZm9yIHRoZSBkZWxpbWl0ZXIgKGV4Y2VwdCBmb3IgJ3snLAorICAgICAgICAg
ICAnfScgYW5kIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMpIGJlY2F1c2UgdGhpcyBlbnN1cmVzIHRo
YXQgdGhlcmUgY2FuIGFsd2F5cyBiZQorICAgICAgICAgICBzb21lIGRlbGltaXRlciBwYXR0ZXJu
IHRoYXQgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBmdW5jdGlvbiBib2R5IGluIHRoZSBjbGF1c2UK
KyAgICAgICAgICAgZS5nLiBpbiB0aGUgYm9keSBvZiBzdHJpbmdzIGluIHRoZSBKUyBjb2RlLgor
CisgICAgICAgICAgICd7JyBhbmQgJ30nIGFyZSBkaXNhbGxvd2VkIGJlY2F1c2UgdGhleSBhcmUg
dXNlZCB0byBtYXJrIHRoZSBib3VuZGFyaWVzIG9mIHRoZQorICAgICAgICAgICBmdW5jdGlvbiBi
b2R5IHN0cmluZy4gIFdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGRpc2FsbG93ZWQgYmVjYXVz
ZSB0aGV5IGNhbgorICAgICAgICAgICBiZSBlcnJvciBwcm9uZSAodGhlIHVzZXIgbWF5IG5vdCBi
ZSBhYmxlIHRvIHRlbGwgYmV0d2VlbiBzcGFjZXMgYW5kIHRhYnMpLgorCisgICAgICAgIDMuIFRo
ZSBzdGFydCBhbmQgZW5kIGRlbGltaXRlciBtdXN0IGJlIGFuIGlkZW50aWNhbCBzZXF1ZW5jZSBv
ZiBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgIEkgaGFkIGNvbnNpZGVyZWQgYWxsb3dpbmcgdGhl
IHVzZSBvZiBjb21wbGVtZW50YXJ5IGNoYXJhY3RlcnMgbGlrZSA8PiwgW10sIGFuZAorICAgICAg
ICAgICAoKSBmb3IgbWFraW5nIGRlbGltaXRlciBwYWlycyBsaWtlOgorICAgICAgICAgICAgICAg
W1tbWyAuLi4gXV1dXQorICAgICAgICAgICAgICAgPFsoWyggLi4uICldKV0+CisKKyAgICAgICAg
ICAgQnV0IGluIHRoZSBlbmQsIGRlY2lkZWQgYWdhaW5zdCBpdCBiZWNhdXNlOgorICAgICAgICAg
ICBhLiBUaGVzZSBzZXF1ZW5jZXMgb2YgY29tcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGNhbiBleGlz
dHMgaW4gSlMgY29kZS4KKyAgICAgICAgICAgICAgSW4gY29udHJhc3QsIGEgcmVwZWF0aW5nIGRl
bGltaXRlciBsaWtlICUlJSUgaXMgdW5saWtlbHkgdG8gYXBwZWFyIGluIEpTCisgICAgICAgICAg
ICAgIGNvZGUuCisgICAgICAgICAgIGIuIEl0IGNhbiBiZSBlcnJvciBwcm9uZSBmb3IgdGhlIHVz
ZXIgdG8gaGF2ZSB0byB0eXBlIHRoZSBleGFjdCBjb21wbGVtZW50CisgICAgICAgICAgICAgIGNo
YXJhY3RlciBmb3IgdGhlIGVuZCBkZWxpbWl0ZXIgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgICAg
ICAgICAgSW4gY29udHJhc3QsIGEgcmVwZWF0aW5nIGRlbGltaXRlciBsaWtlICUlJSUgaXMgbXVj
aCBlYXNpZXIgdG8gdHlwZSBhbmQKKyAgICAgICAgICAgICAgbGVzcyBlcnJvciBwcm9uZS4gIEV2
ZW4gYSBzZXF1ZW5jZSBsaWtlIEAjJCVeIGlzIGxlc3MgZXJyb3IgcHJvbmUgdGhhbgorICAgICAg
ICAgICAgICBhIGNvbXBsZW1lbnRhcnkgc2VxdWVuY2UgYmVjYXVzZSBpdCBjYW4gYmUgY29weS1w
YXN0ZWQsIGFuZCBuZWVkIG5vdCBiZQorICAgICAgICAgICAgICB0eXBlZCBpbiByZXZlcnNlIG9y
ZGVyLgorICAgICAgICAgICBjLiBJdCBpcyBlYXNpZXIgdG8gcGFyc2UgZm9yIHRoZSBzYW1lIGRl
bGltaXRlciBzdHJpbmcgZm9yIGJvdGggc3RhcnQgYW5kIGVuZC4KKworICAgICAgICA0LiBUaGUg
dG9vbCBkb2VzIGEgbG90IG9mIGNoZWNrcyBmb3Igc3ludGF4IGVycm9ycyBpbiB0aGUgb3ZlcnJp
ZGVzIGZpbGUgYmVjYXVzZQorICAgICAgICAgICB3ZSBkb24ndCB3YW50IGFueSBvdmVycmlkZXMg
dG8gZmFpbCBzaWxlbnRseS4gIElmIGEgc3ludGF4IGVycm9yIGlzIGRldGVjdGVkLAorICAgICAg
ICAgICB0aGUgdG9vbCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGNhbGwgZXhpdCgp
LiAgVGhpcyBhdm9pZHMgdGhlIHVzZXIKKyAgICAgICAgICAgd2FzdGluZyB0aW1lIGRvaW5nIGRl
YnVnZ2luZyBvbmx5IHRvIGJlIHN1cnByaXNlZCBsYXRlciB0aGF0IHRoZWlyIHNwZWNpZmllZAor
ICAgICAgICAgICBvdmVycmlkZXMgZGlkIG5vdCB0YWtlIGVmZmVjdCBiZWNhdXNlIG9mIHNvbWUg
dW5ub3RpY2VkIHR5cG8uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRl
czo6b3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OkZ1bmN0aW9u
T3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVGb3IpOgorICAg
ICAgICAoSlNDOjpoYXNEaXNhbGxvd2VkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6OnBhcnNl
Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVz
SW5GaWxlKToKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRlcy5oOiBBZGRlZC4KKwog
MjAxNS0wNC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCBXaW5kb3dzIGJ1aWxkLiBXaW5kb3dzIGRvZXNuJ3QgdGFrZSBraW5kbHkg
dG8gcHJpdmF0ZSBjbGFzc2VzIHRoYXQgdXNlIEZBU1RfQUxMT0NBVEVELgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgyODAxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIHRvb2xzL0NvZGVQcm9maWxl
LmNwcAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisgICAgdG9vbHMvRnVuY3Rpb25PdmVy
cmlkZXMuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFy
ckNhbm9uaWNhbGl6ZVVDUzIuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTg1NCw2ICs4NTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxX
ZWFrTWFwUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xz
XENvZGVQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXENv
ZGVQcm9maWxpbmcuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cdG9vbHNcRnVu
Y3Rpb25PdmVycmlkZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx5YXJy
XFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHlhcnJcWWFyckludGVycHJldGVyLmNwcCIgLz4KQEAgLTE3MDAsNiArMTcwMSw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdyaXRlQmFycmllcklubGluZXMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRvb2xzXENvZGVQcm9maWxlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmlsaW5nLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xGdW5jdGlvbk92ZXJyaWRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xUaWVyZWRNTWFwQXJyYXkuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHlhcnJcUmVndWxhckV4cHJlc3Npb24uaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtODk3
LDYgKzg5Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmls
aW5nLmNwcCI+CiAgICAgICA8RmlsdGVyPnRvb2xzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xGdW5jdGlvbk92ZXJyaWRlcy5jcHAi
PgorICAgICAgPEZpbHRlcj50b29sczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiPgogICAgICAg
PEZpbHRlcj55YXJyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTc1LDYgKzI5Nzgs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9vbHNcQ29kZVByb2ZpbGluZy5oIj4K
ICAgICAgIDxGaWx0ZXI+dG9vbHM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHRvb2xzXEZ1bmN0aW9uT3ZlcnJpZGVzLmgiPgorICAgICAgPEZp
bHRlcj50b29sczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiPgogICAgICAgPEZpbHRlcj50b29sczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDYg
KzE2NDYsOCBAQAogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTRBMzMxRjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNw
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJRkU0
QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyog
Vk1JbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTRCRkYyQjFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QkZGMjkx
QUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCAqLzsgfTsKKwkJRkU0QkZG
MkMxQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRCRkYyQTFBRDQ3NkU3MDAwODhGODcg
LyogRnVuY3Rpb25PdmVycmlkZXMuaCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAq
LzsgfTsKIAkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEy
NjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVy
aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC0z
NDI0LDYgKzM0MjYsOCBAQAogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGgg
PSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNEEz
MzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTRCRkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVy
cmlkZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25P
dmVycmlkZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTRCRkYyQTFBRDQ3
NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnVuY3Rpb25PdmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRy
eVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQg
LyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzUyLDYg
KzQ3NTYsOCBAQAogCQkJCTg2QjU4MjJGMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5o
ICovLAogCQkJCTg2MDNDRUYyMTRDNzU0NjQwMEFFNTlFMyAvKiBDb2RlUHJvZmlsaW5nLmNwcCAq
LywKIAkJCQk4NjAzQ0VGMzE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5oICovLAor
CQkJCUZFNEJGRjI5MUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRlcy5jcHAgKi8s
CisJCQkJRkU0QkZGMkExQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggKi8s
CiAJCQkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAog
CQkJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJ
CSk7CkBAIC02MjA5LDYgKzYyMTUsNyBAQAogCQkJCUE3ODUwN0Q3MTdDQkM2RkQwMDExRjZFNyAv
KiBNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQTY0NDE1MTk0MjBBNkM2MUFEMTg4MkUg
LyogTWFwRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjkyMTgyRDk5MTQw
MDUyMkMyMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTRCRkYyQzFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NERFRjk0MTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ4LDYgKzcyNTUsNyBAQAog
CQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0Ug
LyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU0QkZGMkIxQUQ0
NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0QTIzRDc1MEY0RTFBQkIwMDIzQ0RBRCAvKiBKSVRTdHVicy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTgyODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNs
YXNzSW5mby5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJGdW5jdGlvbk92ZXJyaWRlcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtMTM3LDE3
ICsxMzgsNDAgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAg
IFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VPdmVycmlkZSA/IFNvdXJjZUNvZGUobV9zb3Vy
Y2VPdmVycmlkZSkgOiBvd25lclNvdXJjZTsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsKKyAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSBtX2xpbmVDb3VudDsKIAogICAgIC8vIEFkanVzdCB0byBvbmUtYmFzZWQg
aW5kZXhpbmcuCiAgICAgYm9vbCBzdGFydENvbHVtbklzT25GaXJzdFNvdXJjZUxpbmUgPSAhbV9m
aXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3VubGlua2VkQm9k
eVN0YXJ0Q29sdW1uICsgKHN0YXJ0Q29sdW1uSXNPbkZpcnN0U291cmNlTGluZSA/IHNvdXJjZS5z
dGFydENvbHVtbigpIDogMSk7Ci0gICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIW1f
bGluZUNvdW50OworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7
CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gbV91bmxpbmtlZEJvZHlFbmRDb2x1bW4gKyAoZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDogMSk7CiAKICAgICBTb3VyY2VDb2Rl
IGNvZGUoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIG1fc291
cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBm
aXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
KTsKKyAgICBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvIG92ZXJyaWRlSW5mbzsKKyAg
ICBib29sIGhhc0Z1bmN0aW9uT3ZlcnJpZGUgPSBmYWxzZTsKKworICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpKSkgeworICAgICAgICBoYXNGdW5jdGlvbk92ZXJy
aWRlID0gRnVuY3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcihjb2RlLCBvdmVy
cmlkZUluZm8pOworICAgICAgICBpZiAoaGFzRnVuY3Rpb25PdmVycmlkZSkgeworICAgICAgICAg
ICAgZmlyc3RMaW5lID0gb3ZlcnJpZGVJbmZvLmZpcnN0TGluZTsKKyAgICAgICAgICAgIGxpbmVD
b3VudCA9IG92ZXJyaWRlSW5mby5saW5lQ291bnQ7CisgICAgICAgICAgICBzdGFydENvbHVtbiA9
IG92ZXJyaWRlSW5mby5zdGFydENvbHVtbjsKKyAgICAgICAgICAgIGVuZENvbHVtbiA9IG92ZXJy
aWRlSW5mby5lbmRDb2x1bW47CisgICAgICAgICAgICBjb2RlID0gb3ZlcnJpZGVJbmZvLnNvdXJj
ZUNvZGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHJlc3Vs
dCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUs
IGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiAgICAgaWYg
KG92ZXJyaWRlTGluZU51bWJlciAhPSAtMSkKICAgICAgICAgcmVzdWx0LT5zZXRPdmVycmlkZUxp
bmVOdW1iZXIob3ZlcnJpZGVMaW5lTnVtYmVyKTsKKworICAgIGlmIChVTkxJS0VMWShoYXNGdW5j
dGlvbk92ZXJyaWRlKSkgeworICAgICAgICByZXN1bHQtPm92ZXJyaWRlUGFyYW1ldGVyQW5kVHlw
ZVByb2ZpbGluZ1N0YXJ0RW5kT2Zmc2V0cygKKyAgICAgICAgICAgIG92ZXJyaWRlSW5mby5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQsCisgICAgICAgICAgICBvdmVycmlkZUluZm8udHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0LAorICAgICAgICAgICAgb3ZlcnJpZGVJbmZvLnR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE4MjgwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQ3LDYgKzY0NywxMyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJz
U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnNTdGFydE9mZnNldDsgfQog
CisgICAgdm9pZCBvdmVycmlkZVBhcmFtZXRlckFuZFR5cGVQcm9maWxpbmdTdGFydEVuZE9mZnNl
dHModW5zaWduZWQgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0LCB1bnNpZ25lZCB0eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQsIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQpCisgICAgeworICAg
ICAgICBtX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydE9mZnNldDsKKyAg
ICAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSB0eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQ7CisgICAgICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7CisgICAgfQorCiAgICAgREVDTEFSRV9JTkZPOwogICAgICAgICAKICAgICB2b2lkIHVu
bGlua0NhbGxzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CShyZXZpc2lvbiAxODI4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsOSBAQCB0eXBlZGVmIGNvbnN0IGNo
YXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUV4ZWN1dGFibGVBbGxvY2F0aW9u
RnV6eiwgZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBmaXJlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6QXQsIDAsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBmaXJlRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVyLCAwLCBudWxscHRyKSBcCi0gICAgdihib29sLCB2
ZXJib3NlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LCBmYWxzZSwgbnVsbHB0cikKKyAgICB2KGJv
b2wsIHZlcmJvc2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIGZhbHNlLCBudWxscHRyKSBcCisg
ICAgXAorICAgIHYob3B0aW9uU3RyaW5nLCBmdW5jdGlvbk92ZXJyaWRlcywgbnVsbHB0ciwgImZp
bGUgd2l0aCBkZWJ1Z2dpbmcgb3ZlcnJpZGVzIGZvciBmdW5jdGlvbiBib2RpZXMiKSBcCiAKIGNs
YXNzIE9wdGlvbnMgewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbk92ZXJyaWRlcy5o
IgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
LyoKKyAgVGhlIG92ZXJyaWRlcyBmaWxlIGRlZmluZXMgZnVuY3Rpb24gYm9kaWVzIHRoYXQgd2Ug
d2lsbCB3YW50IHRvIG92ZXJyaWRlIHdpdGgKKyAgYSByZXBsYWNlbWVudCBmb3IgZGVidWdnaW5n
IHB1cnBvc2VzLiBUaGUgb3ZlcnJpZGVzIGZpbGUgbWF5IGNvbnRhaW4KKyAgJ292ZXJyaWRlJyBh
bmQgJ3dpdGgnIGNsYXVzZXMgbGlrZSB0aGVzZToKKworICAgICAvLyBFeGFtcGxlIDE6IGZ1bmN0
aW9uIGZvbzEoYSkKKyAgICAgb3ZlcnJpZGUgIUAjJCV7IHByaW50KCJJbiBmb28xIik7IH0hQCMk
JQorICAgICB3aXRoIGFiY3sKKyAgICAgICAgIHByaW50KCJJIGFtIG92ZXJyaWRkZW4iKTsKKyAg
ICAgfWFiYworCisgICAgIC8vIEV4YW1wbGUgMjogZnVuY3Rpb24gZm9vMihhKQorICAgICBvdmVy
cmlkZSAlJSV7CisgICAgICAgICBwcmludCgiZm9vMidzIGJvZHkgaGFzIGEgc3RyaW5nIHdpdGgg
fSUlIGluIGl0LiIpOworICAgICAgICAgLy8gQmVjYXVzZSB9JSUgYXBwZWFycyBpbiB0aGUgZnVu
Y3Rpb24gYm9keSBoZXJlLCB3ZSBjYW5ub3QgdXNlCisgICAgICAgICAvLyAlJSBvciAlIGFzIHRo
ZSBkZWxpbWl0ZXIuICUlJSBpcyBvayB0aG91Z2guCisgICAgIH0lJSUKKyAgICAgd2l0aCAlJSV7
CisgICAgICAgICBwcmludCgiT3ZlcnJpZGRlbiBmb28yIik7CisgICAgIH0lJSUKKworICAxLiBD
b21tZW50cyBhcmUgbGluZXMgc3RhcnRpbmcgd2l0aCAvLy4gIEFsbCBjb21tZW50cyB3aWxsIGJl
IGlnbm9yZWQuCisKKyAgMi4gQW4gJ292ZXJyaWRlJyBjbGF1c2UgaXMgdXNlZCB0byBzcGVjaWZ5
IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBib2R5IHdlCisgICAgIHdhbnQgdG8gb3ZlcnJpZGUuIFRo
ZSB3aXRoIGNsYXVzZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG92ZXJyaWRpbmcKKyAgICAgZnVu
Y3Rpb24gYm9keS4KKworICAgICBBbiAnb3ZlcnJpZGUnIGNsYXVzZSBtdXN0IGJlIGZvbGxvd2Vk
IGltbWVkaWF0ZWx5IGJ5IGEgJ3dpdGgnIGNsYXVzZS4KKworICAzLiBBbiAnb3ZlcnJpZGUnIGNs
YXVzZSBtdXN0IGJlIG9mIHRoZSBmb3JtOgorICAgICAgICAgb3ZlcnJpZGUgPGRlbGltaXRlcj57
Li4uZnVuY3Rpb24gYm9keS4uLn08ZGVsaW1pdGVyPgorCisgICAgIFRoZSBvdmVycmlkZSBrZXl3
b3JkIG11c3QgYmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLgorCisgICAgIDxkZWxpbWl0ZXI+
IG1heSBiZSBhbnkgc3RyaW5nIG9mIGFueSBBU0NJSSBjaGFyYWN0ZXJzIChleGNlcHQgZm9yICd7
JywKKyAgICAgJ30nLCBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSBhcyBsb25nIGFzIHRoZSBw
YXR0ZXJuIG9mICJ9PGRlbGltaXRlcj4iCisgICAgIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgZnVu
Y3Rpb24gYm9keSBlLmcuIHRoZSBvdmVycmlkZSBjbGF1c2Ugb2YgRXhhbXBsZSAyCisgICAgIGFi
b3ZlIGlsbHVzdHJhdGVzIHRoaXMuCisKKyAgICAgVGhlIHN0YXJ0IGFuZCBlbmQgPGRlbGltaXRl
cj4gbXVzdCBiZSBpZGVudGljYWwuCisKKyAgICAgVGhlIHNwYWNlIGJldHdlZW4gdGhlIG92ZXJy
aWRlIGtleXdvcmQgYW5kIHRoZSBzdGFydCA8ZGVsaW1pdGVyPiBpcworICAgICByZXF1aXJlZC4K
KworICAgICBBbGwgY2hhcmFjdGVycyBiZXR3ZWVuIHRoZSBwYWlyIG9mIGRlbGltaXRlcnMgd2ls
bCBiZSBjb25zaWRlcmVkIHRvCisgICAgIGJlIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGJvZHkgc3Ry
aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhbHNvIHdvcmsKKyAgICAgd2l0aCBzY3JpcHQgc291cmNl
IHRoYXQgYXJlIG11bHRpLWxpbmVkIGkuZS4gbmV3bGluZXMgYXJlIGFsbG93ZWQuCisgICAgIAor
ICA0LiBBICd3aXRoJyBjbGF1c2UgaXMgaWRlbnRpY2FsIGluIGZvcm0gdG8gYW4gJ292ZXJyaWRl
JyBjbGF1c2UgZXhjZXB0IHRoYXQKKyAgICAgaXQgdXNlcyB0aGUgJ3dpdGgnIGtleXdvcmQgaW5z
dGVhZCBvZiB0aGUgJ292ZXJyaWRlJyBrZXl3b3JkLgorICovCisKK0Z1bmN0aW9uT3ZlcnJpZGVz
JiBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPEZ1bmN0aW9uT3ZlcnJpZGVzPiBvdmVycmlkZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVMaXN0RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplTGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciogb3ZlcnJpZGVzRmlsZU5hbWUg
PSBPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpOworICAgICAgICBvdmVycmlkZXMuY29uc3Ry
dWN0KG92ZXJyaWRlc0ZpbGVOYW1lKTsKKyAgICB9KTsKKyAgICByZXR1cm4gb3ZlcnJpZGVzOwor
fQorICAgIAorRnVuY3Rpb25PdmVycmlkZXM6OkZ1bmN0aW9uT3ZlcnJpZGVzKGNvbnN0IGNoYXIq
IG92ZXJyaWRlc0ZpbGVOYW1lKQoreworICAgIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKG92ZXJyaWRl
c0ZpbGVOYW1lKTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25z
dCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgU3RyaW5nIG5ld0JvZHksIEZ1bmN0aW9uT3ZlcnJpZGVz
OjpPdmVycmlkZUluZm8mIGluZm8pCit7CisgICAgU3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9y
aWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpOworICAgIHVuc2lnbmVkIG9yaWdCcmFjZVN0YXJ0
ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFy
dCA9IG9yaWdQcm92aWRlclN0ci5yZXZlcnNlRmluZCgiZnVuY3Rpb24iLCBvcmlnQnJhY2VTdGFy
dCk7CisgICAgdW5zaWduZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVu
Y3Rpb25TdGFydDsKKyAgICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJz
dHJpbmcob3JpZ0Z1bmN0aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CisKKyAgICBTdHJpbmcgbmV3
UHJvdmlkZXJTdHI7CisgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOworICAg
IG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKKworICAgIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4gbmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3Zp
ZGVyU3RyLCAiPG92ZXJyaWRkZW4+Iik7CisKKyAgICBpbmZvLmZpcnN0TGluZSA9IDE7CisgICAg
aW5mby5saW5lQ291bnQgPSAxOyAvLyBGYWtpbmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0
dGVyIGZvciBub3cuCisgICAgaW5mby5zdGFydENvbHVtbiA9IDE7CisgICAgaW5mby5lbmRDb2x1
bW4gPSAxOyAvLyBGYWtpbmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciBub3cu
CisgICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5maW5kKCIo
Iik7CisgICAgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5m
aW5kKCJ7Iik7CisgICAgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJT
dHIubGVuZ3RoKCkgLSAxOworCisgICAgaW5mby5zb3VyY2VDb2RlID0KKyAgICAgICAgU291cmNl
Q29kZShuZXdQcm92aWRlciwgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCArIDEsIDEsIDEpOworfQorICAgIAorYm9vbCBGdW5jdGlvbk92
ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2Rl
LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCit7CisgICAgQVNTRVJU
KE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJpZGVzKCkpOworICAgIEZ1bmN0aW9uT3ZlcnJpZGVzJiBv
dmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CisKKyAgICBhdXRvIGl0
ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5maW5kKG9yaWdDb2RlLnRvU3RyaW5nKCkpOworICAgIGlm
IChpdCA9PSBvdmVycmlkZXMubV9lbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKG9yaWdDb2RlLCBpdC0+dmFsdWUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNkZWZpbmUgU1lOVEFYX0VSUk9SICJTWU5UQVgg
RVJST1IiCisjZGVmaW5lIElPX0VSUk9SICJJTyBFUlJPUiIKKyNkZWZpbmUgRkFJTF9XSVRIX0VS
Uk9SKGVycm9yLCBlcnJvck1lc3NhZ2VJbkJyYWNrZXRzKSBcCisgICAgZG8geyBcCisgICAgICAg
IGRhdGFMb2coImZ1bmN0aW9uT3ZlcnJpZGVzICIsIGVycm9yLCAiOiAiKTsgXAorICAgICAgICBk
YXRhTG9nIGVycm9yTWVzc2FnZUluQnJhY2tldHM7IFwKKyAgICAgICAgZXhpdChFWElUX0ZBSUxV
UkUpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK3N0YXRpYyBib29sIGhhc0Rpc2FsbG93ZWRD
aGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICB3aGlsZSAo
bGVuZ3RoLS0pIHsKKyAgICAgICAgY2hhciBjID0gKnN0cisrOworICAgICAgICAvLyAneycgaXMg
YWxzbyBkaXNhbGxvd2VkLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgaXQgYmVjYXVz
ZQorICAgICAgICAvLyBwYXJzZUNsYXVzZSgpIHNlYXJjaGVzIGZvciAneycgYXMgdGhlIGVuZCBv
ZiB0aGUgc3RhcnQgZGVsaW1pdGVyLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgdGhlIHBhcnNl
ZCBkZWxpbWl0ZXIgc3RyaW5nIHdpbGwgbmV2ZXIgaW5jbHVkZSAneycuCisgICAgICAgIGlmIChj
ID09ICd9JyB8fCBpc0FTQ0lJU3BhY2UoYykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgU3RyaW5nIHBhcnNlQ2xhdXNlKGNv
bnN0IGNoYXIqIGtleXdvcmQsIHNpemVfdCBrZXl3b3JkTGVuZ3RoLCBGSUxFKiBmaWxlLCBjb25z
dCBjaGFyKiBsaW5lLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQoreworICAgIGNv
bnN0IGNoYXIqIGtleXdvcmRQb3MgPSBzdHJzdHIobGluZSwga2V5d29yZCk7CisgICAgaWYgKCFr
ZXl3b3JkUG9zKQorICAgICAgICBGQUlMX1dJVEhfRVJST1IoU1lOVEFYX0VSUk9SLCAoIkV4cGVj
dGluZyAnIiwga2V5d29yZCwgIicgY2xhdXNlOlxuIiwgbGluZSwgIlxuIikpOworICAgIGlmIChr
ZXl3b3JkUG9zICE9IGxpbmUpCisgICAgICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1Is
ICgiQ2Fubm90IGhhdmUgYW55IGNoYXJhY3RlcnMgYmVmb3JlICciLCBrZXl3b3JkLCAiJzpcbiIs
IGxpbmUsICJcbiIpKTsKKyAgICBpZiAobGluZVtrZXl3b3JkTGVuZ3RoXSAhPSAnICcpCisgICAg
ICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgiJyIsIGtleXdvcmQsICInIG11c3Qg
YmUgZm9sbG93ZWQgYnkgYSAnICc6XG4iLCBsaW5lLCAiXG4iKSk7CisKKyAgICBjb25zdCBjaGFy
KiBkZWxpbWl0ZXJTdGFydCA9ICZsaW5lW2tleXdvcmRMZW5ndGggKyAxXTsKKyAgICBjb25zdCBj
aGFyKiBkZWxpbWl0ZXJFbmQgPSBzdHJzdHIoZGVsaW1pdGVyU3RhcnQsICJ7Iik7CisgICAgaWYg
KCFkZWxpbWl0ZXJFbmQpCisgICAgICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgi
TWlzc2luZyB7IGFmdGVyICciLCBrZXl3b3JkLCAiJyBjbGF1c2Ugc3RhcnQgZGVsaW1pdGVyOlxu
IiwgbGluZSwgIlxuIikpOworICAgIAorICAgIHNpemVfdCBkZWxpbWl0ZXJMZW5ndGggPSBkZWxp
bWl0ZXJFbmQgLSBkZWxpbWl0ZXJTdGFydDsKKyAgICBTdHJpbmcgZGVsaW1pdGVyKGRlbGltaXRl
clN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpOworCisgICAgaWYgKGhhc0Rpc2FsbG93ZWRDaGFyYWN0
ZXJzKGRlbGltaXRlclN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpKQorICAgICAgICBGQUlMX1dJVEhf
RVJST1IoU1lOVEFYX0VSUk9SLCAoIkRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJyBjYW5ub3Qg
aGF2ZSAneycsICd9Jywgb3Igd2hpdGVzcGFjZTpcbiIsIGxpbmUsICJcbiIpKTsKKyAgICAKKyAg
ICBTdHJpbmcgdGVybWluYXRvclN0cmluZzsKKyAgICB0ZXJtaW5hdG9yU3RyaW5nLmFwcGVuZCgi
fSIpOworICAgIHRlcm1pbmF0b3JTdHJpbmcuYXBwZW5kKGRlbGltaXRlcik7CisKKyAgICBjb25z
dCBjaGFyKiB0ZXJtaW5hdG9yID0gdGVybWluYXRvclN0cmluZy5hc2NpaSgpLmRhdGEoKTsKKyAg
ICBsaW5lID0gZGVsaW1pdGVyRW5kOyAvLyBTdGFydCBmcm9tIHRoZSB7LgorCisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGRvIHsKKyAgICAgICAgY2hhciogcCA9IHN0cnN0cihsaW5l
LCB0ZXJtaW5hdG9yKTsKKyAgICAgICAgaWYgKHApIHsKKyAgICAgICAgICAgIGlmIChwW3N0cmxl
bih0ZXJtaW5hdG9yKV0gIT0gJ1xuJykKKyAgICAgICAgICAgICAgICBGQUlMX1dJVEhfRVJST1Io
U1lOVEFYX0VSUk9SLCAoIlVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciAnIiwga2V5d29yZCwg
IicgY2xhdXNlIGVuZCBkZWxpbWl0ZXIgJyIsIGRlbGltaXRlciwgIic6XG4iLCBsaW5lLCAiXG4i
KSk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsIHAgLSBsaW5lICsgMSk7Cisg
ICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGxpbmUpOworCisgICAgfSB3aGlsZSAoKGxpbmUgPSBmZ2V0cyhidWZm
ZXIsIGJ1ZmZlclNpemUsIGZpbGUpKSk7CisKKyAgICBGQUlMX1dJVEhfRVJST1IoU1lOVEFYX0VS
Uk9SLCAoIiciLCBrZXl3b3JkLCAiJyBjbGF1c2UgZW5kIGRlbGltaXRlciAnIiwgZGVsaW1pdGVy
LCAiJyBub3QgZm91bmQ6XG4iLCBidWlsZGVyLnRvU3RyaW5nKCksICJcbiIsICJBcmUgeW91IG1p
c3NpbmcgYSAnfScgYmVmb3JlIHRoZSBkZWxpbWl0ZXI/XG4iKSk7Cit9CisKK3ZvaWQgRnVuY3Rp
b25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1lKQor
eworICAgIGlmICghZmlsZU5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBGSUxFKiBm
aWxlID0gZm9wZW4oZmlsZU5hbWUsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAgICBGQUlM
X1dJVEhfRVJST1IoSU9fRVJST1IsICgiRmFpbGVkIHRvIG9wZW4gZmlsZSAiLCBmaWxlTmFtZSwg
Ii4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nl
c3Muc2I/XG4iKSk7CisKKyAgICBjaGFyKiBsaW5lOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWl07
CisgICAgd2hpbGUgKChsaW5lID0gZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZmlsZSkp
KSB7CisgICAgICAgIGlmIChzdHJzdHIobGluZSwgIi8vIikgPT0gbGluZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChsaW5lWzBdID09ICdcbicgfHwgbGluZVswXSA9PSAn
XDAnKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2l6ZV90IGtleXdvcmRMZW5n
dGg7CisgICAgICAgIAorICAgICAgICBrZXl3b3JkTGVuZ3RoID0gc2l6ZW9mKCJvdmVycmlkZSIp
IC0gMTsKKyAgICAgICAgU3RyaW5nIGtleVN0ciA9IHBhcnNlQ2xhdXNlKCJvdmVycmlkZSIsIGtl
eXdvcmRMZW5ndGgsIGZpbGUsIGxpbmUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworCisgICAg
ICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmaWxlKTsKKworICAgICAg
ICBrZXl3b3JkTGVuZ3RoID0gc2l6ZW9mKCJ3aXRoIikgLSAxOworICAgICAgICBTdHJpbmcgdmFs
dWVTdHIgPSBwYXJzZUNsYXVzZSgid2l0aCIsIGtleXdvcmRMZW5ndGgsIGZpbGUsIGxpbmUsIGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworCisgICAgICAgIG1fZW50cmllcy5hZGQoa2V5U3RyLCB2
YWx1ZVN0cik7CisgICAgfQorICAgIAorICAgIGludCByZXN1bHQgPSBmY2xvc2UoZmlsZSk7Cisg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVz
OiAlc1xuIiwgZmlsZU5hbWUsIHN0cmVycm9yKGVycm5vKSk7Cit9CisgICAgCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvRnVuY3Rpb25PdmVycmlkZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGdW5j
dGlvbk92ZXJyaWRlc19oCisjZGVmaW5lIEZ1bmN0aW9uT3ZlcnJpZGVzX2gKKworI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIEZ1bmN0aW9uT3ZlcnJpZGVzIHsK
K3B1YmxpYzoKKyAgICBzdHJ1Y3QgT3ZlcnJpZGVJbmZvIHsKKyAgICAgICAgU291cmNlQ29kZSBz
b3VyY2VDb2RlOworICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmU7CisgICAgICAgIHVuc2lnbmVk
IGxpbmVDb3VudDsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW47CisgICAgICAgIHVuc2ln
bmVkIGVuZENvbHVtbjsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0Owor
ICAgICAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CisgICAgICAgIHVuc2ln
bmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CisgICAgfTsKKworICAgIHN0YXRpYyBGdW5jdGlv
bk92ZXJyaWRlcyYgb3ZlcnJpZGVzKCk7CisgICAgRnVuY3Rpb25PdmVycmlkZXMoY29uc3QgY2hh
ciogZnVuY3Rpb25PdmVycmlkZXNGaWxlTmFtZSk7CisKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplT3ZlcnJpZGVGb3IoY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIE92ZXJyaWRlSW5mbyYg
cmVzdWx0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0
IGNoYXIqIGZpbGVOYW1lKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fZW50cmll
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRnVuY3Rpb25PdmVycmlk
ZXNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250718</attachid>
            <date>2015-04-14 11:31:25 -0700</date>
            <delta_ts>2015-04-16 12:41:02 -0700</delta_ts>
            <desc>patch 2: fix EFL, GTK, and Win build failures.</desc>
            <filename>bug-143717.patch</filename>
            <type>text/plain</type>
            <size>28910</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDE1LTA0LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzPTxvdmVycmlkZXMgZmlsZT4gZGVidWdnaW5nIHRvb2wu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRv
b2wgYWxsb3dzIHVzIHRvIGRvIHJ1bnRpbWUgcmVwbGFjZW1lbnQgb2YgZnVuY3Rpb24gYm9kaWVz
IHdpdGggYWx0ZXJuYXRpdmVzCisgICAgICAgIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICBGb3Ig
ZXhhbXBsZSwgdGhpcyBpcyB1c2VmdWwgd2hlbiB3ZSBuZWVkIHRvIGRlYnVnIFZNIGJ1Z3MKKyAg
ICAgICAgd2hpY2ggbWFuaWZlc3QgaW4gc2NyaXB0cyBleGVjdXRpbmcgaW4gd2VicGFnZXMgZG93
bmxvYWRlZCBmcm9tIHJlbW90ZSBzZXJ2ZXJzCisgICAgICAgIHRoYXQgd2UgZG9uJ3QgY29udHJv
bC4gIFRoZSB0b29sIGFsbG93cyB1cyB0byBhdWdtZW50IHRob3NlIHNjcmlwdHMgd2l0aCBsb2dn
aW5nCisgICAgICAgIG9yIHRlc3QgY29kZSB0byBoZWxwIGlzb2xhdGUgdGhlIGJ1Z3MuCisKKyAg
ICAgICAgVGhpcyB0b29sIHdvcmtzIGJ5IHN1YnN0aXR1dGluZyB0aGUgU291cmNlQ29kZSBhdCBG
dW5jdGlvbkV4ZWN1dGFibGUgY3JlYXRpb24KKyAgICAgICAgdGltZS4gIEl0IGlkZW50aWZpZXMg
d2hpY2ggU291cmNlQ29kZSB0byBzdWJzdGl0dXRlIGJ5IGNvbXBhcmluZyB0aGUgc291cmNlCisg
ICAgICAgIHN0cmluZyBhZ2FpbnN0IGtleXMgaW4gYSBzZXQgb2Yga2V5IHZhbHVlIHBhaXJzLgor
CisgICAgICAgIFRoZSBrZXlzIGFyZSBmdW5jdGlvbiBib2R5IHN0cmluZ3MgZGVmaW5lZCBieSAn
b3ZlcnJpZGUnIGNsYXVzZXMgaW4gdGhlIG92ZXJyaWRlcworICAgICAgICBmaWxlIHNwZWNpZmll
ZCBieSBpbiB0aGUgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzIG9wdGlvbi4gIFRoZSB2YWx1ZXMgYXJl
IGZ1bmN0aW9uCisgICAgICAgIGJvZHkgc3RyaW5ncyBkZWZpbmVzIGJ5ICd3aXRoJyBjbGF1c2Vz
IGluIHRoZSBvdmVycmlkZXMgZmlsZS4KKyAgICAgICAgU2VlIGNvbW1lbnQgYmxvYiBhdCB0b3Ag
b2YgRnVuY3Rpb25PdmVycmlkZXMuY3BwIG9uIHRoZSBmb3JtYXR0aW5nCisgICAgICAgIG9mIHRo
ZSBvdmVycmlkZXMgZmlsZS4KKworICAgICAgICBBdCBGdW5jdGlvbkV4ZWN1dGFibGUgY3JlYXRp
b24gdGltZSwgaWYgdGhlIFNvdXJjZUNvZGUgc3RyaW5nIG1hdGNoZXMgb25lIG9mIHRoZQorICAg
ICAgICAnb3ZlcnJpZGUnIGtleXMgZnJvbSB0aGUgb3ZlcnJpZGVzIGZpbGUsIHRoZSB0b29sIHdp
bGwgcmVwbGFjZSB0aGUgU291cmNlQ29kZSB3aXRoCisgICAgICAgIGEgbmV3IG9uZSBiYXNlZCBv
biB0aGUgY29ycmVzcG9uZGluZyAnd2l0aCcgdmFsdWUgc3RyaW5nLiAgVGhlIEZ1bmN0aW9uRXhl
Y3V0YWJsZQorICAgICAgICB3aWxsIHRoZW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgU291cmNl
Q29kZSBpbnN0ZWFkLgorCisgICAgICAgIFNvbWUgZGVzaWduIGRlY2lzaW9uczoKKyAgICAgICAg
MS4gV2Ugb3B0ZWQgdG8gcmVxdWlyZSB0aGF0IHRoZSAnd2l0aCcgY2xhdXNlIGFwcGVhciBvbiBh
IHNlcGFyYXRlIGxpbmUgdGhhbiB0aGUKKyAgICAgICAgICAgJ292ZXJyaWRlJyBjbGF1c2UgYmVj
YXVzZSB0aGlzIG1ha2VzIGl0IGVhc2llciB0byByZWFkIGFuZCB3cml0ZSB3aGVuIHRoZQorICAg
ICAgICAgICAnb3ZlcnJpZGUnIGNsYXVzZSdzIGZ1bmN0aW9uIGJvZHkgaXMgc2luZ2xlIGxpbmVk
IGFuZCBsb25nLgorCisgICAgICAgIDIuIFRoZSB1c2VyIGNhbiB1c2UgYW55IHNlcXVlbmNlIG9m
IGNoYXJhY3RlcnMgZm9yIHRoZSBkZWxpbWl0ZXIgKGV4Y2VwdCBmb3IgJ3snLAorICAgICAgICAg
ICAnfScgYW5kIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMpIGJlY2F1c2UgdGhpcyBlbnN1cmVzIHRo
YXQgdGhlcmUgY2FuIGFsd2F5cyBiZQorICAgICAgICAgICBzb21lIGRlbGltaXRlciBwYXR0ZXJu
IHRoYXQgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBmdW5jdGlvbiBib2R5IGluIHRoZSBjbGF1c2UK
KyAgICAgICAgICAgZS5nLiBpbiB0aGUgYm9keSBvZiBzdHJpbmdzIGluIHRoZSBKUyBjb2RlLgor
CisgICAgICAgICAgICd7JyBhbmQgJ30nIGFyZSBkaXNhbGxvd2VkIGJlY2F1c2UgdGhleSBhcmUg
dXNlZCB0byBtYXJrIHRoZSBib3VuZGFyaWVzIG9mIHRoZQorICAgICAgICAgICBmdW5jdGlvbiBi
b2R5IHN0cmluZy4gIFdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGRpc2FsbG93ZWQgYmVjYXVz
ZSB0aGV5IGNhbgorICAgICAgICAgICBiZSBlcnJvciBwcm9uZSAodGhlIHVzZXIgbWF5IG5vdCBi
ZSBhYmxlIHRvIHRlbGwgYmV0d2VlbiBzcGFjZXMgYW5kIHRhYnMpLgorCisgICAgICAgIDMuIFRo
ZSBzdGFydCBhbmQgZW5kIGRlbGltaXRlciBtdXN0IGJlIGFuIGlkZW50aWNhbCBzZXF1ZW5jZSBv
ZiBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgIEkgaGFkIGNvbnNpZGVyZWQgYWxsb3dpbmcgdGhl
IHVzZSBvZiBjb21wbGVtZW50YXJ5IGNoYXJhY3RlcnMgbGlrZSA8PiwgW10sIGFuZAorICAgICAg
ICAgICAoKSBmb3IgbWFraW5nIGRlbGltaXRlciBwYWlycyBsaWtlOgorICAgICAgICAgICAgICAg
W1tbWyAuLi4gXV1dXQorICAgICAgICAgICAgICAgPFsoWyggLi4uICldKV0+CisKKyAgICAgICAg
ICAgQnV0IGluIHRoZSBlbmQsIGRlY2lkZWQgYWdhaW5zdCBpdCBiZWNhdXNlOgorICAgICAgICAg
ICBhLiBUaGVzZSBzZXF1ZW5jZXMgb2YgY29tcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGNhbiBleGlz
dHMgaW4gSlMgY29kZS4KKyAgICAgICAgICAgICAgSW4gY29udHJhc3QsIGEgcmVwZWF0aW5nIGRl
bGltaXRlciBsaWtlICUlJSUgaXMgdW5saWtlbHkgdG8gYXBwZWFyIGluIEpTCisgICAgICAgICAg
ICAgIGNvZGUuCisgICAgICAgICAgIGIuIEl0IGNhbiBiZSBlcnJvciBwcm9uZSBmb3IgdGhlIHVz
ZXIgdG8gaGF2ZSB0byB0eXBlIHRoZSBleGFjdCBjb21wbGVtZW50CisgICAgICAgICAgICAgIGNo
YXJhY3RlciBmb3IgdGhlIGVuZCBkZWxpbWl0ZXIgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgICAg
ICAgICAgSW4gY29udHJhc3QsIGEgcmVwZWF0aW5nIGRlbGltaXRlciBsaWtlICUlJSUgaXMgbXVj
aCBlYXNpZXIgdG8gdHlwZSBhbmQKKyAgICAgICAgICAgICAgbGVzcyBlcnJvciBwcm9uZS4gIEV2
ZW4gYSBzZXF1ZW5jZSBsaWtlIEAjJCVeIGlzIGxlc3MgZXJyb3IgcHJvbmUgdGhhbgorICAgICAg
ICAgICAgICBhIGNvbXBsZW1lbnRhcnkgc2VxdWVuY2UgYmVjYXVzZSBpdCBjYW4gYmUgY29weS1w
YXN0ZWQsIGFuZCBuZWVkIG5vdCBiZQorICAgICAgICAgICAgICB0eXBlZCBpbiByZXZlcnNlIG9y
ZGVyLgorICAgICAgICAgICBjLiBJdCBpcyBlYXNpZXIgdG8gcGFyc2UgZm9yIHRoZSBzYW1lIGRl
bGltaXRlciBzdHJpbmcgZm9yIGJvdGggc3RhcnQgYW5kIGVuZC4KKworICAgICAgICA0LiBUaGUg
dG9vbCBkb2VzIGEgbG90IG9mIGNoZWNrcyBmb3Igc3ludGF4IGVycm9ycyBpbiB0aGUgb3ZlcnJp
ZGVzIGZpbGUgYmVjYXVzZQorICAgICAgICAgICB3ZSBkb24ndCB3YW50IGFueSBvdmVycmlkZXMg
dG8gZmFpbCBzaWxlbnRseS4gIElmIGEgc3ludGF4IGVycm9yIGlzIGRldGVjdGVkLAorICAgICAg
ICAgICB0aGUgdG9vbCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGNhbGwgZXhpdCgp
LiAgVGhpcyBhdm9pZHMgdGhlIHVzZXIKKyAgICAgICAgICAgd2FzdGluZyB0aW1lIGRvaW5nIGRl
YnVnZ2luZyBvbmx5IHRvIGJlIHN1cnByaXNlZCBsYXRlciB0aGF0IHRoZWlyIHNwZWNpZmllZAor
ICAgICAgICAgICBvdmVycmlkZXMgZGlkIG5vdCB0YWtlIGVmZmVjdCBiZWNhdXNlIG9mIHNvbWUg
dW5ub3RpY2VkIHR5cG8uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRl
czo6b3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OkZ1bmN0aW9u
T3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVGb3IpOgorICAg
ICAgICAoSlNDOjpoYXNEaXNhbGxvd2VkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6OnBhcnNl
Q2xhdXNlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVz
SW5GaWxlKToKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRlcy5oOiBBZGRlZC4KKwog
MjAxNS0wNC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCBXaW5kb3dzIGJ1aWxkLiBXaW5kb3dzIGRvZXNuJ3QgdGFrZSBraW5kbHkg
dG8gcHJpdmF0ZSBjbGFzc2VzIHRoYXQgdXNlIEZBU1RfQUxMT0NBVEVELgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgyODAxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAogICAgIHRvb2xzL0NvZGVQcm9maWxl
LmNwcAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisgICAgdG9vbHMvRnVuY3Rpb25PdmVy
cmlkZXMuY3BwCiAKICAgICB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogICAgIHlhcnIvWWFy
ckNhbm9uaWNhbGl6ZVVDUzIuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTg1NCw2ICs4NTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxX
ZWFrTWFwUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xz
XENvZGVQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHRvb2xzXENv
ZGVQcm9maWxpbmcuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cdG9vbHNcRnVu
Y3Rpb25PdmVycmlkZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx5YXJy
XFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHlhcnJcWWFyckludGVycHJldGVyLmNwcCIgLz4KQEAgLTE3MDAsNiArMTcwMSw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdyaXRlQmFycmllcklubGluZXMuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHRvb2xzXENvZGVQcm9maWxlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmlsaW5nLmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xGdW5jdGlvbk92ZXJyaWRlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx0b29sc1xUaWVyZWRNTWFwQXJyYXkuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHlhcnJcUmVndWxhckV4cHJlc3Npb24uaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtODk3
LDYgKzg5Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xDb2RlUHJvZmls
aW5nLmNwcCI+CiAgICAgICA8RmlsdGVyPnRvb2xzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx0b29sc1xGdW5jdGlvbk92ZXJyaWRlcy5jcHAi
PgorICAgICAgPEZpbHRlcj50b29sczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ceWFyclxSZWd1bGFyRXhwcmVzc2lvbi5jcHAiPgogICAgICAg
PEZpbHRlcj55YXJyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yOTc1LDYgKzI5Nzgs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cdG9vbHNcQ29kZVByb2ZpbGluZy5oIj4K
ICAgICAgIDxGaWx0ZXI+dG9vbHM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHRvb2xzXEZ1bmN0aW9uT3ZlcnJpZGVzLmgiPgorICAgICAgPEZp
bHRlcj50b29sczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cdG9vbHNcUHJvZmlsZVRyZWVOb2RlLmgiPgogICAgICAgPEZpbHRlcj50b29sczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE4MjgwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDYg
KzE2NDYsOCBAQAogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTRBMzMxRjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNw
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJRkU0
QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyog
Vk1JbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTRCRkYyQjFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QkZGMjkx
QUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCAqLzsgfTsKKwkJRkU0QkZG
MkMxQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRCRkYyQTFBRDQ3NkU3MDAwODhGODcg
LyogRnVuY3Rpb25PdmVycmlkZXMuaCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAq
LzsgfTsKIAkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEy
NjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVy
aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC0z
NDI0LDYgKzM0MjYsOCBAQAogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGgg
PSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNEEz
MzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTRCRkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVy
cmlkZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25P
dmVycmlkZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTRCRkYyQTFBRDQ3
NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnVuY3Rpb25PdmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRy
eVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQg
LyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzUyLDYg
KzQ3NTYsOCBAQAogCQkJCTg2QjU4MjJGMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5o
ICovLAogCQkJCTg2MDNDRUYyMTRDNzU0NjQwMEFFNTlFMyAvKiBDb2RlUHJvZmlsaW5nLmNwcCAq
LywKIAkJCQk4NjAzQ0VGMzE0Qzc1NDY0MDBBRTU5RTMgLyogQ29kZVByb2ZpbGluZy5oICovLAor
CQkJCUZFNEJGRjI5MUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRlcy5jcHAgKi8s
CisJCQkJRkU0QkZGMkExQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggKi8s
CiAJCQkJODZCNTgyMkMxNEQyMkY1RjAwQTlDMzA2IC8qIFByb2ZpbGVUcmVlTm9kZS5oICovLAog
CQkJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJ
CSk7CkBAIC02MjA5LDYgKzYyMTUsNyBAQAogCQkJCUE3ODUwN0Q3MTdDQkM2RkQwMDExRjZFNyAv
KiBNYXBEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQTY0NDE1MTk0MjBBNkM2MUFEMTg4MkUg
LyogTWFwRGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjkyMTgyRDk5MTQw
MDUyMkMyMiAvKiBNYXBJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTRCRkYyQzFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NERFRjk0MTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjQ4LDYgKzcyNTUsNyBAQAog
CQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHVi
Um91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0Ug
LyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU0QkZGMkIxQUQ0
NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0QTIzRDc1MEY0RTFBQkIwMDIzQ0RBRCAvKiBKSVRTdHVicy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzcxMkUyMTdDRDg3OTEwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTgyODAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNs
YXNzSW5mby5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJGdW5jdGlvbk92ZXJyaWRlcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtMTM3LDE3
ICsxMzgsNDAgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAg
IFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VPdmVycmlkZSA/IFNvdXJjZUNvZGUobV9zb3Vy
Y2VPdmVycmlkZSkgOiBvd25lclNvdXJjZTsKICAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsKKyAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSBtX2xpbmVDb3VudDsKIAogICAgIC8vIEFkanVzdCB0byBvbmUtYmFzZWQg
aW5kZXhpbmcuCiAgICAgYm9vbCBzdGFydENvbHVtbklzT25GaXJzdFNvdXJjZUxpbmUgPSAhbV9m
aXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3VubGlua2VkQm9k
eVN0YXJ0Q29sdW1uICsgKHN0YXJ0Q29sdW1uSXNPbkZpcnN0U291cmNlTGluZSA/IHNvdXJjZS5z
dGFydENvbHVtbigpIDogMSk7Ci0gICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIW1f
bGluZUNvdW50OworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7
CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gbV91bmxpbmtlZEJvZHlFbmRDb2x1bW4gKyAoZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDogMSk7CiAKICAgICBTb3VyY2VDb2Rl
IGNvZGUoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIG1fc291
cmNlTGVuZ3RoLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIHJlc3VsdCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBm
aXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1u
KTsKKyAgICBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvIG92ZXJyaWRlSW5mbzsKKyAg
ICBib29sIGhhc0Z1bmN0aW9uT3ZlcnJpZGUgPSBmYWxzZTsKKworICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpKSkgeworICAgICAgICBoYXNGdW5jdGlvbk92ZXJy
aWRlID0gRnVuY3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcihjb2RlLCBvdmVy
cmlkZUluZm8pOworICAgICAgICBpZiAoaGFzRnVuY3Rpb25PdmVycmlkZSkgeworICAgICAgICAg
ICAgZmlyc3RMaW5lID0gb3ZlcnJpZGVJbmZvLmZpcnN0TGluZTsKKyAgICAgICAgICAgIGxpbmVD
b3VudCA9IG92ZXJyaWRlSW5mby5saW5lQ291bnQ7CisgICAgICAgICAgICBzdGFydENvbHVtbiA9
IG92ZXJyaWRlSW5mby5zdGFydENvbHVtbjsKKyAgICAgICAgICAgIGVuZENvbHVtbiA9IG92ZXJy
aWRlSW5mby5lbmRDb2x1bW47CisgICAgICAgICAgICBjb2RlID0gb3ZlcnJpZGVJbmZvLnNvdXJj
ZUNvZGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHJlc3Vs
dCA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUs
IGZpcnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiAgICAgaWYg
KG92ZXJyaWRlTGluZU51bWJlciAhPSAtMSkKICAgICAgICAgcmVzdWx0LT5zZXRPdmVycmlkZUxp
bmVOdW1iZXIob3ZlcnJpZGVMaW5lTnVtYmVyKTsKKworICAgIGlmIChVTkxJS0VMWShoYXNGdW5j
dGlvbk92ZXJyaWRlKSkgeworICAgICAgICByZXN1bHQtPm92ZXJyaWRlUGFyYW1ldGVyQW5kVHlw
ZVByb2ZpbGluZ1N0YXJ0RW5kT2Zmc2V0cygKKyAgICAgICAgICAgIG92ZXJyaWRlSW5mby5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQsCisgICAgICAgICAgICBvdmVycmlkZUluZm8udHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0LAorICAgICAgICAgICAgb3ZlcnJpZGVJbmZvLnR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE4MjgwMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQ3LDYgKzY0NywxMyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJz
U3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnNTdGFydE9mZnNldDsgfQog
CisgICAgdm9pZCBvdmVycmlkZVBhcmFtZXRlckFuZFR5cGVQcm9maWxpbmdTdGFydEVuZE9mZnNl
dHModW5zaWduZWQgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0LCB1bnNpZ25lZCB0eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQsIHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQpCisgICAgeworICAg
ICAgICBtX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydE9mZnNldDsKKyAg
ICAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSB0eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQ7CisgICAgICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHR5cGVQcm9maWxpbmdFbmRP
ZmZzZXQ7CisgICAgfQorCiAgICAgREVDTEFSRV9JTkZPOwogICAgICAgICAKICAgICB2b2lkIHVu
bGlua0NhbGxzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CShyZXZpc2lvbiAxODI4MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsOSBAQCB0eXBlZGVmIGNvbnN0IGNo
YXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUV4ZWN1dGFibGVBbGxvY2F0aW9u
RnV6eiwgZmFsc2UsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBmaXJlRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6QXQsIDAsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBmaXJlRXhlY3V0
YWJsZUFsbG9jYXRpb25GdXp6QXRPckFmdGVyLCAwLCBudWxscHRyKSBcCi0gICAgdihib29sLCB2
ZXJib3NlRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LCBmYWxzZSwgbnVsbHB0cikKKyAgICB2KGJv
b2wsIHZlcmJvc2VFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enosIGZhbHNlLCBudWxscHRyKSBcCisg
ICAgXAorICAgIHYob3B0aW9uU3RyaW5nLCBmdW5jdGlvbk92ZXJyaWRlcywgbnVsbHB0ciwgImZp
bGUgd2l0aCBkZWJ1Z2dpbmcgb3ZlcnJpZGVzIGZvciBmdW5jdGlvbiBib2RpZXMiKSBcCiAKIGNs
YXNzIE9wdGlvbnMgewogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGdW5jdGlvbk92ZXJyaWRlcy5o
IgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
LyoKKyAgVGhlIG92ZXJyaWRlcyBmaWxlIGRlZmluZXMgZnVuY3Rpb24gYm9kaWVzIHRoYXQgd2Ug
d2lsbCB3YW50IHRvIG92ZXJyaWRlIHdpdGgKKyAgYSByZXBsYWNlbWVudCBmb3IgZGVidWdnaW5n
IHB1cnBvc2VzLiBUaGUgb3ZlcnJpZGVzIGZpbGUgbWF5IGNvbnRhaW4KKyAgJ292ZXJyaWRlJyBh
bmQgJ3dpdGgnIGNsYXVzZXMgbGlrZSB0aGVzZToKKworICAgICAvLyBFeGFtcGxlIDE6IGZ1bmN0
aW9uIGZvbzEoYSkKKyAgICAgb3ZlcnJpZGUgIUAjJCV7IHByaW50KCJJbiBmb28xIik7IH0hQCMk
JQorICAgICB3aXRoIGFiY3sKKyAgICAgICAgIHByaW50KCJJIGFtIG92ZXJyaWRkZW4iKTsKKyAg
ICAgfWFiYworCisgICAgIC8vIEV4YW1wbGUgMjogZnVuY3Rpb24gZm9vMihhKQorICAgICBvdmVy
cmlkZSAlJSV7CisgICAgICAgICBwcmludCgiZm9vMidzIGJvZHkgaGFzIGEgc3RyaW5nIHdpdGgg
fSUlIGluIGl0LiIpOworICAgICAgICAgLy8gQmVjYXVzZSB9JSUgYXBwZWFycyBpbiB0aGUgZnVu
Y3Rpb24gYm9keSBoZXJlLCB3ZSBjYW5ub3QgdXNlCisgICAgICAgICAvLyAlJSBvciAlIGFzIHRo
ZSBkZWxpbWl0ZXIuICUlJSBpcyBvayB0aG91Z2guCisgICAgIH0lJSUKKyAgICAgd2l0aCAlJSV7
CisgICAgICAgICBwcmludCgiT3ZlcnJpZGRlbiBmb28yIik7CisgICAgIH0lJSUKKworICAxLiBD
b21tZW50cyBhcmUgbGluZXMgc3RhcnRpbmcgd2l0aCAvLy4gIEFsbCBjb21tZW50cyB3aWxsIGJl
IGlnbm9yZWQuCisKKyAgMi4gQW4gJ292ZXJyaWRlJyBjbGF1c2UgaXMgdXNlZCB0byBzcGVjaWZ5
IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBib2R5IHdlCisgICAgIHdhbnQgdG8gb3ZlcnJpZGUuIFRo
ZSB3aXRoIGNsYXVzZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG92ZXJyaWRpbmcKKyAgICAgZnVu
Y3Rpb24gYm9keS4KKworICAgICBBbiAnb3ZlcnJpZGUnIGNsYXVzZSBtdXN0IGJlIGZvbGxvd2Vk
IGltbWVkaWF0ZWx5IGJ5IGEgJ3dpdGgnIGNsYXVzZS4KKworICAzLiBBbiAnb3ZlcnJpZGUnIGNs
YXVzZSBtdXN0IGJlIG9mIHRoZSBmb3JtOgorICAgICAgICAgb3ZlcnJpZGUgPGRlbGltaXRlcj57
Li4uZnVuY3Rpb24gYm9keS4uLn08ZGVsaW1pdGVyPgorCisgICAgIFRoZSBvdmVycmlkZSBrZXl3
b3JkIG11c3QgYmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLgorCisgICAgIDxkZWxpbWl0ZXI+
IG1heSBiZSBhbnkgc3RyaW5nIG9mIGFueSBBU0NJSSBjaGFyYWN0ZXJzIChleGNlcHQgZm9yICd7
JywKKyAgICAgJ30nLCBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSBhcyBsb25nIGFzIHRoZSBw
YXR0ZXJuIG9mICJ9PGRlbGltaXRlcj4iCisgICAgIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgZnVu
Y3Rpb24gYm9keSBlLmcuIHRoZSBvdmVycmlkZSBjbGF1c2Ugb2YgRXhhbXBsZSAyCisgICAgIGFi
b3ZlIGlsbHVzdHJhdGVzIHRoaXMuCisKKyAgICAgVGhlIHN0YXJ0IGFuZCBlbmQgPGRlbGltaXRl
cj4gbXVzdCBiZSBpZGVudGljYWwuCisKKyAgICAgVGhlIHNwYWNlIGJldHdlZW4gdGhlIG92ZXJy
aWRlIGtleXdvcmQgYW5kIHRoZSBzdGFydCA8ZGVsaW1pdGVyPiBpcworICAgICByZXF1aXJlZC4K
KworICAgICBBbGwgY2hhcmFjdGVycyBiZXR3ZWVuIHRoZSBwYWlyIG9mIGRlbGltaXRlcnMgd2ls
bCBiZSBjb25zaWRlcmVkIHRvCisgICAgIGJlIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIGJvZHkgc3Ry
aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhbHNvIHdvcmsKKyAgICAgd2l0aCBzY3JpcHQgc291cmNl
IHRoYXQgYXJlIG11bHRpLWxpbmVkIGkuZS4gbmV3bGluZXMgYXJlIGFsbG93ZWQuCisgICAgIAor
ICA0LiBBICd3aXRoJyBjbGF1c2UgaXMgaWRlbnRpY2FsIGluIGZvcm0gdG8gYW4gJ292ZXJyaWRl
JyBjbGF1c2UgZXhjZXB0IHRoYXQKKyAgICAgaXQgdXNlcyB0aGUgJ3dpdGgnIGtleXdvcmQgaW5z
dGVhZCBvZiB0aGUgJ292ZXJyaWRlJyBrZXl3b3JkLgorICovCisKK0Z1bmN0aW9uT3ZlcnJpZGVz
JiBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPEZ1bmN0aW9uT3ZlcnJpZGVzPiBvdmVycmlkZXM7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVMaXN0RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplTGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciogb3ZlcnJpZGVzRmlsZU5hbWUg
PSBPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpOworICAgICAgICBvdmVycmlkZXMuY29uc3Ry
dWN0KG92ZXJyaWRlc0ZpbGVOYW1lKTsKKyAgICB9KTsKKyAgICByZXR1cm4gb3ZlcnJpZGVzOwor
fQorICAgIAorRnVuY3Rpb25PdmVycmlkZXM6OkZ1bmN0aW9uT3ZlcnJpZGVzKGNvbnN0IGNoYXIq
IG92ZXJyaWRlc0ZpbGVOYW1lKQoreworICAgIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKG92ZXJyaWRl
c0ZpbGVOYW1lKTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyhjb25z
dCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgU3RyaW5nIG5ld0JvZHksIEZ1bmN0aW9uT3ZlcnJpZGVz
OjpPdmVycmlkZUluZm8mIGluZm8pCit7CisgICAgU3RyaW5nIG9yaWdQcm92aWRlclN0ciA9IG9y
aWdDb2RlLnByb3ZpZGVyKCktPnNvdXJjZSgpOworICAgIHVuc2lnbmVkIG9yaWdCcmFjZVN0YXJ0
ID0gb3JpZ0NvZGUuc3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBvcmlnRnVuY3Rpb25TdGFy
dCA9IG9yaWdQcm92aWRlclN0ci5yZXZlcnNlRmluZCgiZnVuY3Rpb24iLCBvcmlnQnJhY2VTdGFy
dCk7CisgICAgdW5zaWduZWQgaGVhZGVyTGVuZ3RoID0gb3JpZ0JyYWNlU3RhcnQgLSBvcmlnRnVu
Y3Rpb25TdGFydDsKKyAgICBTdHJpbmcgb3JpZ0hlYWRlciA9IG9yaWdQcm92aWRlclN0ci5zdWJz
dHJpbmcob3JpZ0Z1bmN0aW9uU3RhcnQsIGhlYWRlckxlbmd0aCk7CisKKyAgICBTdHJpbmcgbmV3
UHJvdmlkZXJTdHI7CisgICAgbmV3UHJvdmlkZXJTdHIuYXBwZW5kKG9yaWdIZWFkZXIpOworICAg
IG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChuZXdCb2R5KTsKKworICAgIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4gbmV3UHJvdmlkZXIgPSBTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG5ld1Byb3Zp
ZGVyU3RyLCAiPG92ZXJyaWRkZW4+Iik7CisKKyAgICBpbmZvLmZpcnN0TGluZSA9IDE7CisgICAg
aW5mby5saW5lQ291bnQgPSAxOyAvLyBGYWtpbmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0
dGVyIGZvciBub3cuCisgICAgaW5mby5zdGFydENvbHVtbiA9IDE7CisgICAgaW5mby5lbmRDb2x1
bW4gPSAxOyAvLyBGYWtpbmcgaXQuIFRoaXMgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciBub3cu
CisgICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5maW5kKCIo
Iik7CisgICAgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5m
aW5kKCJ7Iik7CisgICAgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gbmV3UHJvdmlkZXJT
dHIubGVuZ3RoKCkgLSAxOworCisgICAgaW5mby5zb3VyY2VDb2RlID0KKyAgICAgICAgU291cmNl
Q29kZShuZXdQcm92aWRlciwgaW5mby50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQsIGluZm8udHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCArIDEsIDEsIDEpOworfQorICAgIAorYm9vbCBGdW5jdGlvbk92
ZXJyaWRlczo6aW5pdGlhbGl6ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2Rl
LCBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZvJiByZXN1bHQpCit7CisgICAgQVNTRVJU
KE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJpZGVzKCkpOworICAgIEZ1bmN0aW9uT3ZlcnJpZGVzJiBv
dmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CisKKyAgICBhdXRvIGl0
ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5maW5kKG9yaWdDb2RlLnRvU3RyaW5nKCkpOworICAgIGlm
IChpdCA9PSBvdmVycmlkZXMubV9lbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKG9yaWdDb2RlLCBpdC0+dmFsdWUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNkZWZpbmUgU1lOVEFYX0VSUk9SICJTWU5UQVgg
RVJST1IiCisjZGVmaW5lIElPX0VSUk9SICJJTyBFUlJPUiIKKyNkZWZpbmUgRkFJTF9XSVRIX0VS
Uk9SKGVycm9yLCBlcnJvck1lc3NhZ2VJbkJyYWNrZXRzKSBcCisgICAgZG8geyBcCisgICAgICAg
IGRhdGFMb2coImZ1bmN0aW9uT3ZlcnJpZGVzICIsIGVycm9yLCAiOiAiKTsgXAorICAgICAgICBk
YXRhTG9nIGVycm9yTWVzc2FnZUluQnJhY2tldHM7IFwKKyAgICAgICAgZXhpdChFWElUX0ZBSUxV
UkUpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK3N0YXRpYyBib29sIGhhc0Rpc2FsbG93ZWRD
aGFyYWN0ZXJzKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICB3aGlsZSAo
bGVuZ3RoLS0pIHsKKyAgICAgICAgY2hhciBjID0gKnN0cisrOworICAgICAgICAvLyAneycgaXMg
YWxzbyBkaXNhbGxvd2VkLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgaXQgYmVjYXVz
ZQorICAgICAgICAvLyBwYXJzZUNsYXVzZSgpIHNlYXJjaGVzIGZvciAneycgYXMgdGhlIGVuZCBv
ZiB0aGUgc3RhcnQgZGVsaW1pdGVyLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgdGhlIHBhcnNl
ZCBkZWxpbWl0ZXIgc3RyaW5nIHdpbGwgbmV2ZXIgaW5jbHVkZSAneycuCisgICAgICAgIGlmIChj
ID09ICd9JyB8fCBpc0FTQ0lJU3BhY2UoYykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgU3RyaW5nIHBhcnNlQ2xhdXNlKGNv
bnN0IGNoYXIqIGtleXdvcmQsIHNpemVfdCBrZXl3b3JkTGVuZ3RoLCBGSUxFKiBmaWxlLCBjb25z
dCBjaGFyKiBsaW5lLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQoreworICAgIGNv
bnN0IGNoYXIqIGtleXdvcmRQb3MgPSBzdHJzdHIobGluZSwga2V5d29yZCk7CisgICAgaWYgKCFr
ZXl3b3JkUG9zKQorICAgICAgICBGQUlMX1dJVEhfRVJST1IoU1lOVEFYX0VSUk9SLCAoIkV4cGVj
dGluZyAnIiwga2V5d29yZCwgIicgY2xhdXNlOlxuIiwgbGluZSwgIlxuIikpOworICAgIGlmIChr
ZXl3b3JkUG9zICE9IGxpbmUpCisgICAgICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1Is
ICgiQ2Fubm90IGhhdmUgYW55IGNoYXJhY3RlcnMgYmVmb3JlICciLCBrZXl3b3JkLCAiJzpcbiIs
IGxpbmUsICJcbiIpKTsKKyAgICBpZiAobGluZVtrZXl3b3JkTGVuZ3RoXSAhPSAnICcpCisgICAg
ICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgiJyIsIGtleXdvcmQsICInIG11c3Qg
YmUgZm9sbG93ZWQgYnkgYSAnICc6XG4iLCBsaW5lLCAiXG4iKSk7CisKKyAgICBjb25zdCBjaGFy
KiBkZWxpbWl0ZXJTdGFydCA9ICZsaW5lW2tleXdvcmRMZW5ndGggKyAxXTsKKyAgICBjb25zdCBj
aGFyKiBkZWxpbWl0ZXJFbmQgPSBzdHJzdHIoZGVsaW1pdGVyU3RhcnQsICJ7Iik7CisgICAgaWYg
KCFkZWxpbWl0ZXJFbmQpCisgICAgICAgIEZBSUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgi
TWlzc2luZyB7IGFmdGVyICciLCBrZXl3b3JkLCAiJyBjbGF1c2Ugc3RhcnQgZGVsaW1pdGVyOlxu
IiwgbGluZSwgIlxuIikpOworICAgIAorICAgIHNpemVfdCBkZWxpbWl0ZXJMZW5ndGggPSBkZWxp
bWl0ZXJFbmQgLSBkZWxpbWl0ZXJTdGFydDsKKyAgICBTdHJpbmcgZGVsaW1pdGVyKGRlbGltaXRl
clN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpOworCisgICAgaWYgKGhhc0Rpc2FsbG93ZWRDaGFyYWN0
ZXJzKGRlbGltaXRlclN0YXJ0LCBkZWxpbWl0ZXJMZW5ndGgpKQorICAgICAgICBGQUlMX1dJVEhf
RVJST1IoU1lOVEFYX0VSUk9SLCAoIkRlbGltaXRlciAnIiwgZGVsaW1pdGVyLCAiJyBjYW5ub3Qg
aGF2ZSAneycsICd9Jywgb3Igd2hpdGVzcGFjZTpcbiIsIGxpbmUsICJcbiIpKTsKKyAgICAKKyAg
ICBTdHJpbmcgdGVybWluYXRvclN0cmluZzsKKyAgICB0ZXJtaW5hdG9yU3RyaW5nLmFwcGVuZCgi
fSIpOworICAgIHRlcm1pbmF0b3JTdHJpbmcuYXBwZW5kKGRlbGltaXRlcik7CisKKyAgICBjb25z
dCBjaGFyKiB0ZXJtaW5hdG9yID0gdGVybWluYXRvclN0cmluZy5hc2NpaSgpLmRhdGEoKTsKKyAg
ICBsaW5lID0gZGVsaW1pdGVyRW5kOyAvLyBTdGFydCBmcm9tIHRoZSB7LgorCisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGRvIHsKKyAgICAgICAgY29uc3QgY2hhciogcCA9IHN0cnN0
cihsaW5lLCB0ZXJtaW5hdG9yKTsKKyAgICAgICAgaWYgKHApIHsKKyAgICAgICAgICAgIGlmIChw
W3N0cmxlbih0ZXJtaW5hdG9yKV0gIT0gJ1xuJykKKyAgICAgICAgICAgICAgICBGQUlMX1dJVEhf
RVJST1IoU1lOVEFYX0VSUk9SLCAoIlVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciAnIiwga2V5
d29yZCwgIicgY2xhdXNlIGVuZCBkZWxpbWl0ZXIgJyIsIGRlbGltaXRlciwgIic6XG4iLCBsaW5l
LCAiXG4iKSk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsIHAgLSBsaW5lICsg
MSk7CisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgICAgICB9Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUpOworCisgICAgfSB3aGlsZSAoKGxpbmUgPSBmZ2V0
cyhidWZmZXIsIGJ1ZmZlclNpemUsIGZpbGUpKSk7CisKKyAgICBGQUlMX1dJVEhfRVJST1IoU1lO
VEFYX0VSUk9SLCAoIiciLCBrZXl3b3JkLCAiJyBjbGF1c2UgZW5kIGRlbGltaXRlciAnIiwgZGVs
aW1pdGVyLCAiJyBub3QgZm91bmQ6XG4iLCBidWlsZGVyLnRvU3RyaW5nKCksICJcbiIsICJBcmUg
eW91IG1pc3NpbmcgYSAnfScgYmVmb3JlIHRoZSBkZWxpbWl0ZXI/XG4iKSk7Cit9CisKK3ZvaWQg
RnVuY3Rpb25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0IGNoYXIqIGZpbGVO
YW1lKQoreworICAgIGlmICghZmlsZU5hbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBG
SUxFKiBmaWxlID0gZm9wZW4oZmlsZU5hbWUsICJyIik7CisgICAgaWYgKCFmaWxlKQorICAgICAg
ICBGQUlMX1dJVEhfRVJST1IoSU9fRVJST1IsICgiRmFpbGVkIHRvIG9wZW4gZmlsZSAiLCBmaWxl
TmFtZSwgIi4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVtZW50IHRvIFdl
YlByb2Nlc3Muc2I/XG4iKSk7CisKKyAgICBjaGFyKiBsaW5lOworICAgIGNoYXIgYnVmZmVyW0JV
RlNJWl07CisgICAgd2hpbGUgKChsaW5lID0gZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
ZmlsZSkpKSB7CisgICAgICAgIGlmIChzdHJzdHIobGluZSwgIi8vIikgPT0gbGluZSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChsaW5lWzBdID09ICdcbicgfHwgbGluZVsw
XSA9PSAnXDAnKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2l6ZV90IGtleXdv
cmRMZW5ndGg7CisgICAgICAgIAorICAgICAgICBrZXl3b3JkTGVuZ3RoID0gc2l6ZW9mKCJvdmVy
cmlkZSIpIC0gMTsKKyAgICAgICAgU3RyaW5nIGtleVN0ciA9IHBhcnNlQ2xhdXNlKCJvdmVycmlk
ZSIsIGtleXdvcmRMZW5ndGgsIGZpbGUsIGxpbmUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwor
CisgICAgICAgIGxpbmUgPSBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmaWxlKTsKKwor
ICAgICAgICBrZXl3b3JkTGVuZ3RoID0gc2l6ZW9mKCJ3aXRoIikgLSAxOworICAgICAgICBTdHJp
bmcgdmFsdWVTdHIgPSBwYXJzZUNsYXVzZSgid2l0aCIsIGtleXdvcmRMZW5ndGgsIGZpbGUsIGxp
bmUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworCisgICAgICAgIG1fZW50cmllcy5hZGQoa2V5
U3RyLCB2YWx1ZVN0cik7CisgICAgfQorICAgIAorICAgIGludCByZXN1bHQgPSBmY2xvc2UoZmls
ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBm
aWxlICVzOiAlc1xuIiwgZmlsZU5hbWUsIHN0cmVycm9yKGVycm5vKSk7Cit9CisgICAgCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBGdW5jdGlvbk92ZXJyaWRlc19oCisjZGVmaW5lIEZ1bmN0aW9uT3ZlcnJpZGVzX2gKKworI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CisKK2NsYXNzIEZ1bmN0aW9uT3ZlcnJp
ZGVzIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgT3ZlcnJpZGVJbmZvIHsKKyAgICAgICAgU291cmNl
Q29kZSBzb3VyY2VDb2RlOworICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmU7CisgICAgICAgIHVu
c2lnbmVkIGxpbmVDb3VudDsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW47CisgICAgICAg
IHVuc2lnbmVkIGVuZENvbHVtbjsKKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0OworICAgICAgICB1bnNpZ25lZCB0eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CisgICAgICAg
IHVuc2lnbmVkIHR5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CisgICAgfTsKKworICAgIHN0YXRpYyBG
dW5jdGlvbk92ZXJyaWRlcyYgb3ZlcnJpZGVzKCk7CisgICAgRnVuY3Rpb25PdmVycmlkZXMoY29u
c3QgY2hhciogZnVuY3Rpb25PdmVycmlkZXNGaWxlTmFtZSk7CisKKyAgICBzdGF0aWMgYm9vbCBp
bml0aWFsaXplT3ZlcnJpZGVGb3IoY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIE92ZXJyaWRl
SW5mbyYgcmVzdWx0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBhcnNlT3ZlcnJpZGVzSW5GaWxl
KGNvbnN0IGNoYXIqIGZpbGVOYW1lKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1f
ZW50cmllczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRnVuY3Rpb25P
dmVycmlkZXNfaAo=
</data>
<flag name="review"
          id="275519"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>