<?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>31071</bug_id>
          
          <creation_ts>2009-11-03 10:47:43 -0800</creation_ts>
          <short_desc>Import WebCore.gyp rules and actions scripts</short_desc>
          <delta_ts>2009-11-03 13:24:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Yaar Schnitman">yaar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160129</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-03 10:47:43 -0800</bug_when>
    <thetext>The WebCore.gyp that builds chromium depends on these files, which are currently pulled from chromium.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160132</commentid>
    <comment_count>1</comment_count>
      <attachid>42398</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-03 10:53:42 -0800</bug_when>
    <thetext>Created attachment 42398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160135</commentid>
    <comment_count>2</comment_count>
      <attachid>42399</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2009-11-03 11:08:56 -0800</bug_when>
    <thetext>Created attachment 42399
Patch 2

Removed tabs that slipped in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160182</commentid>
    <comment_count>3</comment_count>
      <attachid>42399</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-03 13:04:05 -0800</bug_when>
    <thetext>Comment on attachment 42399
Patch 2

Inspiring. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160189</commentid>
    <comment_count>4</comment_count>
      <attachid>42399</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-03 13:24:53 -0800</bug_when>
    <thetext>Comment on attachment 42399
Patch 2

Clearing flags on attachment: 42399

Committed r50480: &lt;http://trac.webkit.org/changeset/50480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160190</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-03 13:24:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42398</attachid>
            <date>2009-11-03 10:53:42 -0800</date>
            <delta_ts>2009-11-03 11:08:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk31071.diff</filename>
            <type>text/plain</type>
            <size>45315</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmE2OTcyNy4uOTA5MmE1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0wMyAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBvcnRlZCBhY3Rpb24gYW5kIHJ1bGVzIHB5dGhvbiBmaWxlcyB0
aGF0IFdlYkNvcmUuZ3lwIGRlcGVuZHMgb24uIAorICAgICAgICBUaGVzZSBmaWxlcyB1c2VkIHRv
IGxpdmUgaW4gY2hyb21pdW0ub3JnIGFuZCBkZWFsIG1vc3RseSB3aXRoIGF1dG8tZ2VuZXJhdGlv
bgorICAgICAgICBvZiBjb2RlIGJ5IHdyYXBwaW5nIGV4aXN0aW5nIHdlYmtpdCBwZXJsIHNjcmlw
dHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
MDcxCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogRml4ZWQgcGF0aHMgaW4g
YWN0aW9ucyBhbmQgcnVsZXMuCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25f
Y3NzcHJvcGVydHluYW1lcy5weTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0
cy9hY3Rpb25fY3NzdmFsdWVrZXl3b3Jkcy5weTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS5n
eXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9rZW5pemVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0cy5weTogQWRkZWQu
CisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2JpbmRpbmcucHk6IEFkZGVkLgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weTogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2dwZXJmLnB5OiBBZGRlZC4KKwogMjAwOS0x
MS0wMiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAppbmRleCBlMjQ0MDQ1Li5kMjFlYWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTI3
Miw3ICsyNzIsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAg
ICAgICAgICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0
L2J1aWxkL2FjdGlvbl9jc3Nwcm9wZXJ0eW5hbWVzLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRz
L2FjdGlvbl9jc3Nwcm9wZXJ0eW5hbWVzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cykn
LAogICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScKQEAgLTI5MSw3
ICsyOTEsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAg
ICAgICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1
aWxkL2FjdGlvbl9jc3N2YWx1ZWtleXdvcmRzLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL2Fj
dGlvbl9jc3N2YWx1ZWtleXdvcmRzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAog
ICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScKQEAgLTMxNCw3ICsz
MTQsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAgICAg
ICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxk
L2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21ha2Vu
YW1lcy5weScsCiAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKICAgICAgICAgICAgICctLScs
CiAgICAgICAgICAgICAnPEAoX2lucHV0cyknLApAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAg
ICAgXSwKICAgICAgICAgICAnYWN0aW9uJzogWwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvYnVpbGQvYWN0aW9uX21ha2VuYW1l
cy5weScsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5JywKICAgICAg
ICAgICAgICc8QChfb3V0cHV0cyknLAogICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8
QChfaW5wdXRzKScsCkBAIC0zNzAsNyArMzcwLDcgQEAKICAgICAgICAgICBdLAogICAgICAgICAg
ICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywKLSAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9hY3Rpb25fdXNlcmFnZW50c3R5bGVzaGVldHMucHkn
LAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX3VzZXJhZ2VudHN0eWxlc2hlZXRzLnB5JywK
ICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAogICAgICAgICAgICAgJy0tJywKICAgICAgICAg
ICAgICc8QChfaW5wdXRzKScKQEAgLTM4OCw3ICszODgsNyBAQAogICAgICAgICAgIF0sCiAgICAg
ICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAgICAgICdweXRob24nLAotICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxkL2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAg
ICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weScsCiAgICAgICAgICAgICAnPEAo
X291dHB1dHMpJywKICAgICAgICAgICAgICctLScsCiAgICAgICAgICAgICAnPEAoX2lucHV0cykn
LApAQCAtNDA4LDcgKzQwOCw3IEBACiAgICAgICAgICAgXSwKICAgICAgICAgICAnYWN0aW9uJzog
WwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvYnVpbGQvYWN0aW9uX21ha2VuYW1lcy5weScsCisgICAgICAgICAgICAnc2NyaXB0
cy9hY3Rpb25fbWFrZW5hbWVzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAogICAg
ICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScsCkBAIC00MjcsNyArNDI3
LDcgQEAKICAgICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAn
cHl0aG9uJywKLSAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9h
Y3Rpb25fbWFrZXRva2VuaXplci5weScsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fbWFr
ZXRva2VuaXplci5weScsCiAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKICAgICAgICAgICAg
ICctLScsCiAgICAgICAgICAgICAnPEAoX2lucHV0cyknCkBAIC00NDUsNyArNDQ1LDcgQEAKICAg
ICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywK
LSAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9ydWxlX2Jpc29u
LnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL3J1bGVfYmlzb24ucHknLAogICAgICAgICAgICAg
JzwoUlVMRV9JTlBVVF9QQVRIKScsCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0JwogICAgICAgICAgIF0sCkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAg
ICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywKLSAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9ydWxlX2dwZXJmLnB5JywK
KyAgICAgICAgICAgICdzY3JpcHRzL3J1bGVfZ3BlcmYucHknLAogICAgICAgICAgICAgJzwoUlVM
RV9JTlBVVF9QQVRIKScsCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikv
d2Via2l0JwogICAgICAgICAgIF0sCkBAIC01MTMsNyArNTEzLDcgQEAKICAgICAgICAgICAjIGJl
aGF2aW9yLCBjaGFuZ2UgdGhlIG91dHB1dCBsb2NhdGlvbi4KICAgICAgICAgICAnYWN0aW9uJzog
WwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvYnVpbGQvcnVsZV9iaW5kaW5nLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL3J1
bGVfYmluZGluZy5weScsCiAgICAgICAgICAgICAnPChSVUxFX0lOUFVUX1BBVEgpJywKICAgICAg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzJywKICAg
ICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvYmluZGluZ3MnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3Nwcm9wZXJ0
eW5hbWVzLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3Nwcm9wZXJ0
eW5hbWVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMzE0ZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Nzc3By
b3BlcnR5bmFtZXMucHkKQEAgLTAsMCArMSwxNjYgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisj
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgYWN0aW9uX2Nzc3Byb3BlcnR5bmFtZXMucHkgaXMgYSBo
YXJuZXNzIHNjcmlwdCB0byBjb25uZWN0IGFjdGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2Vk
IGJ1aWxkcyB0byBtYWtlcHJvcC5wbC4KKyMKKyMgdXNhZ2U6IGFjdGlvbl9tYWtlbmFtZXMucHkg
T1VUUFVUUyAtLSBJTlBVVFMKKyMKKyMgRXhhY3RseSB0d28gb3V0cHV0cyBtdXN0IGJlIHNwZWNp
ZmllZDogYSBwYXRoIHRvIGVhY2ggb2YgQ1NTUHJvcGVydHlOYW1lcy5jcHAKKyMgYW5kIENTU1By
b3BlcnR5TmFtZXMuaC4KKyMKKyMgTXVsdGlwbGUgaW5wdXRzIG1heSBiZSBzcGVjaWZpZWQuIE9u
ZSBpbnB1dCBtdXN0IGhhdmUgYSBiYXNlbmFtZSBvZgorIyBtYWtlcHJvcC5wbDsgdGhpcyBpcyB0
YWtlbiBhcyB0aGUgcGF0aCB0byBtYWtlcHJvcC5wbC4gQWxsIG90aGVyIGlucHV0cyBhcmUKKyMg
cGF0aHMgdG8gLmluIGZpbGVzIHRoYXQgYXJlIHVzZWQgYXMgaW5wdXQgdG8gbWFrZXByb3AucGw7
IGF0IGxlYXN0IG9uZSwKKyMgQ1NTUHJvcGVydHlOYW1lcy5pbiwgaXMgcmVxdWlyZWQuCisKKwor
aW1wb3J0IG9zCitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworCisKK2RlZiBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJncyk6Cisg
ICAgc2VjdGlvbnMgPSBbXQorICAgIHdoaWxlIGxlbihhcmdzKSA+IDA6CisgICAgICAgIGlmIG5v
dCAnLS0nIGluIGFyZ3M6CisgICAgICAgICAgICAjIElmIHRoZXJlIGlzIG5vICctLScgbGVmdCwg
ZXZlcnl0aGluZyByZW1haW5pbmcgaXMgYW4gZW50aXJlIHNlY3Rpb24uCisgICAgICAgICAgICBk
YXNoZXMgPSBsZW4oYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhc2hlcyA9IGFy
Z3MuaW5kZXgoJy0tJykKKworICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJnc1s6ZGFzaGVzXSkK
KworICAgICAgICAjIE5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLCBsb29rIGF0IGV2ZXJ5dGhp
bmcgYWZ0ZXIgdGhpcyAnLS0nLgorICAgICAgICBpZiBkYXNoZXMgKyAxID09IGxlbihhcmdzKToK
KyAgICAgICAgICAgICMgSWYgdGhlICctLScgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgd2Ug
d29uJ3QgY29tZSBiYWNrIHRocm91Z2ggdGhlCisgICAgICAgICAgICAjIGxvb3AgYWdhaW4uIEFk
ZCBhbiBlbXB0eSBzZWN0aW9uIG5vdyBjb3JyZXNwb25kaW5nIHRvIHRoZSBub3RoaW5nbmVzcwor
ICAgICAgICAgICAgIyBmb2xsb3dpbmcgdGhlIGZpbmFsICctLScuCisgICAgICAgICAgICBhcmdz
ID0gW10KKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChhcmdzKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgYXJncyA9IGFyZ3NbZGFzaGVzICsgMTpdCisKKyAgICByZXR1cm4gc2VjdGlv
bnMKKworCitkZWYgbWFpbihhcmdzKToKKyAgICAob3V0cHV0cywgaW5wdXRzKSA9IFNwbGl0QXJn
c0ludG9TZWN0aW9ucyhhcmdzWzE6XSkKKworICAgICMgTWFrZSBhbGwgb3V0cHV0IHBhdGhuYW1l
cyBhYnNvbHV0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGFmdGVyCisgICAgIyBjaGFu
Z2luZyBkaXJlY3RvcnkuCisgICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4ob3V0cHV0cykp
OgorICAgICAgICBvdXRwdXRzW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChvdXRwdXRzW2luZGV4
XSkKKworICAgIG91dHB1dERpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRzWzBdKQorCisgICAg
IyBMb29rIGF0IHRoZSBpbnB1dHMgYW5kIGZpZ3VyZSBvdXQgd2hpY2ggb25lIGlzIG1ha2Vwcm9w
LnBsIGFuZCB3aGljaCBhcmUKKyAgICAjIGlucHV0cyB0byB0aGF0IHNjcmlwdC4KKyAgICBtYWtl
cHJvcElucHV0ID0gTm9uZQorICAgIGluRmlsZXMgPSBbXQorICAgIGZvciBpbnB1dCBpbiBpbnB1
dHM6CisgICAgICAgICMgTWFrZSBpbnB1dCBwYXRobmFtZXMgYWJzb2x1dGUgc28gdGhleSBjYW4g
YmUgYWNjZXNzZWQgYWZ0ZXIgY2hhbmdpbmcKKyAgICAgICAgIyBkaXJlY3RvcnkuIE9uIFdpbmRv
d3MsIGNvbnZlcnQgXCB0byAvIGZvciBpbnB1dHMgdG8gdGhlIHBlcmwgc2NyaXB0IHRvCisgICAg
ICAgICMgd29yayBhcm91bmQgdGhlIGludGVybWl4IG9mIGFjdGl2ZXB5dGhvbiArIGN5Z3dpbiBw
ZXJsLgorICAgICAgICBpbnB1dEFicyA9IG9zLnBhdGguYWJzcGF0aChpbnB1dCkKKyAgICAgICAg
aW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uob3MucGF0aC5zZXAsIHBvc2l4cGF0aC5z
ZXApCisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGlucHV0KQorICAg
ICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlcHJvcC5wbCc6CisgICAgICAgICAgICBhc3Nl
cnQgbWFrZXByb3BJbnB1dCA9PSBOb25lCisgICAgICAgICAgICBtYWtlcHJvcElucHV0ID0gaW5w
dXRBYnMKKyAgICAgICAgZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCcuaW4nKToKKyAgICAg
ICAgICAgIGluRmlsZXMuYXBwZW5kKGlucHV0QWJzUG9zaXgpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKKworICAgIGFzc2VydCBtYWtlcHJvcElucHV0ICE9IE5vbmUK
KyAgICBhc3NlcnQgbGVuKGluRmlsZXMpID49IDEKKworICAgICMgQ2hhbmdlIHRvIHRoZSBvdXRw
dXQgZGlyZWN0b3J5IGJlY2F1c2UgbWFrZXByb3AucGwgcHV0cyBvdXRwdXQgaW4gaXRzCisgICAg
IyB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICBvcy5jaGRpcihvdXRwdXREaXIpCisKKyAgICAjIE1l
cmdlIGFsbCBpbkZpbGVzIGludG8gYSBzaW5nbGUgZmlsZSB3aG9zZSBuYW1lIHdpbGwgYmUgdGhl
IHNhbWUgYXMgdGhlCisgICAgIyBmaXJzdCBsaXN0ZWQgaW5GaWxlLCBidXQgaW4gdGhlIG91dHB1
dCBkaXJlY3RvcnkuCisgICAgbWVyZ2VkUGF0aCA9IG9zLnBhdGguYmFzZW5hbWUoaW5GaWxlc1sw
XSkKKyAgICBtZXJnZWQgPSBvcGVuKG1lcmdlZFBhdGgsICd3YicpICAgICMgJ3diJyB0byBnZXQg
XG4gb25seSBvbiB3aW5kb3dzCisKKyAgICAjIE1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGR1
cGxpY2F0ZSBsaW5lcyBpbiB0aGUgaW4gZmlsZXMuCisgICAgbGluZURpY3QgPSB7fQorICAgIGZv
ciBpbkZpbGVQYXRoIGluIGluRmlsZXM6CisgICAgICAgIGluRmlsZSA9IG9wZW4oaW5GaWxlUGF0
aCkKKyAgICAgICAgZm9yIGxpbmUgaW4gaW5GaWxlOgorICAgICAgICAgICAgbGluZSA9IGxpbmUu
cnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAg
ICAgICAgIGxpbmUgPSAnJworICAgICAgICAgICAgaWYgbGluZSA9PSAnJzoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGluZSBpbiBsaW5lRGljdDoKKyAgICAgICAg
ICAgICAgICByYWlzZSBLZXlFcnJvciwgJ0R1cGxpY2F0ZSB2YWx1ZSAlcycgJSBsaW5lCisgICAg
ICAgICAgICBsaW5lRGljdFtsaW5lXSA9IFRydWUKKyAgICAgICAgICAgIHByaW50ID4+bWVyZ2Vk
LCBsaW5lCisgICAgICAgIGluRmlsZS5jbG9zZSgpCisKKyAgICBtZXJnZWQuY2xvc2UoKQorCisg
ICAgIyBCdWlsZCB1cCB0aGUgY29tbWFuZC4KKyAgICBjb21tYW5kID0gWydwZXJsJywgbWFrZXBy
b3BJbnB1dF0KKworICAgICMgRG8gaXQuIGNoZWNrQ2FsbCBpcyBuZXcgaW4gMi41LCBzbyBzaW11
bGF0ZSBpdHMgYmVoYXZpb3Igd2l0aCBjYWxsIGFuZAorICAgICMgYXNzZXJ0LgorICAgIHJldHVy
bkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKKyAgICBhc3NlcnQgcmV0dXJuQ29kZSA9
PSAwCisKKyAgICAjIERvbid0IGxlYXZlIGJlaGluZCB0aGUgbWVyZ2VkIGZpbGUgb3IgdGhlIC5n
cGVyZiBmaWxlIGNyZWF0ZWQgYnkKKyAgICAjIG1ha2Vwcm9wLgorICAgIChyb290LCBleHQpID0g
b3MucGF0aC5zcGxpdGV4dChtZXJnZWRQYXRoKQorICAgIGdwZXJmUGF0aCA9IHJvb3QgKyAnLmdw
ZXJmJworICAgIG9zLnVubGluayhncGVyZlBhdGgpCisgICAgb3MudW5saW5rKG1lcmdlZFBhdGgp
CisKKyAgICAjIEdvIHRocm91Z2ggdGhlIG91dHB1dHMuIEFueSBvdXRwdXQgdGhhdCBiZWxvbmdz
IGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeQorICAgICMgaXMgbW92ZWQuIERvIGEgY29weSBhbmQg
ZGVsZXRlIGluc3RlYWQgb2YgcmVuYW1lIGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LgorICAgICMg
Tm90ZSB0aGF0IGFsbCBwYXRocyB1c2VkIGluIHRoaXMgc2VjdGlvbiBhcmUgc3RpbGwgYWJzb2x1
dGUuCisgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICB0aGlzT3V0cHV0RGlyID0g
b3MucGF0aC5kaXJuYW1lKG91dHB1dCkKKyAgICAgICAgaWYgdGhpc091dHB1dERpciAhPSBvdXRw
dXREaXI6CisgICAgICAgICAgICBvdXRwdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3V0
cHV0KQorICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKG91dHB1dERpciwgb3V0cHV0QmFz
ZW5hbWUpCisgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGhpc091dHB1dERpciwgb3V0
cHV0QmFzZW5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisgICAg
ICAgICAgICBvcy51bmxpbmsoc3JjKQorCisgICAgcmV0dXJuIHJldHVybkNvZGUKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3N2YWx1ZWtleXdv
cmRzLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3N2YWx1ZWtleXdv
cmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIzM2RjYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Nzc3ZhbHVl
a2V5d29yZHMucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKyMgYWN0aW9uX2Nzc3ZhbHVla2V5d29yZHMucHkgaXMgYSBoYXJu
ZXNzIHNjcmlwdCB0byBjb25uZWN0IGFjdGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2VkIGJ1
aWxkcyB0byBtYWtldmFsdWVzLnBsLgorIworIyB1c2FnZTogYWN0aW9uX2Nzc3ZhbHVla2V5d29y
ZHMucHkgT1VUUFVUUyAtLSBJTlBVVFMKKyMKKyMgRXhhY3RseSB0d28gb3V0cHV0cyBtdXN0IGJl
IHNwZWNpZmllZDogYSBwYXRoIHRvIGVhY2ggb2YgQ1NTVmFsdWVLZXl3b3Jkcy5jCisjIGFuZCBD
U1NWYWx1ZUtleXdvcmRzLmguCisjCisjIE11bHRpcGxlIGlucHV0cyBtYXkgYmUgc3BlY2lmaWVk
LiBPbmUgaW5wdXQgbXVzdCBoYXZlIGEgYmFzZW5hbWUgb2YKKyMgbWFrZXZhbHVlcy5wbDsgdGhp
cyBpcyB0YWtlbiBhcyB0aGUgcGF0aCB0byBtYWtldmFsdWVzLnBsLiBBbGwgb3RoZXIgaW5wdXRz
CisjIGFyZSBwYXRocyB0byAuaW4gZmlsZXMgdGhhdCBhcmUgdXNlZCBhcyBpbnB1dCB0byBtYWtl
dmFsdWVzLnBsOyBhdCBsZWFzdAorIyBvbmUsIENTU1ZhbHVlS2V5d29yZHMuaW4sIGlzIHJlcXVp
cmVkLgorCisKK2ltcG9ydCBvcworaW1wb3J0IHBvc2l4cGF0aAoraW1wb3J0IHNodXRpbAoraW1w
b3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25z
KGFyZ3MpOgorCXNlY3Rpb25zID0gW10KKwl3aGlsZSBsZW4oYXJncykgPiAwOgorCQlpZiBub3Qg
Jy0tJyBpbiBhcmdzOgorCQkJIyBJZiB0aGVyZSBpcyBubyAnLS0nIGxlZnQsIGV2ZXJ5dGhpbmcg
cmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorCQkJZGFzaGVzID0gbGVuKGFyZ3MpCisJ
CWVsc2U6CisJCQlkYXNoZXMgPSBhcmdzLmluZGV4KCctLScpCisKKwkJc2VjdGlvbnMuYXBwZW5k
KGFyZ3NbOmRhc2hlc10pCisKKwkJIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBh
dCBldmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0tJy4KKwkJaWYgZGFzaGVzICsgMSA9PSBsZW4oYXJn
cyk6CisJCQkjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIHdlIHdvbid0
IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorCQkJIyBsb29wIGFnYWluLiBBZGQgYW4gZW1wdHkgc2Vj
dGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGluZ25lc3MKKwkJCSMgZm9sbG93aW5n
IHRoZSBmaW5hbCAnLS0nLgorCQkJYXJncyA9IFtdCisJCQlzZWN0aW9ucy5hcHBlbmQoYXJncykK
KwkJZWxzZToKKwkJCWFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisJcmV0dXJuIHNlY3Rpb25z
CisKKworZGVmIG1haW4oYXJncyk6CisJKG91dHB1dHMsIGlucHV0cykgPSBTcGxpdEFyZ3NJbnRv
U2VjdGlvbnMoYXJnc1sxOl0pCisKKwkjIE1ha2UgYWxsIG91dHB1dCBwYXRobmFtZXMgYWJzb2x1
dGUgc28gdGhhdCB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBhZnRlcgorCSMgY2hhbmdpbmcgZGlyZWN0
b3J5LgorCWZvciBpbmRleCBpbiB4cmFuZ2UoMCwgbGVuKG91dHB1dHMpKToKKwkJb3V0cHV0c1tp
bmRleF0gPSBvcy5wYXRoLmFic3BhdGgob3V0cHV0c1tpbmRleF0pCisKKwlvdXRwdXREaXIgPSBv
cy5wYXRoLmRpcm5hbWUob3V0cHV0c1swXSkKKworCSMgTG9vayBhdCB0aGUgaW5wdXRzIGFuZCBm
aWd1cmUgb3V0IHdoaWNoIG9uZSBpcyBtYWtldmFsdWVzLnBsIGFuZCB3aGljaCBhcmUKKwkjIGlu
cHV0cyB0byB0aGF0IHNjcmlwdC4KKwltYWtldmFsdWVzSW5wdXQgPSBOb25lCisJaW5GaWxlcyA9
IFtdCisJZm9yIGlucHV0IGluIGlucHV0czoKKwkJIyBNYWtlIGlucHV0IHBhdGhuYW1lcyBhYnNv
bHV0ZSBzbyB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBhZnRlciBjaGFuZ2luZworCQkjIGRpcmVjdG9y
eS4gT24gV2luZG93cywgY29udmVydCBcIHRvIC8gZm9yIGlucHV0cyB0byB0aGUgcGVybCBzY3Jp
cHQgdG8KKwkJIyB3b3JrIGFyb3VuZCB0aGUgaW50ZXJtaXggb2YgYWN0aXZlcHl0aG9uICsgY3ln
d2luIHBlcmwuCisJCWlucHV0QWJzID0gb3MucGF0aC5hYnNwYXRoKGlucHV0KQorCQlpbnB1dEFi
c1Bvc2l4ID0gaW5wdXRBYnMucmVwbGFjZShvcy5wYXRoLnNlcCwgcG9zaXhwYXRoLnNlcCkKKwkJ
aW5wdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoaW5wdXQpCisJCWlmIGlucHV0QmFzZW5h
bWUgPT0gJ21ha2V2YWx1ZXMucGwnOgorCQkJYXNzZXJ0IG1ha2V2YWx1ZXNJbnB1dCA9PSBOb25l
CisJCQltYWtldmFsdWVzSW5wdXQgPSBpbnB1dEFicworCQllbGlmIGlucHV0QmFzZW5hbWUuZW5k
c3dpdGgoJy5pbicpOgorCQkJaW5GaWxlcy5hcHBlbmQoaW5wdXRBYnNQb3NpeCkKKwkJZWxzZToK
KwkJCWFzc2VydCBGYWxzZQorCisJYXNzZXJ0IG1ha2V2YWx1ZXNJbnB1dCAhPSBOb25lCisJYXNz
ZXJ0IGxlbihpbkZpbGVzKSA+PSAxCisKKwkjIENoYW5nZSB0byB0aGUgb3V0cHV0IGRpcmVjdG9y
eSBiZWNhdXNlIG1ha2V2YWx1ZXMucGwgcHV0cyBvdXRwdXQgaW4gaXRzCisJIyB3b3JraW5nIGRp
cmVjdG9yeS4KKwlvcy5jaGRpcihvdXRwdXREaXIpCisKKwkjIE1lcmdlIGFsbCBpbkZpbGVzIGlu
dG8gYSBzaW5nbGUgZmlsZSB3aG9zZSBuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlCisJIyBm
aXJzdCBsaXN0ZWQgaW5GaWxlLCBidXQgaW4gdGhlIG91dHB1dCBkaXJlY3RvcnkuCisJbWVyZ2Vk
UGF0aCA9IG9zLnBhdGguYmFzZW5hbWUoaW5GaWxlc1swXSkKKwltZXJnZWQgPSBvcGVuKG1lcmdl
ZFBhdGgsICd3YicpCSMgJ3diJyB0byBnZXQgXG4gb25seSBvbiB3aW5kb3dzCisKKwkjIE1ha2Ug
c3VyZSB0aGVyZSBhcmVuJ3QgYW55IGR1cGxpY2F0ZSBsaW5lcyBpbiB0aGUgaW4gZmlsZXMuIExv
d2VyY2FzZQorCSMgZXZlcnl0aGluZyBiZWNhdXNlIENTUyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5z
aXRpdmUuCisJbGluZURpY3QgPSB7fQorCWZvciBpbkZpbGVQYXRoIGluIGluRmlsZXM6CisJCWlu
RmlsZSA9IG9wZW4oaW5GaWxlUGF0aCkKKwkJZm9yIGxpbmUgaW4gaW5GaWxlOgorCQkJbGluZSA9
IGxpbmUucnN0cmlwKCkKKwkJCWlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorCQkJCWxpbmUgPSAn
JworCQkJaWYgbGluZSA9PSAnJzoKKwkJCQljb250aW51ZQorCQkJbGluZSA9IGxpbmUubG93ZXIo
KQorCQkJaWYgbGluZSBpbiBsaW5lRGljdDoKKwkJCQlyYWlzZSBLZXlFcnJvciwgJ0R1cGxpY2F0
ZSB2YWx1ZSAlcycgJSBsaW5lCisJCQlsaW5lRGljdFtsaW5lXSA9IFRydWUKKwkJCXByaW50ID4+
bWVyZ2VkLCBsaW5lCisJCWluRmlsZS5jbG9zZSgpCisKKwltZXJnZWQuY2xvc2UoKQorCisJIyBC
dWlsZCB1cCB0aGUgY29tbWFuZC4KKwljb21tYW5kID0gWydwZXJsJywgbWFrZXZhbHVlc0lucHV0
XQorCisJIyBEbyBpdC4gY2hlY2tDYWxsIGlzIG5ldyBpbiAyLjUsIHNvIHNpbXVsYXRlIGl0cyBi
ZWhhdmlvciB3aXRoIGNhbGwgYW5kCisJIyBhc3NlcnQuCisJcmV0dXJuQ29kZSA9IHN1YnByb2Nl
c3MuY2FsbChjb21tYW5kKQorCWFzc2VydCByZXR1cm5Db2RlID09IDAKKworCSMgRG9uJ3QgbGVh
dmUgYmVoaW5kIHRoZSBtZXJnZWQgZmlsZSBvciB0aGUgLmdwZXJmIGZpbGUgY3JlYXRlZCBieQor
CSMgbWFrZXZhbHVlcy4KKwkocm9vdCwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQobWVyZ2VkUGF0
aCkKKwlncGVyZlBhdGggPSByb290ICsgJy5ncGVyZicKKwlvcy51bmxpbmsoZ3BlcmZQYXRoKQor
CW9zLnVubGluayhtZXJnZWRQYXRoKQorCisJIyBHbyB0aHJvdWdoIHRoZSBvdXRwdXRzLiBBbnkg
b3V0cHV0IHRoYXQgYmVsb25ncyBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnkKKwkjIGlzIG1vdmVk
LiBEbyBhIGNvcHkgYW5kIGRlbGV0ZSBpbnN0ZWFkIG9mIHJlbmFtZSBmb3IgbWF4aW11bSBwb3J0
YWJpbGl0eS4KKwkjIE5vdGUgdGhhdCBhbGwgcGF0aHMgdXNlZCBpbiB0aGlzIHNlY3Rpb24gYXJl
IHN0aWxsIGFic29sdXRlLgorCWZvciBvdXRwdXQgaW4gb3V0cHV0czoKKwkJdGhpc091dHB1dERp
ciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXQpCisJCWlmIHRoaXNPdXRwdXREaXIgIT0gb3V0cHV0
RGlyOgorCQkJb3V0cHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG91dHB1dCkKKwkJCXNy
YyA9IG9zLnBhdGguam9pbihvdXRwdXREaXIsIG91dHB1dEJhc2VuYW1lKQorCQkJZHN0ID0gb3Mu
cGF0aC5qb2luKHRoaXNPdXRwdXREaXIsIG91dHB1dEJhc2VuYW1lKQorCQkJc2h1dGlsLmNvcHlm
aWxlKHNyYywgZHN0KQorCQkJb3MudW5saW5rKHNyYykKKworCXJldHVybiByZXR1cm5Db2RlCisK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKwlzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVz
LnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWNmNTQzZgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5CkBAIC0w
LDAgKzEsMTc0IEBACisjIS91c3IvYmluL3B5dGhvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisj
CisjIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
CisjIGFjdGlvbl9tYWtlbmFtZXMucHkgaXMgYSBoYXJuZXNzIHNjcmlwdCB0byBjb25uZWN0IGFj
dGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2VkIGJ1aWxkcyB0byBtYWtlX25hbWVzLnBsLgor
IworIyB1c2FnZTogYWN0aW9uX21ha2VuYW1lcy5weSBPVVRQVVRTIC0tIElOUFVUUyBbLS0gT1BU
SU9OU10KKyMKKyMgTXVsdGlwbGUgT1VUUFVUUywgSU5QVVRTLCBhbmQgT1BUSU9OUyBtYXkgYmUg
bGlzdGVkLiBUaGUgc2VjdGlvbnMgYXJlCisjIHNlcGFyYXRlZCBieSAtLSBhcmd1bWVudHMuCisj
CisjIFRoZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgZmlyc3Qgb3V0cHV0IGlzIGNob3NlbiBhcyB0
aGUgZGlyZWN0b3J5IGluIHdoaWNoCisjIG1ha2VfbmFtZXMgd2lsbCBydW4uIElmIHRoZSBkaXJl
Y3RvcnkgbmFtZSBmb3IgYW55IHN1YnNlcXVlbnQgb3V0cHV0IGlzCisjIGRpZmZlcmVudCwgdGhv
c2UgZmlsZXMgd2lsbCBiZSBtb3ZlZCB0byB0aGUgZGVzaXJlZCBkaXJlY3RvcnkuCisjCisjIE11
bHRpcGxlIElOUFVUUyBtYXkgYmUgbGlzdGVkLiBBbiBpbnB1dCB3aXRoIGEgYmFzZW5hbWUgbWF0
Y2hpbmcKKyMgIm1ha2VfbmFtZXMucGwiIGlzIHRha2VuIGFzIHRoZSBwYXRoIHRvIHRoYXQgc2Ny
aXB0LiBJbnB1dHMgd2l0aCBuYW1lcworIyBlbmRpbmcgaW4gVGFnTmFtZXMuaW4gb3IgdGFncy5p
biBhcmUgdGFrZW4gYXMgdGFnIGlucHV0cy4gSW5wdXRzIHdpdGggbmFtZXMKKyMgZW5kaW5nIGlu
IEF0dHJpYnV0ZU5hbWVzLmluIG9yIGF0dHJzLmluIGFyZSB0YWtlbiBhcyBhdHRyaWJ1dGUgaW5w
dXRzLiBUaGVyZQorIyBtYXkgYmUgYXQgbW9zdCBvbmUgdGFnIGlucHV0IGFuZCBvbmUgYXR0cmli
dXRlIGlucHV0LiBBIG1ha2VfbmFtZXMucGwgaW5wdXQKKyMgaXMgcmVxdWlyZWQgYW5kIGF0IGxl
YXN0IG9uZSB0YWcgb3IgYXR0cmlidXRlIGlucHV0IG11c3QgYmUgcHJlc2VudC4KKyMKKyMgT1BU
SU9OUyBpcyBhIGxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBhc3MgdG8gbWFrZV9uYW1l
cy5wbC4gVGhpcworIyBzZWN0aW9uIG5lZWQgbm90IGJlIHByZXNlbnQuCisKKworaW1wb3J0IG9z
CitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1w
b3J0IHN5cworCisKK2RlZiBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJncyk6CisgICAgc2VjdGlv
bnMgPSBbXQorICAgIHdoaWxlIGxlbihhcmdzKSA+IDA6CisgICAgICAgIGlmIG5vdCAnLS0nIGlu
IGFyZ3M6CisgICAgICAgICAgICAjIElmIHRoZXJlIGlzIG5vICctLScgbGVmdCwgZXZlcnl0aGlu
ZyByZW1haW5pbmcgaXMgYW4gZW50aXJlIHNlY3Rpb24uCisgICAgICAgICAgICBkYXNoZXMgPSBs
ZW4oYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhc2hlcyA9IGFyZ3MuaW5kZXgo
Jy0tJykKKworICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJnc1s6ZGFzaGVzXSkKKworICAgICAg
ICAjIE5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLCBsb29rIGF0IGV2ZXJ5dGhpbmcgYWZ0ZXIg
dGhpcyAnLS0nLgorICAgICAgICBpZiBkYXNoZXMgKyAxID09IGxlbihhcmdzKToKKyAgICAgICAg
ICAgICMgSWYgdGhlICctLScgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgd2Ugd29uJ3QgY29t
ZSBiYWNrIHRocm91Z2ggdGhlCisgICAgICAgICAgICAjIGxvb3AgYWdhaW4uIEFkZCBhbiBlbXB0
eSBzZWN0aW9uIG5vdyBjb3JyZXNwb25kaW5nIHRvIHRoZSBub3RoaW5nbmVzcworICAgICAgICAg
ICAgIyBmb2xsb3dpbmcgdGhlIGZpbmFsICctLScuCisgICAgICAgICAgICBhcmdzID0gW10KKyAg
ICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChhcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgYXJncyA9IGFyZ3NbZGFzaGVzICsgMTpdCisKKyAgICByZXR1cm4gc2VjdGlvbnMKKworCitk
ZWYgbWFpbihhcmdzKToKKyAgICBzZWN0aW9ucyA9IFNwbGl0QXJnc0ludG9TZWN0aW9ucyhhcmdz
WzE6XSkKKyAgICBhc3NlcnQgbGVuKHNlY3Rpb25zKSA9PSAyIG9yIGxlbihzZWN0aW9ucykgPT0g
MworICAgIChvdXRwdXRzLCBpbnB1dHMpID0gc2VjdGlvbnNbOjJdCisgICAgaWYgbGVuKHNlY3Rp
b25zKSA9PSAzOgorICAgICAgICBvcHRpb25zID0gc2VjdGlvbnNbMl0KKyAgICBlbHNlOgorICAg
ICAgICBvcHRpb25zID0gW10KKworICAgICMgTWFrZSBhbGwgb3V0cHV0IHBhdGhuYW1lcyBhYnNv
bHV0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGFmdGVyCisgICAgIyBjaGFuZ2luZyBk
aXJlY3RvcnkuCisgICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4ob3V0cHV0cykpOgorICAg
ICAgICBvdXRwdXRzW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChvdXRwdXRzW2luZGV4XSkKKwor
ICAgIG91dHB1dERpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRzWzBdKQorCisgICAgIyBMb29r
IGF0IHRoZSBpbnB1dHMgYW5kIGZpZ3VyZSBvdXQgd2hpY2ggb25lcyBhcmUgbWFrZV9uYW1lcy5w
bCwgdGFncywgYW5kCisgICAgIyBhdHRyaWJ1dGVzLiBUaGVyZSBjYW4gYmUgYXQgbW9zdCBvbmUg
b2YgZWFjaCwgYW5kIHRob3NlIGFyZSB0aGUgb25seQorICAgICMgaW5wdXQgdHlwZXMgc3VwcG9y
dGVkLiBtYWtlX25hbWVzLnBsIGlzIHJlcXVpcmVkIGFuZCBhdCBsZWFzdCBvbmUgb2YgdGFncwor
ICAgICMgYW5kIGF0dHJpYnV0ZXMgaXMgcmVxdWlyZWQuCisgICAgbWFrZU5hbWVzSW5wdXQgPSBO
b25lCisgICAgdGFnSW5wdXQgPSBOb25lCisgICAgYXR0cklucHV0ID0gTm9uZQorICAgIGZvciBp
bnB1dCBpbiBpbnB1dHM6CisgICAgICAgICMgTWFrZSBpbnB1dCBwYXRobmFtZXMgYWJzb2x1dGUg
c28gdGhleSBjYW4gYmUgYWNjZXNzZWQgYWZ0ZXIgY2hhbmdpbmcKKyAgICAgICAgIyBkaXJlY3Rv
cnkuIE9uIFdpbmRvd3MsIGNvbnZlcnQgXCB0byAvIGZvciBpbnB1dHMgdG8gdGhlIHBlcmwgc2Ny
aXB0IHRvCisgICAgICAgICMgd29yayBhcm91bmQgdGhlIGludGVybWl4IG9mIGFjdGl2ZXB5dGhv
biArIGN5Z3dpbiBwZXJsLgorICAgICAgICBpbnB1dEFicyA9IG9zLnBhdGguYWJzcGF0aChpbnB1
dCkKKyAgICAgICAgaW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uob3MucGF0aC5zZXAs
IHBvc2l4cGF0aC5zZXApCisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1l
KGlucHV0KQorICAgICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlX25hbWVzLnBsJzoKKyAg
ICAgICAgICAgIGFzc2VydCBtYWtlTmFtZXNJbnB1dCA9PSBOb25lCisgICAgICAgICAgICBtYWtl
TmFtZXNJbnB1dCA9IGlucHV0QWJzCisgICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0
aCgnVGFnTmFtZXMuaW4nKSBcCisgICAgICAgICAgICAgb3IgaW5wdXRCYXNlbmFtZS5lbmRzd2l0
aCgndGFncy5pbicpOgorICAgICAgICAgICAgYXNzZXJ0IHRhZ0lucHV0ID09IE5vbmUKKyAgICAg
ICAgICAgIHRhZ0lucHV0ID0gaW5wdXRBYnNQb3NpeAorICAgICAgICBlbGlmIGlucHV0QmFzZW5h
bWUuZW5kc3dpdGgoJ0F0dHJpYnV0ZU5hbWVzLmluJykgXAorICAgICAgICAgICAgIG9yIGlucHV0
QmFzZW5hbWUuZW5kc3dpdGgoJ2F0dHJzLmluJyk6CisgICAgICAgICAgICBhc3NlcnQgYXR0cklu
cHV0ID09IE5vbmUKKyAgICAgICAgICAgIGF0dHJJbnB1dCA9IGlucHV0QWJzUG9zaXgKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZQorCisgICAgYXNzZXJ0IG1ha2VOYW1l
c0lucHV0ICE9IE5vbmUKKyAgICBhc3NlcnQgdGFnSW5wdXQgIT0gTm9uZSBvciBhdHRySW5wdXQg
IT0gTm9uZQorCisgICAgIyBzY3JpcHRzUGF0aCBpcyBhIFBlcmwgaW5jbHVkZSBkaXJlY3Rvcnks
IGxvY2F0ZWQgcmVsYXRpdmUgdG8KKyAgICAjIG1ha2VOYW1lc0lucHV0LgorICAgIHNjcmlwdHNQ
YXRoID0gb3MucGF0aC5ub3JtcGF0aCgKKyAgICAgICAgb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShtYWtlTmFtZXNJbnB1dCksIG9zLnBhcmRpciwgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnKSkK
KworICAgICMgQ2hhbmdlIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlY2F1c2UgbWFrZV9uYW1l
cy5wbCBwdXRzIG91dHB1dCBpbiBpdHMKKyAgICAjIHdvcmtpbmcgZGlyZWN0b3J5LgorICAgIG9z
LmNoZGlyKG91dHB1dERpcikKKworICAgICMgQnVpbGQgdXAgdGhlIGNvbW1hbmQuCisgICAgY29t
bWFuZCA9IFsncGVybCcsICctSScsIHNjcmlwdHNQYXRoLCBtYWtlTmFtZXNJbnB1dF0KKyAgICBp
ZiB0YWdJbnB1dCAhPSBOb25lOgorICAgICAgICBjb21tYW5kLmV4dGVuZChbJy0tdGFncycsIHRh
Z0lucHV0XSkKKyAgICBpZiBhdHRySW5wdXQgIT0gTm9uZToKKyAgICAgICAgY29tbWFuZC5leHRl
bmQoWyctLWF0dHJzJywgYXR0cklucHV0XSkKKyAgICBjb21tYW5kLmV4dGVuZChvcHRpb25zKQor
CisgICAgIyBEbyBpdC4gY2hlY2tfY2FsbCBpcyBuZXcgaW4gMi41LCBzbyBzaW11bGF0ZSBpdHMg
YmVoYXZpb3Igd2l0aCBjYWxsIGFuZAorICAgICMgYXNzZXJ0LgorICAgIHJldHVybkNvZGUgPSBz
dWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKKyAgICBhc3NlcnQgcmV0dXJuQ29kZSA9PSAwCisKKyAg
ICAjIEdvIHRocm91Z2ggdGhlIG91dHB1dHMuIEFueSBvdXRwdXQgdGhhdCBiZWxvbmdzIGluIGEg
ZGlmZmVyZW50IGRpcmVjdG9yeQorICAgICMgaXMgbW92ZWQuIERvIGEgY29weSBhbmQgZGVsZXRl
IGluc3RlYWQgb2YgcmVuYW1lIGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LgorICAgICMgTm90ZSB0
aGF0IGFsbCBwYXRocyB1c2VkIGluIHRoaXMgc2VjdGlvbiBhcmUgc3RpbGwgYWJzb2x1dGUuCisg
ICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICB0aGlzT3V0cHV0RGlyID0gb3MucGF0
aC5kaXJuYW1lKG91dHB1dCkKKyAgICAgICAgaWYgdGhpc091dHB1dERpciAhPSBvdXRwdXREaXI6
CisgICAgICAgICAgICBvdXRwdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3V0cHV0KQor
ICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKG91dHB1dERpciwgb3V0cHV0QmFzZW5hbWUp
CisgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGhpc091dHB1dERpciwgb3V0cHV0QmFz
ZW5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisgICAgICAgICAg
ICBvcy51bmxpbmsoc3JjKQorCisgICAgcmV0dXJuIHJldHVybkNvZGUKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9rZW5pemVyLnB5IGIv
V2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9rZW5pemVyLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0YTI4ZWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2V0b2tlbml6ZXIucHkKQEAg
LTAsMCArMSwxMDEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisKKyMgdXNhZ2U6IGFjdGlvbl9tYWtldG9rZW5pemVyLnB5IE9VVFBVVFMgLS0gSU5QVVRTCisj
CisjIE11bHRpcGxlIElOUFVUUyBtYXkgYmUgbGlzdGVkLiBUaGUgc2VjdGlvbnMgYXJlIHNlcGFy
YXRlZCBieSAtLSBhcmd1bWVudHMuCisjCisjIE9VVFBVVFMgbXVzdCBjb250YWluIGEgc2luZ2xl
IGl0ZW06IGEgcGF0aCB0byB0b2tlbml6ZXIuY3BwLgorIworIyBJTlBVVFMgbXVzdCBjb250YWlu
IGV4YWN0bHkgdHdvIGl0ZW1zLiBUaGUgZmlyc3QgaXRlbSBtdXN0IGJlIHRoZSBwYXRoIHRvCisj
IG1ha2V0b2tlbml6ZXIuIFRoZSBzZWNvbmQgaXRlbSBtdXN0IGJlIHRoZSBwYXRoIHRvIHRva2Vu
aXplci5mbGV4LgorCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMK
KworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25zKGFyZ3MpOgorICAgIHNlY3Rpb25zID0gW10K
KyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAgICAgICBpZiBub3QgJy0tJyBpbiBhcmdzOgor
ICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAnLS0nIGxlZnQsIGV2ZXJ5dGhpbmcgcmVtYWlu
aW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAgICAgICAgICAgZGFzaGVzID0gbGVuKGFyZ3Mp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXNoZXMgPSBhcmdzLmluZGV4KCctLScpCisK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3NbOmRhc2hlc10pCisKKyAgICAgICAgIyBOZXh0
IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBhdCBldmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0t
Jy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBsZW4oYXJncyk6CisgICAgICAgICAgICAjIElm
IHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIHdlIHdvbid0IGNvbWUgYmFjayB0
aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29wIGFnYWluLiBBZGQgYW4gZW1wdHkgc2VjdGlv
biBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGluZ25lc3MKKyAgICAgICAgICAgICMgZm9s
bG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3Mg
PSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0dXJuIHNlY3Rpb25zCisKKworZGVmIG1haW4o
YXJncyk6CisgICAgc2VjdGlvbnMgPSBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJnc1sxOl0pCisg
ICAgYXNzZXJ0IGxlbihzZWN0aW9ucykgPT0gMgorICAgIChvdXRwdXRzLCBpbnB1dHMpID0gc2Vj
dGlvbnMKKworICAgIGFzc2VydCBsZW4ob3V0cHV0cykgPT0gMQorICAgIG91dHB1dCA9IG91dHB1
dHNbMF0KKworICAgIGFzc2VydCBsZW4oaW5wdXRzKSA9PSAyCisgICAgbWFrZXRva2VuaXplciA9
IGlucHV0c1swXQorICAgIGZsZXhJbnB1dCA9IGlucHV0c1sxXQorCisgICAgIyBEbyBpdC4gY2hl
Y2tfY2FsbCBpcyBuZXcgaW4gMi41LCBzbyBzaW11bGF0ZSBpdHMgYmVoYXZpb3Igd2l0aCBjYWxs
IGFuZAorICAgICMgYXNzZXJ0LgorICAgIG91dGZpbGUgPSBvcGVuKG91dHB1dCwgJ3diJykKKyAg
ICBwMSA9IHN1YnByb2Nlc3MuUG9wZW4oWydmbGV4JywgJy10JywgZmxleElucHV0XSwgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSkKKyAgICBwMiA9IHN1YnByb2Nlc3MuUG9wZW4oWydwZXJsJywgbWFr
ZXRva2VuaXplcl0sIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PW91dGZpbGUpCisKKyAgICByMSA9
IHAxLndhaXQoKQorICAgIHIyID0gcDIud2FpdCgpCisgICAgYXNzZXJ0IHIxID09IDAKKyAgICBh
c3NlcnQgcjIgPT0gMAorCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0cy5weSBiL1dlYkNv
cmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fdXNlcmFnZW50c3R5bGVzaGVldHMucHkKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmYwMTdmYwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fdXNlcmFnZW50c3R5bGVzaGVl
dHMucHkKQEAgLTAsMCArMSwxMDIgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisKKyMgdXNhZ2U6IGFjdGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0cy5weSBPVVRQ
VVRTIC0tIElOUFVUUworIworIyBNdWx0aXBsZSBPVVRQVVRTIGFuZCBJTlBVVFMgbWF5IGJlIGxp
c3RlZC4gVGhlIHNlY3Rpb25zIGFyZSBzZXBhcmF0ZWQgYnkKKyMgLS0gYXJndW1lbnRzLgorIwor
IyBPVVRQVVRTIG11c3QgY29udGFpbiB0d28gaXRlbXMsIGluIG9yZGVyOiBhIHBhdGggdG8gVXNl
ckFnZW50U3R5bGVTaGVldHMuaAorIyBhbmQgYSBwYXRoIHRvIFVzZXJBZ2VudFN0eWxlU2hlZXRz
RGF0YS5jcHAuCisjCisjIElOUFVUUyBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgdHdvIGl0ZW1zLiBU
aGUgZmlyc3QgaXRlbSBtdXN0IGJlIHRoZSBwYXRoIHRvCisjIG1ha2UtY3NzLWZpbGUtYXJyYXlz
LnBsLiBUaGUgcmVtYWluaW5nIGl0ZW1zIGFyZSBwYXRocyB0byBzdHlsZSBzaGVldHMgdG8KKyMg
YmUgZmVkIHRvIHRoYXQgc2NyaXB0LgorCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MK
K2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25zKGFyZ3MpOgorICAgIHNl
Y3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAgICAgICBpZiBub3QgJy0t
JyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAnLS0nIGxlZnQsIGV2ZXJ5
dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAgICAgICAgICAgZGFzaGVz
ID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXNoZXMgPSBhcmdzLmlu
ZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3NbOmRhc2hlc10pCisKKyAg
ICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBhdCBldmVyeXRoaW5nIGFm
dGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBsZW4oYXJncyk6CisgICAg
ICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIHdlIHdvbid0
IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29wIGFnYWluLiBBZGQgYW4g
ZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGluZ25lc3MKKyAgICAg
ICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAgICAgICAgYXJncyA9IFtd
CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0dXJuIHNlY3Rpb25zCisK
KworZGVmIG1haW4oYXJncyk6CisgICAgc2VjdGlvbnMgPSBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMo
YXJnc1sxOl0pCisgICAgYXNzZXJ0IGxlbihzZWN0aW9ucykgPT0gMgorICAgIChvdXRwdXRzLCBp
bnB1dHMpID0gc2VjdGlvbnMKKworICAgIGFzc2VydCBsZW4ob3V0cHV0cykgPT0gMgorICAgIG91
dHB1dEggPSBvdXRwdXRzWzBdCisgICAgb3V0cHV0Q3BwID0gb3V0cHV0c1sxXQorCisgICAgbWFr
ZUNzc0ZpbGVBcnJheXMgPSBpbnB1dHNbMF0KKyAgICBzdHlsZVNoZWV0cyA9IGlucHV0c1sxOl0K
KworICAgICMgQnVpbGQgdXAgdGhlIGNvbW1hbmQuCisgICAgY29tbWFuZCA9IFsncGVybCcsIG1h
a2VDc3NGaWxlQXJyYXlzLCBvdXRwdXRILCBvdXRwdXRDcHBdCisgICAgY29tbWFuZC5leHRlbmQo
c3R5bGVTaGVldHMpCisKKyAgICAjIERvIGl0LiBjaGVja19jYWxsIGlzIG5ldyBpbiAyLjUsIHNv
IHNpbXVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIGNhbGwgYW5kCisgICAgIyBhc3NlcnQuCisgICAg
cmV0dXJuQ29kZSA9IHN1YnByb2Nlc3MuY2FsbChjb21tYW5kKQorICAgIGFzc2VydCByZXR1cm5D
b2RlID09IDAKKworICAgIHJldHVybiByZXR1cm5Db2RlCisKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2JpbmRpbmcucHkgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwL3NjcmlwdHMvcnVsZV9iaW5kaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAuLjI0ZDE3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Nj
cmlwdHMvcnVsZV9iaW5kaW5nLnB5CkBAIC0wLDAgKzEsMTM1IEBACisjIS91c3IvYmluL3B5dGhv
bgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hy
b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjIHVzYWdlOiBydWxlX2JpbmRpbmcucHkgSU5Q
VVQgQ1BQRElSIEhESVIgLS0gSU5QVVRTIC0tIE9QVElPTlMKKyMKKyMgSU5QVVQgaXMgYW4gSURM
IGZpbGUsIHN1Y2ggYXMgV2hhdGV2ZXIuaWRsLgorIworIyBDUFBESVIgaXMgdGhlIGRpcmVjdG9y
eSBpbnRvIHdoaWNoIFY4V2hhdGV2ZXIuY3BwIHdpbGwgYmUgcGxhY2VkLiBIRElSIGlzCisjIHRo
ZSBkaXJlY3RvcnkgaW50byB3aGljaCBWOFdoYXRldmVyLmggd2lsbCBiZSBwbGFjZWQuCisjCisj
IFRoZSBmaXJzdCBpdGVtIGluIElOUFVUUyBpcyB0aGUgcGF0aCB0byBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gUmVtYWluaW5nCisjIGl0ZW1zIGluIElOUFVUUyBhcmUgdXNlZCB0byBidWlsZCB0aGUg
UGVybCBtb2R1bGUgaW5jbHVkZSBwYXRoLgorIworIyBPUFRJT05TIGFyZSBwYXNzZWQgYXMtaXMg
dG8gZ2VuZXJhdGUtYmluZGluZ3MucGwgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuCisKKworaW1w
b3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCBzaGxleAoraW1wb3J0IHNodXRpbAoraW1wb3J0
IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25zKGFy
Z3MpOgorICAgIHNlY3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAgICAg
ICBpZiBub3QgJy0tJyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAnLS0n
IGxlZnQsIGV2ZXJ5dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAgICAg
ICAgICAgZGFzaGVzID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXNo
ZXMgPSBhcmdzLmluZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3NbOmRh
c2hlc10pCisKKyAgICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBhdCBl
dmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBsZW4o
YXJncyk6CisgICAgICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxp
c3QsIHdlIHdvbid0IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29wIGFn
YWluLiBBZGQgYW4gZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGlu
Z25lc3MKKyAgICAgICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAgICAg
ICAgYXJncyA9IFtdCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0dXJu
IHNlY3Rpb25zCisKKworZGVmIG1haW4oYXJncyk6CisgICAgc2VjdGlvbnMgPSBTcGxpdEFyZ3NJ
bnRvU2VjdGlvbnMoYXJnc1sxOl0pCisgICAgYXNzZXJ0IGxlbihzZWN0aW9ucykgPT0gMywgc2Vj
dGlvbnMKKyAgICAoYmFzZSwgaW5wdXRzLCBvcHRpb25zKSA9IHNlY3Rpb25zCisKKyAgICBhc3Nl
cnQgbGVuKGJhc2UpID09IDMsIGJhc2UKKyAgICAoaW5wdXQsIGNwcGRpciwgaGRpcikgPSBiYXNl
CisKKyAgICBhc3NlcnQgbGVuKGlucHV0cykgPiAxLCBpbnB1dHMKKyAgICBnZW5lcmF0ZUJpbmRp
bmdzID0gaW5wdXRzWzBdCisgICAgcGVybE1vZHVsZXMgPSBpbnB1dHNbMTpdCisKKyAgICBpbmNs
dWRlRGlycyA9IFtdCisgICAgZm9yIHBlcmxNb2R1bGUgaW4gcGVybE1vZHVsZXM6CisgICAgICAg
IGluY2x1ZGVEaXIgPSBvcy5wYXRoLmRpcm5hbWUocGVybE1vZHVsZSkKKyAgICAgICAgaWYgbm90
IGluY2x1ZGVEaXIgaW4gaW5jbHVkZURpcnM6CisgICAgICAgICAgICBpbmNsdWRlRGlycy5hcHBl
bmQoaW5jbHVkZURpcikKKworICAgICMgVGhlIGRlZmluZXMgY29tZSBpbiBhcyBvbmUgZmxhdCBz
dHJpbmcuIFNwbGl0IGl0IHVwIGludG8gZGlzdGluY3QgYXJndW1lbnRzLgorICAgIGlmICctLWRl
ZmluZXMnIGluIG9wdGlvbnM6CisgICAgICAgIGRlZmluZXNJbmRleCA9IG9wdGlvbnMuaW5kZXgo
Jy0tZGVmaW5lcycpCisgICAgICAgIGlmIGRlZmluZXNJbmRleCArIDEgPCBsZW4ob3B0aW9ucyk6
CisgICAgICAgICAgICBzcGxpdE9wdGlvbnMgPSBzaGxleC5zcGxpdChvcHRpb25zW2RlZmluZXNJ
bmRleCArIDFdKQorICAgICAgICAgICAgaWYgc3BsaXRPcHRpb25zOgorICAgICAgICAgICAgICAg
IG9wdGlvbnNbZGVmaW5lc0luZGV4ICsgMV0gPSAnICcuam9pbihzcGxpdE9wdGlvbnMpCisKKyAg
ICAjIEJ1aWxkIHVwIHRoZSBjb21tYW5kLgorICAgIGNvbW1hbmQgPSBbJ3BlcmwnLCAnLXcnXQor
ICAgIGZvciBpbmNsdWRlRGlyIGluIGluY2x1ZGVEaXJzOgorICAgICAgICBjb21tYW5kLmV4dGVu
ZChbJy1JJywgaW5jbHVkZURpcl0pCisgICAgY29tbWFuZC5hcHBlbmQoZ2VuZXJhdGVCaW5kaW5n
cykKKyAgICBjb21tYW5kLmV4dGVuZChvcHRpb25zKQorICAgIGNvbW1hbmQuZXh0ZW5kKFsnLS1v
dXRwdXREaXInLCBjcHBkaXIsIGlucHV0XSkKKworICAgICMgRG8gaXQuIGNoZWNrX2NhbGwgaXMg
bmV3IGluIDIuNSwgc28gc2ltdWxhdGUgaXRzIGJlaGF2aW9yIHdpdGggY2FsbCBhbmQKKyAgICAj
IGFzc2VydC4KKyAgICByZXR1cm5Db2RlID0gc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQpCisgICAg
YXNzZXJ0IHJldHVybkNvZGUgPT0gMAorCisgICAgIyBCb3RoIHRoZSAuY3BwIGFuZCAuaCB3ZXJl
IGdlbmVyYXRlZCBpbiBjcHBkaXIsIGJ1dCBpZiBoZGlyIGlzIGRpZmZlcmVudCwKKyAgICAjIHRo
ZSAuaCBuZWVkcyB0byBtb3ZlLiBDb3B5IGl0IGluc3RlYWQgb2YgdXNpbmcgb3MucmVuYW1lIGZv
ciBtYXhpbXVtCisgICAgIyBwb3J0YWJpbGl0eSBpbiBhbGwgY2FzZXMuCisgICAgaWYgY3BwZGly
ICE9IGhkaXI6CisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGlucHV0
KQorICAgICAgICAocm9vdCwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRCYXNlbmFtZSkK
KyAgICAgICAgaG5hbWUgPSAnVjglcy5oJyAlIHJvb3QKKyAgICAgICAgaHNyYyA9IG9zLnBhdGgu
am9pbihjcHBkaXIsIGhuYW1lKQorICAgICAgICBoZHN0ID0gb3MucGF0aC5qb2luKGhkaXIsIGhu
YW1lKQorICAgICAgICBzaHV0aWwuY29weWZpbGUoaHNyYywgaGRzdCkKKyAgICAgICAgb3MudW5s
aW5rKGhzcmMpCisKKyAgICByZXR1cm4gcmV0dXJuQ29kZQorCisKK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXAvc2NyaXB0cy9ydWxlX2Jpc29uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLmViODVhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvcnVsZV9iaXNvbi5weQpAQCAtMCwwICsxLDEwMiBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMK
KyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyB1c2FnZTogcnVsZV9iaXNvbi5weSBJTlBVVF9GSUxF
IE9VVFBVVF9ESVIKKyMgSU5QVVRfRklMRSBpcyBhIHBhdGggdG8gZWl0aGVyIENTU0dyYW1tYXIu
eSBvciBYUGF0aEdyYW1tYXIueS4KKyMgT1VUUFVUX0RJUiBpcyB3aGVyZSB0aGUgYmlzb24tZ2Vu
ZXJhdGVkIC5jcHAgYW5kIC5oIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQuCisKK2ltcG9ydCBlcnJu
bworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBz
eXMKKworYXNzZXJ0IGxlbihzeXMuYXJndikgPT0gMworCitpbnB1dEZpbGUgPSBzeXMuYXJndlsx
XQorb3V0cHV0RGlyID0gc3lzLmFyZ3ZbMl0KKworaW5wdXROYW1lID0gb3MucGF0aC5iYXNlbmFt
ZShpbnB1dEZpbGUpCithc3NlcnQgaW5wdXROYW1lID09ICdDU1NHcmFtbWFyLnknIG9yIGlucHV0
TmFtZSA9PSAnWFBhdGhHcmFtbWFyLnknCitwcmVmaXggPSB7J0NTU0dyYW1tYXIueSc6ICdjc3N5
eScsICdYUGF0aEdyYW1tYXIueSc6ICd4cGF0aHl5J31baW5wdXROYW1lXQorCisoaW5wdXRSb290
LCBpbnB1dEV4dCkgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0TmFtZSkKKworIyBUaGUgZ2VuZXJh
dGVkIC5oIHdpbGwgYmUgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24gZGVwZW5kaW5nIG9uIHRoZSBi
aXNvbgorIyB2ZXJzaW9uLgorb3V0cHV0SFRyaWVzID0gWworICAgIG9zLnBhdGguam9pbihvdXRw
dXREaXIsIGlucHV0Um9vdCArICcuY3BwLmgnKSwKKyAgICBvcy5wYXRoLmpvaW4ob3V0cHV0RGly
LCBpbnB1dFJvb3QgKyAnLmhwcCcpLAorXQorCitmb3Igb3V0cHV0SFRyeSBpbiBvdXRwdXRIVHJp
ZXM6CisgICAgdHJ5OgorICAgICAgICBvcy51bmxpbmsob3V0cHV0SFRyeSkKKyAgICBleGNlcHQg
T1NFcnJvciwgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAg
ICAgICByYWlzZQorCitvdXRwdXRDcHAgPSBvcy5wYXRoLmpvaW4ob3V0cHV0RGlyLCBpbnB1dFJv
b3QgKyAnLmNwcCcpCisKK3JldHVybkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoWydiaXNvbicsICct
ZCcsICctcCcsIHByZWZpeCwgaW5wdXRGaWxlLCAnLW8nLCBvdXRwdXRDcHBdKQorYXNzZXJ0IHJl
dHVybkNvZGUgPT0gMAorCisjIEZpbmQgdGhlIG5hbWUgdGhhdCBiaXNvbiB1c2VkIGZvciB0aGUg
Z2VuZXJhdGVkIGhlYWRlciBmaWxlLgorb3V0cHV0SFRtcCA9IE5vbmUKK2ZvciBvdXRwdXRIVHJ5
IGluIG91dHB1dEhUcmllczoKKyAgICB0cnk6CisgICAgICAgIG9zLnN0YXQob3V0cHV0SFRyeSkK
KyAgICAgICAgb3V0cHV0SFRtcCA9IG91dHB1dEhUcnkKKyAgICAgICAgYnJlYWsKKyAgICBleGNl
cHQgT1NFcnJvciwgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAg
ICAgICAgICByYWlzZQorCithc3NlcnQgb3V0cHV0SFRtcCAhPSBOb25lCisKKyMgUmVhZCB0aGUg
aGVhZGVyIGZpbGUgaW4gdW5kZXIgdGhlIGdlbmVyYXRlZCBuYW1lIGFuZCByZW1vdmUgaXQuCitv
dXRwdXRIRmlsZSA9IG9wZW4ob3V0cHV0SFRtcCkKK291dHB1dEhDb250ZW50cyA9IG91dHB1dEhG
aWxlLnJlYWQoKQorb3V0cHV0SEZpbGUuY2xvc2UoKQorb3MudW5saW5rKG91dHB1dEhUbXApCisK
KyMgUmV3cml0ZSB0aGUgZ2VuZXJhdGVkIGhlYWRlciB3aXRoICNpbmNsdWRlIGd1YXJkcy4KK291
dHB1dEggPSBvcy5wYXRoLmpvaW4ob3V0cHV0RGlyLCBpbnB1dFJvb3QgKyAnLmgnKQorCitvdXRw
dXRIRmlsZSA9IG9wZW4ob3V0cHV0SCwgJ3cnKQorcHJpbnQgPj5vdXRwdXRIRmlsZSwgJyNpZm5k
ZWYgJXNIJyAlIGlucHV0Um9vdAorcHJpbnQgPj5vdXRwdXRIRmlsZSwgJyNkZWZpbmUgJXNIJyAl
IGlucHV0Um9vdAorcHJpbnQgPj5vdXRwdXRIRmlsZSwgb3V0cHV0SENvbnRlbnRzCitwcmludCA+
Pm91dHB1dEhGaWxlLCAnI2VuZGlmJworb3V0cHV0SEZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL3J1bGVfZ3BlcmYucHkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwL3NjcmlwdHMvcnVsZV9ncGVyZi5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi5lNzZlZDZmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9z
Y3JpcHRzL3J1bGVfZ3BlcmYucHkKQEAgLTAsMCArMSw4NSBAQAorIyEvdXNyL2Jpbi9weXRob24K
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyB1c2FnZTogcnVsZV9ncGVyZi5weSBJTlBVVF9G
SUxFIE9VVFBVVF9ESVIKKyMgSU5QVVRfRklMRSBpcyBhIHBhdGggdG8gRG9jVHlwZVN0cmluZ3Mu
Z3BlcmYsIEhUTUxFbnRpdHlOYW1lcy5ncGVyZiwgb3IKKyMgQ29sb3JEYXRhLmdwZXJmLgorIyBP
VVRQVVRfRElSIGlzIHdoZXJlIHRoZSBncGVyZi1nZW5lcmF0ZWQgLmNwcCBmaWxlIHNob3VsZCBi
ZSBwbGFjZWQuIEJlY2F1c2UKKyMgc29tZSB1c2VycyB3YW50IGEgLmMgZmlsZSBpbnN0ZWFkIG9m
IGEgLmNwcCBmaWxlLCB0aGUgLmNwcCBmaWxlIGlzIGNvcGllZAorIyB0byAuYyB3aGVuIGRvbmUu
CisKK2ltcG9ydCBwb3NpeHBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitp
bXBvcnQgc3lzCisKK2Fzc2VydCBsZW4oc3lzLmFyZ3YpID09IDMKKworaW5wdXRGaWxlID0gc3lz
LmFyZ3ZbMV0KK291dHB1dERpciA9IHN5cy5hcmd2WzJdCisKK2dwZXJmQ29tbWFuZHMgPSB7Cisg
ICAgJ0RvY1R5cGVTdHJpbmdzLmdwZXJmJzogWworICAgICAgICAnLUNFb3QnLCAnLUwnLCAnQU5T
SS1DJywgJy1rKicsICctTicsICdmaW5kRG9jdHlwZUVudHJ5JywKKyAgICAgICAgJy1GJywgJyxQ
dWJJREluZm86OmVBbG1vc3RTdGFuZGFyZHMsUHViSURJbmZvOjplQWxtb3N0U3RhbmRhcmRzJwor
ICAgIF0sCisgICAgJ0hUTUxFbnRpdHlOYW1lcy5ncGVyZic6IFsKKyAgICAgICAgJy1hJywgJy1M
JywgJ0FOU0ktQycsICctQycsICctRycsICctYycsICctbycsICctdCcsICctayonLAorICAgICAg
ICAnLU4nLCAnZmluZEVudGl0eScsICctRCcsICctcycsICcyJworICAgIF0sCisgICAgJ0NvbG9y
RGF0YS5ncGVyZic6IFsKKyAgICAgICAgJy1DREVvdCcsICctTCcsICdBTlNJLUMnLCAnLWsqJywg
Jy1OJywgJ2ZpbmRDb2xvcicsICctRCcsICctcycsICcyJworICAgIF0sCit9CisKK2lucHV0TmFt
ZSA9IHBvc2l4cGF0aC5iYXNlbmFtZShpbnB1dEZpbGUpCithc3NlcnQgaW5wdXROYW1lIGluIGdw
ZXJmQ29tbWFuZHMKKworKGlucHV0Um9vdCwgaW5wdXRFeHQpID0gcG9zaXhwYXRoLnNwbGl0ZXh0
KGlucHV0TmFtZSkKK291dHB1dENwcCA9IHBvc2l4cGF0aC5qb2luKG91dHB1dERpciwgaW5wdXRS
b290ICsgJy5jcHAnKQorCisjY29tbWFuZCA9IFsnZ3BlcmYnLCAnLS1vdXRwdXQtZmlsZScsIG91
dHB1dENwcF0KK2NvbW1hbmQgPSBbJ2dwZXJmJ10KK2NvbW1hbmQuZXh0ZW5kKGdwZXJmQ29tbWFu
ZHNbaW5wdXROYW1lXSkKK2NvbW1hbmQuYXBwZW5kKGlucHV0RmlsZSkKKworb2ZpbGUgPSBvcGVu
KG91dHB1dENwcCwgJ3cnKQorCisjIERvIGl0LiBjaGVja19jYWxsIGlzIG5ldyBpbiAyLjUsIHNv
IHNpbXVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIGNhbGwgYW5kCisjIGFzc2VydC4KK3JldHVybkNv
ZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCwgc3Rkb3V0PW9maWxlLmZpbGVubygpKQorYXNz
ZXJ0IHJldHVybkNvZGUgPT0gMAorCitvdXRwdXRDID0gcG9zaXhwYXRoLmpvaW4ob3V0cHV0RGly
LCBpbnB1dFJvb3QgKyAnLmMnKQorc2h1dGlsLmNvcHlmaWxlKG91dHB1dENwcCwgb3V0cHV0QykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42399</attachid>
            <date>2009-11-03 11:08:56 -0800</date>
            <delta_ts>2009-11-03 13:24:53 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>wk31071b.diff</filename>
            <type>text/plain</type>
            <size>45840</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmE2OTcyNy4uOTA5MmE1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0wMyAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBvcnRlZCBhY3Rpb24gYW5kIHJ1bGVzIHB5dGhvbiBmaWxlcyB0
aGF0IFdlYkNvcmUuZ3lwIGRlcGVuZHMgb24uIAorICAgICAgICBUaGVzZSBmaWxlcyB1c2VkIHRv
IGxpdmUgaW4gY2hyb21pdW0ub3JnIGFuZCBkZWFsIG1vc3RseSB3aXRoIGF1dG8tZ2VuZXJhdGlv
bgorICAgICAgICBvZiBjb2RlIGJ5IHdyYXBwaW5nIGV4aXN0aW5nIHdlYmtpdCBwZXJsIHNjcmlw
dHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
MDcxCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogRml4ZWQgcGF0aHMgaW4g
YWN0aW9ucyBhbmQgcnVsZXMuCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25f
Y3NzcHJvcGVydHluYW1lcy5weTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0
cy9hY3Rpb25fY3NzdmFsdWVrZXl3b3Jkcy5weTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS5n
eXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9rZW5pemVyLnB5OiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0cy5weTogQWRkZWQu
CisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2JpbmRpbmcucHk6IEFkZGVkLgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weTogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2dwZXJmLnB5OiBBZGRlZC4KKwogMjAwOS0x
MS0wMiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAppbmRleCBlMjQ0MDQ1Li5kMjFlYWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTI3
Miw3ICsyNzIsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAg
ICAgICAgICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0
L2J1aWxkL2FjdGlvbl9jc3Nwcm9wZXJ0eW5hbWVzLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRz
L2FjdGlvbl9jc3Nwcm9wZXJ0eW5hbWVzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cykn
LAogICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScKQEAgLTI5MSw3
ICsyOTEsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAg
ICAgICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1
aWxkL2FjdGlvbl9jc3N2YWx1ZWtleXdvcmRzLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL2Fj
dGlvbl9jc3N2YWx1ZWtleXdvcmRzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAog
ICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScKQEAgLTMxNCw3ICsz
MTQsNyBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAgICAg
ICdweXRob24nLAotICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxk
L2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21ha2Vu
YW1lcy5weScsCiAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKICAgICAgICAgICAgICctLScs
CiAgICAgICAgICAgICAnPEAoX2lucHV0cyknLApAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAg
ICAgXSwKICAgICAgICAgICAnYWN0aW9uJzogWwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvYnVpbGQvYWN0aW9uX21ha2VuYW1l
cy5weScsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5JywKICAgICAg
ICAgICAgICc8QChfb3V0cHV0cyknLAogICAgICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8
QChfaW5wdXRzKScsCkBAIC0zNzAsNyArMzcwLDcgQEAKICAgICAgICAgICBdLAogICAgICAgICAg
ICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywKLSAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9hY3Rpb25fdXNlcmFnZW50c3R5bGVzaGVldHMucHkn
LAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX3VzZXJhZ2VudHN0eWxlc2hlZXRzLnB5JywK
ICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAogICAgICAgICAgICAgJy0tJywKICAgICAgICAg
ICAgICc8QChfaW5wdXRzKScKQEAgLTM4OCw3ICszODgsNyBAQAogICAgICAgICAgIF0sCiAgICAg
ICAgICAgJ2FjdGlvbic6IFsKICAgICAgICAgICAgICdweXRob24nLAotICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxkL2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAg
ICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weScsCiAgICAgICAgICAgICAnPEAo
X291dHB1dHMpJywKICAgICAgICAgICAgICctLScsCiAgICAgICAgICAgICAnPEAoX2lucHV0cykn
LApAQCAtNDA4LDcgKzQwOCw3IEBACiAgICAgICAgICAgXSwKICAgICAgICAgICAnYWN0aW9uJzog
WwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvYnVpbGQvYWN0aW9uX21ha2VuYW1lcy5weScsCisgICAgICAgICAgICAnc2NyaXB0
cy9hY3Rpb25fbWFrZW5hbWVzLnB5JywKICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAogICAg
ICAgICAgICAgJy0tJywKICAgICAgICAgICAgICc8QChfaW5wdXRzKScsCkBAIC00MjcsNyArNDI3
LDcgQEAKICAgICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAn
cHl0aG9uJywKLSAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9h
Y3Rpb25fbWFrZXRva2VuaXplci5weScsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fbWFr
ZXRva2VuaXplci5weScsCiAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKICAgICAgICAgICAg
ICctLScsCiAgICAgICAgICAgICAnPEAoX2lucHV0cyknCkBAIC00NDUsNyArNDQ1LDcgQEAKICAg
ICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywK
LSAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9ydWxlX2Jpc29u
LnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL3J1bGVfYmlzb24ucHknLAogICAgICAgICAgICAg
JzwoUlVMRV9JTlBVVF9QQVRIKScsCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0JwogICAgICAgICAgIF0sCkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAg
ICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywKLSAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9idWlsZC9ydWxlX2dwZXJmLnB5JywK
KyAgICAgICAgICAgICdzY3JpcHRzL3J1bGVfZ3BlcmYucHknLAogICAgICAgICAgICAgJzwoUlVM
RV9JTlBVVF9QQVRIKScsCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikv
d2Via2l0JwogICAgICAgICAgIF0sCkBAIC01MTMsNyArNTEzLDcgQEAKICAgICAgICAgICAjIGJl
aGF2aW9yLCBjaGFuZ2UgdGhlIG91dHB1dCBsb2NhdGlvbi4KICAgICAgICAgICAnYWN0aW9uJzog
WwogICAgICAgICAgICAgJ3B5dGhvbicsCi0gICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvYnVpbGQvcnVsZV9iaW5kaW5nLnB5JywKKyAgICAgICAgICAgICdzY3JpcHRzL3J1
bGVfYmluZGluZy5weScsCiAgICAgICAgICAgICAnPChSVUxFX0lOUFVUX1BBVEgpJywKICAgICAg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL2JpbmRpbmdzJywKICAg
ICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvYmluZGluZ3MnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3Nwcm9wZXJ0
eW5hbWVzLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3Nwcm9wZXJ0
eW5hbWVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMzE0ZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Nzc3By
b3BlcnR5bmFtZXMucHkKQEAgLTAsMCArMSwxNjYgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisj
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24u
CisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgYWN0aW9uX2Nzc3Byb3BlcnR5bmFtZXMucHkgaXMgYSBo
YXJuZXNzIHNjcmlwdCB0byBjb25uZWN0IGFjdGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2Vk
IGJ1aWxkcyB0byBtYWtlcHJvcC5wbC4KKyMKKyMgdXNhZ2U6IGFjdGlvbl9tYWtlbmFtZXMucHkg
T1VUUFVUUyAtLSBJTlBVVFMKKyMKKyMgRXhhY3RseSB0d28gb3V0cHV0cyBtdXN0IGJlIHNwZWNp
ZmllZDogYSBwYXRoIHRvIGVhY2ggb2YgQ1NTUHJvcGVydHlOYW1lcy5jcHAKKyMgYW5kIENTU1By
b3BlcnR5TmFtZXMuaC4KKyMKKyMgTXVsdGlwbGUgaW5wdXRzIG1heSBiZSBzcGVjaWZpZWQuIE9u
ZSBpbnB1dCBtdXN0IGhhdmUgYSBiYXNlbmFtZSBvZgorIyBtYWtlcHJvcC5wbDsgdGhpcyBpcyB0
YWtlbiBhcyB0aGUgcGF0aCB0byBtYWtlcHJvcC5wbC4gQWxsIG90aGVyIGlucHV0cyBhcmUKKyMg
cGF0aHMgdG8gLmluIGZpbGVzIHRoYXQgYXJlIHVzZWQgYXMgaW5wdXQgdG8gbWFrZXByb3AucGw7
IGF0IGxlYXN0IG9uZSwKKyMgQ1NTUHJvcGVydHlOYW1lcy5pbiwgaXMgcmVxdWlyZWQuCisKKwor
aW1wb3J0IG9zCitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworCisKK2RlZiBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJncyk6Cisg
ICAgc2VjdGlvbnMgPSBbXQorICAgIHdoaWxlIGxlbihhcmdzKSA+IDA6CisgICAgICAgIGlmIG5v
dCAnLS0nIGluIGFyZ3M6CisgICAgICAgICAgICAjIElmIHRoZXJlIGlzIG5vICctLScgbGVmdCwg
ZXZlcnl0aGluZyByZW1haW5pbmcgaXMgYW4gZW50aXJlIHNlY3Rpb24uCisgICAgICAgICAgICBk
YXNoZXMgPSBsZW4oYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhc2hlcyA9IGFy
Z3MuaW5kZXgoJy0tJykKKworICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJnc1s6ZGFzaGVzXSkK
KworICAgICAgICAjIE5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLCBsb29rIGF0IGV2ZXJ5dGhp
bmcgYWZ0ZXIgdGhpcyAnLS0nLgorICAgICAgICBpZiBkYXNoZXMgKyAxID09IGxlbihhcmdzKToK
KyAgICAgICAgICAgICMgSWYgdGhlICctLScgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgd2Ug
d29uJ3QgY29tZSBiYWNrIHRocm91Z2ggdGhlCisgICAgICAgICAgICAjIGxvb3AgYWdhaW4uIEFk
ZCBhbiBlbXB0eSBzZWN0aW9uIG5vdyBjb3JyZXNwb25kaW5nIHRvIHRoZSBub3RoaW5nbmVzcwor
ICAgICAgICAgICAgIyBmb2xsb3dpbmcgdGhlIGZpbmFsICctLScuCisgICAgICAgICAgICBhcmdz
ID0gW10KKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChhcmdzKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgYXJncyA9IGFyZ3NbZGFzaGVzICsgMTpdCisKKyAgICByZXR1cm4gc2VjdGlv
bnMKKworCitkZWYgbWFpbihhcmdzKToKKyAgICAob3V0cHV0cywgaW5wdXRzKSA9IFNwbGl0QXJn
c0ludG9TZWN0aW9ucyhhcmdzWzE6XSkKKworICAgICMgTWFrZSBhbGwgb3V0cHV0IHBhdGhuYW1l
cyBhYnNvbHV0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGFmdGVyCisgICAgIyBjaGFu
Z2luZyBkaXJlY3RvcnkuCisgICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4ob3V0cHV0cykp
OgorICAgICAgICBvdXRwdXRzW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChvdXRwdXRzW2luZGV4
XSkKKworICAgIG91dHB1dERpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRzWzBdKQorCisgICAg
IyBMb29rIGF0IHRoZSBpbnB1dHMgYW5kIGZpZ3VyZSBvdXQgd2hpY2ggb25lIGlzIG1ha2Vwcm9w
LnBsIGFuZCB3aGljaCBhcmUKKyAgICAjIGlucHV0cyB0byB0aGF0IHNjcmlwdC4KKyAgICBtYWtl
cHJvcElucHV0ID0gTm9uZQorICAgIGluRmlsZXMgPSBbXQorICAgIGZvciBpbnB1dCBpbiBpbnB1
dHM6CisgICAgICAgICMgTWFrZSBpbnB1dCBwYXRobmFtZXMgYWJzb2x1dGUgc28gdGhleSBjYW4g
YmUgYWNjZXNzZWQgYWZ0ZXIgY2hhbmdpbmcKKyAgICAgICAgIyBkaXJlY3RvcnkuIE9uIFdpbmRv
d3MsIGNvbnZlcnQgXCB0byAvIGZvciBpbnB1dHMgdG8gdGhlIHBlcmwgc2NyaXB0IHRvCisgICAg
ICAgICMgd29yayBhcm91bmQgdGhlIGludGVybWl4IG9mIGFjdGl2ZXB5dGhvbiArIGN5Z3dpbiBw
ZXJsLgorICAgICAgICBpbnB1dEFicyA9IG9zLnBhdGguYWJzcGF0aChpbnB1dCkKKyAgICAgICAg
aW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uob3MucGF0aC5zZXAsIHBvc2l4cGF0aC5z
ZXApCisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGlucHV0KQorICAg
ICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlcHJvcC5wbCc6CisgICAgICAgICAgICBhc3Nl
cnQgbWFrZXByb3BJbnB1dCA9PSBOb25lCisgICAgICAgICAgICBtYWtlcHJvcElucHV0ID0gaW5w
dXRBYnMKKyAgICAgICAgZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCcuaW4nKToKKyAgICAg
ICAgICAgIGluRmlsZXMuYXBwZW5kKGlucHV0QWJzUG9zaXgpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKKworICAgIGFzc2VydCBtYWtlcHJvcElucHV0ICE9IE5vbmUK
KyAgICBhc3NlcnQgbGVuKGluRmlsZXMpID49IDEKKworICAgICMgQ2hhbmdlIHRvIHRoZSBvdXRw
dXQgZGlyZWN0b3J5IGJlY2F1c2UgbWFrZXByb3AucGwgcHV0cyBvdXRwdXQgaW4gaXRzCisgICAg
IyB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICBvcy5jaGRpcihvdXRwdXREaXIpCisKKyAgICAjIE1l
cmdlIGFsbCBpbkZpbGVzIGludG8gYSBzaW5nbGUgZmlsZSB3aG9zZSBuYW1lIHdpbGwgYmUgdGhl
IHNhbWUgYXMgdGhlCisgICAgIyBmaXJzdCBsaXN0ZWQgaW5GaWxlLCBidXQgaW4gdGhlIG91dHB1
dCBkaXJlY3RvcnkuCisgICAgbWVyZ2VkUGF0aCA9IG9zLnBhdGguYmFzZW5hbWUoaW5GaWxlc1sw
XSkKKyAgICBtZXJnZWQgPSBvcGVuKG1lcmdlZFBhdGgsICd3YicpICAgICMgJ3diJyB0byBnZXQg
XG4gb25seSBvbiB3aW5kb3dzCisKKyAgICAjIE1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGR1
cGxpY2F0ZSBsaW5lcyBpbiB0aGUgaW4gZmlsZXMuCisgICAgbGluZURpY3QgPSB7fQorICAgIGZv
ciBpbkZpbGVQYXRoIGluIGluRmlsZXM6CisgICAgICAgIGluRmlsZSA9IG9wZW4oaW5GaWxlUGF0
aCkKKyAgICAgICAgZm9yIGxpbmUgaW4gaW5GaWxlOgorICAgICAgICAgICAgbGluZSA9IGxpbmUu
cnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAg
ICAgICAgIGxpbmUgPSAnJworICAgICAgICAgICAgaWYgbGluZSA9PSAnJzoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGluZSBpbiBsaW5lRGljdDoKKyAgICAgICAg
ICAgICAgICByYWlzZSBLZXlFcnJvciwgJ0R1cGxpY2F0ZSB2YWx1ZSAlcycgJSBsaW5lCisgICAg
ICAgICAgICBsaW5lRGljdFtsaW5lXSA9IFRydWUKKyAgICAgICAgICAgIHByaW50ID4+bWVyZ2Vk
LCBsaW5lCisgICAgICAgIGluRmlsZS5jbG9zZSgpCisKKyAgICBtZXJnZWQuY2xvc2UoKQorCisg
ICAgIyBCdWlsZCB1cCB0aGUgY29tbWFuZC4KKyAgICBjb21tYW5kID0gWydwZXJsJywgbWFrZXBy
b3BJbnB1dF0KKworICAgICMgRG8gaXQuIGNoZWNrQ2FsbCBpcyBuZXcgaW4gMi41LCBzbyBzaW11
bGF0ZSBpdHMgYmVoYXZpb3Igd2l0aCBjYWxsIGFuZAorICAgICMgYXNzZXJ0LgorICAgIHJldHVy
bkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKKyAgICBhc3NlcnQgcmV0dXJuQ29kZSA9
PSAwCisKKyAgICAjIERvbid0IGxlYXZlIGJlaGluZCB0aGUgbWVyZ2VkIGZpbGUgb3IgdGhlIC5n
cGVyZiBmaWxlIGNyZWF0ZWQgYnkKKyAgICAjIG1ha2Vwcm9wLgorICAgIChyb290LCBleHQpID0g
b3MucGF0aC5zcGxpdGV4dChtZXJnZWRQYXRoKQorICAgIGdwZXJmUGF0aCA9IHJvb3QgKyAnLmdw
ZXJmJworICAgIG9zLnVubGluayhncGVyZlBhdGgpCisgICAgb3MudW5saW5rKG1lcmdlZFBhdGgp
CisKKyAgICAjIEdvIHRocm91Z2ggdGhlIG91dHB1dHMuIEFueSBvdXRwdXQgdGhhdCBiZWxvbmdz
IGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeQorICAgICMgaXMgbW92ZWQuIERvIGEgY29weSBhbmQg
ZGVsZXRlIGluc3RlYWQgb2YgcmVuYW1lIGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5LgorICAgICMg
Tm90ZSB0aGF0IGFsbCBwYXRocyB1c2VkIGluIHRoaXMgc2VjdGlvbiBhcmUgc3RpbGwgYWJzb2x1
dGUuCisgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICB0aGlzT3V0cHV0RGlyID0g
b3MucGF0aC5kaXJuYW1lKG91dHB1dCkKKyAgICAgICAgaWYgdGhpc091dHB1dERpciAhPSBvdXRw
dXREaXI6CisgICAgICAgICAgICBvdXRwdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3V0
cHV0KQorICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKG91dHB1dERpciwgb3V0cHV0QmFz
ZW5hbWUpCisgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGhpc091dHB1dERpciwgb3V0
cHV0QmFzZW5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisgICAg
ICAgICAgICBvcy51bmxpbmsoc3JjKQorCisgICAgcmV0dXJuIHJldHVybkNvZGUKKworCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3N2YWx1ZWtleXdv
cmRzLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9jc3N2YWx1ZWtleXdv
cmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmViZjg5NWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Nzc3ZhbHVl
a2V5d29yZHMucHkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisKKyMgYWN0aW9uX2Nzc3ZhbHVla2V5d29yZHMucHkgaXMgYSBoYXJu
ZXNzIHNjcmlwdCB0byBjb25uZWN0IGFjdGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2VkIGJ1
aWxkcyB0byBtYWtldmFsdWVzLnBsLgorIworIyB1c2FnZTogYWN0aW9uX2Nzc3ZhbHVla2V5d29y
ZHMucHkgT1VUUFVUUyAtLSBJTlBVVFMKKyMKKyMgRXhhY3RseSB0d28gb3V0cHV0cyBtdXN0IGJl
IHNwZWNpZmllZDogYSBwYXRoIHRvIGVhY2ggb2YgQ1NTVmFsdWVLZXl3b3Jkcy5jCisjIGFuZCBD
U1NWYWx1ZUtleXdvcmRzLmguCisjCisjIE11bHRpcGxlIGlucHV0cyBtYXkgYmUgc3BlY2lmaWVk
LiBPbmUgaW5wdXQgbXVzdCBoYXZlIGEgYmFzZW5hbWUgb2YKKyMgbWFrZXZhbHVlcy5wbDsgdGhp
cyBpcyB0YWtlbiBhcyB0aGUgcGF0aCB0byBtYWtldmFsdWVzLnBsLiBBbGwgb3RoZXIgaW5wdXRz
CisjIGFyZSBwYXRocyB0byAuaW4gZmlsZXMgdGhhdCBhcmUgdXNlZCBhcyBpbnB1dCB0byBtYWtl
dmFsdWVzLnBsOyBhdCBsZWFzdAorIyBvbmUsIENTU1ZhbHVlS2V5d29yZHMuaW4sIGlzIHJlcXVp
cmVkLgorCisKK2ltcG9ydCBvcworaW1wb3J0IHBvc2l4cGF0aAoraW1wb3J0IHNodXRpbAoraW1w
b3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25z
KGFyZ3MpOgorICAgIHNlY3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAg
ICAgICBpZiBub3QgJy0tJyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAn
LS0nIGxlZnQsIGV2ZXJ5dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAg
ICAgICAgICAgZGFzaGVzID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBk
YXNoZXMgPSBhcmdzLmluZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3Nb
OmRhc2hlc10pCisKKyAgICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBh
dCBldmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBs
ZW4oYXJncyk6CisgICAgICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhl
IGxpc3QsIHdlIHdvbid0IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29w
IGFnYWluLiBBZGQgYW4gZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90
aGluZ25lc3MKKyAgICAgICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAg
ICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0
dXJuIHNlY3Rpb25zCisKKworZGVmIG1haW4oYXJncyk6CisgICAgKG91dHB1dHMsIGlucHV0cykg
PSBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJnc1sxOl0pCisKKyAgICAjIE1ha2UgYWxsIG91dHB1
dCBwYXRobmFtZXMgYWJzb2x1dGUgc28gdGhhdCB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBhZnRlcgor
ICAgICMgY2hhbmdpbmcgZGlyZWN0b3J5LgorICAgIGZvciBpbmRleCBpbiB4cmFuZ2UoMCwgbGVu
KG91dHB1dHMpKToKKyAgICAgICAgb3V0cHV0c1tpbmRleF0gPSBvcy5wYXRoLmFic3BhdGgob3V0
cHV0c1tpbmRleF0pCisKKyAgICBvdXRwdXREaXIgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0c1sw
XSkKKworICAgICMgTG9vayBhdCB0aGUgaW5wdXRzIGFuZCBmaWd1cmUgb3V0IHdoaWNoIG9uZSBp
cyBtYWtldmFsdWVzLnBsIGFuZCB3aGljaCBhcmUKKyAgICAjIGlucHV0cyB0byB0aGF0IHNjcmlw
dC4KKyAgICBtYWtldmFsdWVzSW5wdXQgPSBOb25lCisgICAgaW5GaWxlcyA9IFtdCisgICAgZm9y
IGlucHV0IGluIGlucHV0czoKKyAgICAgICAgIyBNYWtlIGlucHV0IHBhdGhuYW1lcyBhYnNvbHV0
ZSBzbyB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBhZnRlciBjaGFuZ2luZworICAgICAgICAjIGRpcmVj
dG9yeS4gT24gV2luZG93cywgY29udmVydCBcIHRvIC8gZm9yIGlucHV0cyB0byB0aGUgcGVybCBz
Y3JpcHQgdG8KKyAgICAgICAgIyB3b3JrIGFyb3VuZCB0aGUgaW50ZXJtaXggb2YgYWN0aXZlcHl0
aG9uICsgY3lnd2luIHBlcmwuCisgICAgICAgIGlucHV0QWJzID0gb3MucGF0aC5hYnNwYXRoKGlu
cHV0KQorICAgICAgICBpbnB1dEFic1Bvc2l4ID0gaW5wdXRBYnMucmVwbGFjZShvcy5wYXRoLnNl
cCwgcG9zaXhwYXRoLnNlcCkKKyAgICAgICAgaW5wdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5h
bWUoaW5wdXQpCisgICAgICAgIGlmIGlucHV0QmFzZW5hbWUgPT0gJ21ha2V2YWx1ZXMucGwnOgor
ICAgICAgICAgICAgYXNzZXJ0IG1ha2V2YWx1ZXNJbnB1dCA9PSBOb25lCisgICAgICAgICAgICBt
YWtldmFsdWVzSW5wdXQgPSBpbnB1dEFicworICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5k
c3dpdGgoJy5pbicpOgorICAgICAgICAgICAgaW5GaWxlcy5hcHBlbmQoaW5wdXRBYnNQb3NpeCkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZQorCisgICAgYXNzZXJ0IG1h
a2V2YWx1ZXNJbnB1dCAhPSBOb25lCisgICAgYXNzZXJ0IGxlbihpbkZpbGVzKSA+PSAxCisKKyAg
ICAjIENoYW5nZSB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWNhdXNlIG1ha2V2YWx1ZXMucGwg
cHV0cyBvdXRwdXQgaW4gaXRzCisgICAgIyB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICBvcy5jaGRp
cihvdXRwdXREaXIpCisKKyAgICAjIE1lcmdlIGFsbCBpbkZpbGVzIGludG8gYSBzaW5nbGUgZmls
ZSB3aG9zZSBuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgIyBmaXJzdCBsaXN0ZWQg
aW5GaWxlLCBidXQgaW4gdGhlIG91dHB1dCBkaXJlY3RvcnkuCisgICAgbWVyZ2VkUGF0aCA9IG9z
LnBhdGguYmFzZW5hbWUoaW5GaWxlc1swXSkKKyAgICBtZXJnZWQgPSBvcGVuKG1lcmdlZFBhdGgs
ICd3YicpICAgICMgJ3diJyB0byBnZXQgXG4gb25seSBvbiB3aW5kb3dzCisKKyAgICAjIE1ha2Ug
c3VyZSB0aGVyZSBhcmVuJ3QgYW55IGR1cGxpY2F0ZSBsaW5lcyBpbiB0aGUgaW4gZmlsZXMuIExv
d2VyY2FzZQorICAgICMgZXZlcnl0aGluZyBiZWNhdXNlIENTUyB2YWx1ZXMgYXJlIGNhc2UtaW5z
ZW5zaXRpdmUuCisgICAgbGluZURpY3QgPSB7fQorICAgIGZvciBpbkZpbGVQYXRoIGluIGluRmls
ZXM6CisgICAgICAgIGluRmlsZSA9IG9wZW4oaW5GaWxlUGF0aCkKKyAgICAgICAgZm9yIGxpbmUg
aW4gaW5GaWxlOgorICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKKyAgICAgICAgICAg
IGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAnJworICAg
ICAgICAgICAgaWYgbGluZSA9PSAnJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgbGluZSA9IGxpbmUubG93ZXIoKQorICAgICAgICAgICAgaWYgbGluZSBpbiBsaW5lRGlj
dDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvciwgJ0R1cGxpY2F0ZSB2YWx1ZSAlcycg
JSBsaW5lCisgICAgICAgICAgICBsaW5lRGljdFtsaW5lXSA9IFRydWUKKyAgICAgICAgICAgIHBy
aW50ID4+bWVyZ2VkLCBsaW5lCisgICAgICAgIGluRmlsZS5jbG9zZSgpCisKKyAgICBtZXJnZWQu
Y2xvc2UoKQorCisgICAgIyBCdWlsZCB1cCB0aGUgY29tbWFuZC4KKyAgICBjb21tYW5kID0gWydw
ZXJsJywgbWFrZXZhbHVlc0lucHV0XQorCisgICAgIyBEbyBpdC4gY2hlY2tDYWxsIGlzIG5ldyBp
biAyLjUsIHNvIHNpbXVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIGNhbGwgYW5kCisgICAgIyBhc3Nl
cnQuCisgICAgcmV0dXJuQ29kZSA9IHN1YnByb2Nlc3MuY2FsbChjb21tYW5kKQorICAgIGFzc2Vy
dCByZXR1cm5Db2RlID09IDAKKworICAgICMgRG9uJ3QgbGVhdmUgYmVoaW5kIHRoZSBtZXJnZWQg
ZmlsZSBvciB0aGUgLmdwZXJmIGZpbGUgY3JlYXRlZCBieQorICAgICMgbWFrZXZhbHVlcy4KKyAg
ICAocm9vdCwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQobWVyZ2VkUGF0aCkKKyAgICBncGVyZlBh
dGggPSByb290ICsgJy5ncGVyZicKKyAgICBvcy51bmxpbmsoZ3BlcmZQYXRoKQorICAgIG9zLnVu
bGluayhtZXJnZWRQYXRoKQorCisgICAgIyBHbyB0aHJvdWdoIHRoZSBvdXRwdXRzLiBBbnkgb3V0
cHV0IHRoYXQgYmVsb25ncyBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnkKKyAgICAjIGlzIG1vdmVk
LiBEbyBhIGNvcHkgYW5kIGRlbGV0ZSBpbnN0ZWFkIG9mIHJlbmFtZSBmb3IgbWF4aW11bSBwb3J0
YWJpbGl0eS4KKyAgICAjIE5vdGUgdGhhdCBhbGwgcGF0aHMgdXNlZCBpbiB0aGlzIHNlY3Rpb24g
YXJlIHN0aWxsIGFic29sdXRlLgorICAgIGZvciBvdXRwdXQgaW4gb3V0cHV0czoKKyAgICAgICAg
dGhpc091dHB1dERpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXQpCisgICAgICAgIGlmIHRoaXNP
dXRwdXREaXIgIT0gb3V0cHV0RGlyOgorICAgICAgICAgICAgb3V0cHV0QmFzZW5hbWUgPSBvcy5w
YXRoLmJhc2VuYW1lKG91dHB1dCkKKyAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihvdXRw
dXREaXIsIG91dHB1dEJhc2VuYW1lKQorICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRo
aXNPdXRwdXREaXIsIG91dHB1dEJhc2VuYW1lKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxl
KHNyYywgZHN0KQorICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKworICAgIHJldHVybiByZXR1
cm5Db2RlCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWlu
KHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rp
b25fbWFrZW5hbWVzLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtl
bmFtZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWNmNTQzZgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5h
bWVzLnB5CkBAIC0wLDAgKzEsMTc0IEBACisjIS91c3IvYmluL3B5dGhvbgorIworIyBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisjIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorCisjIGFjdGlvbl9tYWtlbmFtZXMucHkgaXMgYSBoYXJuZXNzIHNjcmlwdCB0
byBjb25uZWN0IGFjdGlvbnMgc2VjdGlvbnMgb2YKKyMgZ3lwLWJhc2VkIGJ1aWxkcyB0byBtYWtl
X25hbWVzLnBsLgorIworIyB1c2FnZTogYWN0aW9uX21ha2VuYW1lcy5weSBPVVRQVVRTIC0tIElO
UFVUUyBbLS0gT1BUSU9OU10KKyMKKyMgTXVsdGlwbGUgT1VUUFVUUywgSU5QVVRTLCBhbmQgT1BU
SU9OUyBtYXkgYmUgbGlzdGVkLiBUaGUgc2VjdGlvbnMgYXJlCisjIHNlcGFyYXRlZCBieSAtLSBh
cmd1bWVudHMuCisjCisjIFRoZSBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgZmlyc3Qgb3V0cHV0IGlz
IGNob3NlbiBhcyB0aGUgZGlyZWN0b3J5IGluIHdoaWNoCisjIG1ha2VfbmFtZXMgd2lsbCBydW4u
IElmIHRoZSBkaXJlY3RvcnkgbmFtZSBmb3IgYW55IHN1YnNlcXVlbnQgb3V0cHV0IGlzCisjIGRp
ZmZlcmVudCwgdGhvc2UgZmlsZXMgd2lsbCBiZSBtb3ZlZCB0byB0aGUgZGVzaXJlZCBkaXJlY3Rv
cnkuCisjCisjIE11bHRpcGxlIElOUFVUUyBtYXkgYmUgbGlzdGVkLiBBbiBpbnB1dCB3aXRoIGEg
YmFzZW5hbWUgbWF0Y2hpbmcKKyMgIm1ha2VfbmFtZXMucGwiIGlzIHRha2VuIGFzIHRoZSBwYXRo
IHRvIHRoYXQgc2NyaXB0LiBJbnB1dHMgd2l0aCBuYW1lcworIyBlbmRpbmcgaW4gVGFnTmFtZXMu
aW4gb3IgdGFncy5pbiBhcmUgdGFrZW4gYXMgdGFnIGlucHV0cy4gSW5wdXRzIHdpdGggbmFtZXMK
KyMgZW5kaW5nIGluIEF0dHJpYnV0ZU5hbWVzLmluIG9yIGF0dHJzLmluIGFyZSB0YWtlbiBhcyBh
dHRyaWJ1dGUgaW5wdXRzLiBUaGVyZQorIyBtYXkgYmUgYXQgbW9zdCBvbmUgdGFnIGlucHV0IGFu
ZCBvbmUgYXR0cmlidXRlIGlucHV0LiBBIG1ha2VfbmFtZXMucGwgaW5wdXQKKyMgaXMgcmVxdWly
ZWQgYW5kIGF0IGxlYXN0IG9uZSB0YWcgb3IgYXR0cmlidXRlIGlucHV0IG11c3QgYmUgcHJlc2Vu
dC4KKyMKKyMgT1BUSU9OUyBpcyBhIGxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBhc3Mg
dG8gbWFrZV9uYW1lcy5wbC4gVGhpcworIyBzZWN0aW9uIG5lZWQgbm90IGJlIHByZXNlbnQuCisK
KworaW1wb3J0IG9zCitpbXBvcnQgcG9zaXhwYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3Vi
cHJvY2VzcworaW1wb3J0IHN5cworCisKK2RlZiBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJncyk6
CisgICAgc2VjdGlvbnMgPSBbXQorICAgIHdoaWxlIGxlbihhcmdzKSA+IDA6CisgICAgICAgIGlm
IG5vdCAnLS0nIGluIGFyZ3M6CisgICAgICAgICAgICAjIElmIHRoZXJlIGlzIG5vICctLScgbGVm
dCwgZXZlcnl0aGluZyByZW1haW5pbmcgaXMgYW4gZW50aXJlIHNlY3Rpb24uCisgICAgICAgICAg
ICBkYXNoZXMgPSBsZW4oYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhc2hlcyA9
IGFyZ3MuaW5kZXgoJy0tJykKKworICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJnc1s6ZGFzaGVz
XSkKKworICAgICAgICAjIE5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLCBsb29rIGF0IGV2ZXJ5
dGhpbmcgYWZ0ZXIgdGhpcyAnLS0nLgorICAgICAgICBpZiBkYXNoZXMgKyAxID09IGxlbihhcmdz
KToKKyAgICAgICAgICAgICMgSWYgdGhlICctLScgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwg
d2Ugd29uJ3QgY29tZSBiYWNrIHRocm91Z2ggdGhlCisgICAgICAgICAgICAjIGxvb3AgYWdhaW4u
IEFkZCBhbiBlbXB0eSBzZWN0aW9uIG5vdyBjb3JyZXNwb25kaW5nIHRvIHRoZSBub3RoaW5nbmVz
cworICAgICAgICAgICAgIyBmb2xsb3dpbmcgdGhlIGZpbmFsICctLScuCisgICAgICAgICAgICBh
cmdzID0gW10KKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChhcmdzKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgYXJncyA9IGFyZ3NbZGFzaGVzICsgMTpdCisKKyAgICByZXR1cm4gc2Vj
dGlvbnMKKworCitkZWYgbWFpbihhcmdzKToKKyAgICBzZWN0aW9ucyA9IFNwbGl0QXJnc0ludG9T
ZWN0aW9ucyhhcmdzWzE6XSkKKyAgICBhc3NlcnQgbGVuKHNlY3Rpb25zKSA9PSAyIG9yIGxlbihz
ZWN0aW9ucykgPT0gMworICAgIChvdXRwdXRzLCBpbnB1dHMpID0gc2VjdGlvbnNbOjJdCisgICAg
aWYgbGVuKHNlY3Rpb25zKSA9PSAzOgorICAgICAgICBvcHRpb25zID0gc2VjdGlvbnNbMl0KKyAg
ICBlbHNlOgorICAgICAgICBvcHRpb25zID0gW10KKworICAgICMgTWFrZSBhbGwgb3V0cHV0IHBh
dGhuYW1lcyBhYnNvbHV0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGFmdGVyCisgICAg
IyBjaGFuZ2luZyBkaXJlY3RvcnkuCisgICAgZm9yIGluZGV4IGluIHhyYW5nZSgwLCBsZW4ob3V0
cHV0cykpOgorICAgICAgICBvdXRwdXRzW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChvdXRwdXRz
W2luZGV4XSkKKworICAgIG91dHB1dERpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRzWzBdKQor
CisgICAgIyBMb29rIGF0IHRoZSBpbnB1dHMgYW5kIGZpZ3VyZSBvdXQgd2hpY2ggb25lcyBhcmUg
bWFrZV9uYW1lcy5wbCwgdGFncywgYW5kCisgICAgIyBhdHRyaWJ1dGVzLiBUaGVyZSBjYW4gYmUg
YXQgbW9zdCBvbmUgb2YgZWFjaCwgYW5kIHRob3NlIGFyZSB0aGUgb25seQorICAgICMgaW5wdXQg
dHlwZXMgc3VwcG9ydGVkLiBtYWtlX25hbWVzLnBsIGlzIHJlcXVpcmVkIGFuZCBhdCBsZWFzdCBv
bmUgb2YgdGFncworICAgICMgYW5kIGF0dHJpYnV0ZXMgaXMgcmVxdWlyZWQuCisgICAgbWFrZU5h
bWVzSW5wdXQgPSBOb25lCisgICAgdGFnSW5wdXQgPSBOb25lCisgICAgYXR0cklucHV0ID0gTm9u
ZQorICAgIGZvciBpbnB1dCBpbiBpbnB1dHM6CisgICAgICAgICMgTWFrZSBpbnB1dCBwYXRobmFt
ZXMgYWJzb2x1dGUgc28gdGhleSBjYW4gYmUgYWNjZXNzZWQgYWZ0ZXIgY2hhbmdpbmcKKyAgICAg
ICAgIyBkaXJlY3RvcnkuIE9uIFdpbmRvd3MsIGNvbnZlcnQgXCB0byAvIGZvciBpbnB1dHMgdG8g
dGhlIHBlcmwgc2NyaXB0IHRvCisgICAgICAgICMgd29yayBhcm91bmQgdGhlIGludGVybWl4IG9m
IGFjdGl2ZXB5dGhvbiArIGN5Z3dpbiBwZXJsLgorICAgICAgICBpbnB1dEFicyA9IG9zLnBhdGgu
YWJzcGF0aChpbnB1dCkKKyAgICAgICAgaW5wdXRBYnNQb3NpeCA9IGlucHV0QWJzLnJlcGxhY2Uo
b3MucGF0aC5zZXAsIHBvc2l4cGF0aC5zZXApCisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5w
YXRoLmJhc2VuYW1lKGlucHV0KQorICAgICAgICBpZiBpbnB1dEJhc2VuYW1lID09ICdtYWtlX25h
bWVzLnBsJzoKKyAgICAgICAgICAgIGFzc2VydCBtYWtlTmFtZXNJbnB1dCA9PSBOb25lCisgICAg
ICAgICAgICBtYWtlTmFtZXNJbnB1dCA9IGlucHV0QWJzCisgICAgICAgIGVsaWYgaW5wdXRCYXNl
bmFtZS5lbmRzd2l0aCgnVGFnTmFtZXMuaW4nKSBcCisgICAgICAgICAgICAgb3IgaW5wdXRCYXNl
bmFtZS5lbmRzd2l0aCgndGFncy5pbicpOgorICAgICAgICAgICAgYXNzZXJ0IHRhZ0lucHV0ID09
IE5vbmUKKyAgICAgICAgICAgIHRhZ0lucHV0ID0gaW5wdXRBYnNQb3NpeAorICAgICAgICBlbGlm
IGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0F0dHJpYnV0ZU5hbWVzLmluJykgXAorICAgICAgICAg
ICAgIG9yIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ2F0dHJzLmluJyk6CisgICAgICAgICAgICBh
c3NlcnQgYXR0cklucHV0ID09IE5vbmUKKyAgICAgICAgICAgIGF0dHJJbnB1dCA9IGlucHV0QWJz
UG9zaXgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZQorCisgICAgYXNz
ZXJ0IG1ha2VOYW1lc0lucHV0ICE9IE5vbmUKKyAgICBhc3NlcnQgdGFnSW5wdXQgIT0gTm9uZSBv
ciBhdHRySW5wdXQgIT0gTm9uZQorCisgICAgIyBzY3JpcHRzUGF0aCBpcyBhIFBlcmwgaW5jbHVk
ZSBkaXJlY3RvcnksIGxvY2F0ZWQgcmVsYXRpdmUgdG8KKyAgICAjIG1ha2VOYW1lc0lucHV0Lgor
ICAgIHNjcmlwdHNQYXRoID0gb3MucGF0aC5ub3JtcGF0aCgKKyAgICAgICAgb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShtYWtlTmFtZXNJbnB1dCksIG9zLnBhcmRpciwgJ2JpbmRpbmdzJywg
J3NjcmlwdHMnKSkKKworICAgICMgQ2hhbmdlIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlY2F1
c2UgbWFrZV9uYW1lcy5wbCBwdXRzIG91dHB1dCBpbiBpdHMKKyAgICAjIHdvcmtpbmcgZGlyZWN0
b3J5LgorICAgIG9zLmNoZGlyKG91dHB1dERpcikKKworICAgICMgQnVpbGQgdXAgdGhlIGNvbW1h
bmQuCisgICAgY29tbWFuZCA9IFsncGVybCcsICctSScsIHNjcmlwdHNQYXRoLCBtYWtlTmFtZXNJ
bnB1dF0KKyAgICBpZiB0YWdJbnB1dCAhPSBOb25lOgorICAgICAgICBjb21tYW5kLmV4dGVuZChb
Jy0tdGFncycsIHRhZ0lucHV0XSkKKyAgICBpZiBhdHRySW5wdXQgIT0gTm9uZToKKyAgICAgICAg
Y29tbWFuZC5leHRlbmQoWyctLWF0dHJzJywgYXR0cklucHV0XSkKKyAgICBjb21tYW5kLmV4dGVu
ZChvcHRpb25zKQorCisgICAgIyBEbyBpdC4gY2hlY2tfY2FsbCBpcyBuZXcgaW4gMi41LCBzbyBz
aW11bGF0ZSBpdHMgYmVoYXZpb3Igd2l0aCBjYWxsIGFuZAorICAgICMgYXNzZXJ0LgorICAgIHJl
dHVybkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKKyAgICBhc3NlcnQgcmV0dXJuQ29k
ZSA9PSAwCisKKyAgICAjIEdvIHRocm91Z2ggdGhlIG91dHB1dHMuIEFueSBvdXRwdXQgdGhhdCBi
ZWxvbmdzIGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeQorICAgICMgaXMgbW92ZWQuIERvIGEgY29w
eSBhbmQgZGVsZXRlIGluc3RlYWQgb2YgcmVuYW1lIGZvciBtYXhpbXVtIHBvcnRhYmlsaXR5Lgor
ICAgICMgTm90ZSB0aGF0IGFsbCBwYXRocyB1c2VkIGluIHRoaXMgc2VjdGlvbiBhcmUgc3RpbGwg
YWJzb2x1dGUuCisgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRzOgorICAgICAgICB0aGlzT3V0cHV0
RGlyID0gb3MucGF0aC5kaXJuYW1lKG91dHB1dCkKKyAgICAgICAgaWYgdGhpc091dHB1dERpciAh
PSBvdXRwdXREaXI6CisgICAgICAgICAgICBvdXRwdXRCYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5h
bWUob3V0cHV0KQorICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKG91dHB1dERpciwgb3V0
cHV0QmFzZW5hbWUpCisgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGhpc091dHB1dERp
ciwgb3V0cHV0QmFzZW5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3Qp
CisgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQorCisgICAgcmV0dXJuIHJldHVybkNvZGUKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3Yp
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9r
ZW5pemVyLnB5IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtldG9rZW5p
emVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0YTI4ZWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2V0b2tl
bml6ZXIucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKyMgdXNhZ2U6IGFjdGlvbl9tYWtldG9rZW5pemVyLnB5IE9VVFBVVFMg
LS0gSU5QVVRTCisjCisjIE11bHRpcGxlIElOUFVUUyBtYXkgYmUgbGlzdGVkLiBUaGUgc2VjdGlv
bnMgYXJlIHNlcGFyYXRlZCBieSAtLSBhcmd1bWVudHMuCisjCisjIE9VVFBVVFMgbXVzdCBjb250
YWluIGEgc2luZ2xlIGl0ZW06IGEgcGF0aCB0byB0b2tlbml6ZXIuY3BwLgorIworIyBJTlBVVFMg
bXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGl0ZW1zLiBUaGUgZmlyc3QgaXRlbSBtdXN0IGJlIHRo
ZSBwYXRoIHRvCisjIG1ha2V0b2tlbml6ZXIuIFRoZSBzZWNvbmQgaXRlbSBtdXN0IGJlIHRoZSBw
YXRoIHRvIHRva2VuaXplci5mbGV4LgorCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MK
K2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25zKGFyZ3MpOgorICAgIHNl
Y3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAgICAgICBpZiBub3QgJy0t
JyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAnLS0nIGxlZnQsIGV2ZXJ5
dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAgICAgICAgICAgZGFzaGVz
ID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXNoZXMgPSBhcmdzLmlu
ZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3NbOmRhc2hlc10pCisKKyAg
ICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBhdCBldmVyeXRoaW5nIGFm
dGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBsZW4oYXJncyk6CisgICAg
ICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsIHdlIHdvbid0
IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29wIGFnYWluLiBBZGQgYW4g
ZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGluZ25lc3MKKyAgICAg
ICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAgICAgICAgYXJncyA9IFtd
CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0dXJuIHNlY3Rpb25zCisK
KworZGVmIG1haW4oYXJncyk6CisgICAgc2VjdGlvbnMgPSBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMo
YXJnc1sxOl0pCisgICAgYXNzZXJ0IGxlbihzZWN0aW9ucykgPT0gMgorICAgIChvdXRwdXRzLCBp
bnB1dHMpID0gc2VjdGlvbnMKKworICAgIGFzc2VydCBsZW4ob3V0cHV0cykgPT0gMQorICAgIG91
dHB1dCA9IG91dHB1dHNbMF0KKworICAgIGFzc2VydCBsZW4oaW5wdXRzKSA9PSAyCisgICAgbWFr
ZXRva2VuaXplciA9IGlucHV0c1swXQorICAgIGZsZXhJbnB1dCA9IGlucHV0c1sxXQorCisgICAg
IyBEbyBpdC4gY2hlY2tfY2FsbCBpcyBuZXcgaW4gMi41LCBzbyBzaW11bGF0ZSBpdHMgYmVoYXZp
b3Igd2l0aCBjYWxsIGFuZAorICAgICMgYXNzZXJ0LgorICAgIG91dGZpbGUgPSBvcGVuKG91dHB1
dCwgJ3diJykKKyAgICBwMSA9IHN1YnByb2Nlc3MuUG9wZW4oWydmbGV4JywgJy10JywgZmxleElu
cHV0XSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBwMiA9IHN1YnByb2Nlc3MuUG9wZW4o
WydwZXJsJywgbWFrZXRva2VuaXplcl0sIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PW91dGZpbGUp
CisKKyAgICByMSA9IHAxLndhaXQoKQorICAgIHIyID0gcDIud2FpdCgpCisgICAgYXNzZXJ0IHIx
ID09IDAKKyAgICBhc3NlcnQgcjIgPT0gMAorCisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl91c2VyYWdlbnRzdHlsZXNoZWV0
cy5weSBiL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fdXNlcmFnZW50c3R5bGVz
aGVldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmYwMTdmYwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fdXNlcmFn
ZW50c3R5bGVzaGVldHMucHkKQEAgLTAsMCArMSwxMDIgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisj
CisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyAKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyMgdXNhZ2U6IGFjdGlvbl91c2VyYWdlbnRzdHlsZXNo
ZWV0cy5weSBPVVRQVVRTIC0tIElOUFVUUworIworIyBNdWx0aXBsZSBPVVRQVVRTIGFuZCBJTlBV
VFMgbWF5IGJlIGxpc3RlZC4gVGhlIHNlY3Rpb25zIGFyZSBzZXBhcmF0ZWQgYnkKKyMgLS0gYXJn
dW1lbnRzLgorIworIyBPVVRQVVRTIG11c3QgY29udGFpbiB0d28gaXRlbXMsIGluIG9yZGVyOiBh
IHBhdGggdG8gVXNlckFnZW50U3R5bGVTaGVldHMuaAorIyBhbmQgYSBwYXRoIHRvIFVzZXJBZ2Vu
dFN0eWxlU2hlZXRzRGF0YS5jcHAuCisjCisjIElOUFVUUyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qg
dHdvIGl0ZW1zLiBUaGUgZmlyc3QgaXRlbSBtdXN0IGJlIHRoZSBwYXRoIHRvCisjIG1ha2UtY3Nz
LWZpbGUtYXJyYXlzLnBsLiBUaGUgcmVtYWluaW5nIGl0ZW1zIGFyZSBwYXRocyB0byBzdHlsZSBz
aGVldHMgdG8KKyMgYmUgZmVkIHRvIHRoYXQgc2NyaXB0LgorCisKK2ltcG9ydCBvcworaW1wb3J0
IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50b1NlY3Rpb25zKGFy
Z3MpOgorICAgIHNlY3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykgPiAwOgorICAgICAg
ICBpZiBub3QgJy0tJyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBubyAnLS0n
IGxlZnQsIGV2ZXJ5dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0aW9uLgorICAgICAg
ICAgICAgZGFzaGVzID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXNo
ZXMgPSBhcmdzLmluZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKGFyZ3NbOmRh
c2hlc10pCisKKyAgICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgbG9vayBhdCBl
dmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVzICsgMSA9PSBsZW4o
YXJncyk6CisgICAgICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxp
c3QsIHdlIHdvbid0IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgIyBsb29wIGFn
YWluLiBBZGQgYW4gZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aGlu
Z25lc3MKKyAgICAgICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0nLgorICAgICAgICAg
ICAgYXJncyA9IFtdCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJncykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQorCisgICAgcmV0dXJu
IHNlY3Rpb25zCisKKworZGVmIG1haW4oYXJncyk6CisgICAgc2VjdGlvbnMgPSBTcGxpdEFyZ3NJ
bnRvU2VjdGlvbnMoYXJnc1sxOl0pCisgICAgYXNzZXJ0IGxlbihzZWN0aW9ucykgPT0gMgorICAg
IChvdXRwdXRzLCBpbnB1dHMpID0gc2VjdGlvbnMKKworICAgIGFzc2VydCBsZW4ob3V0cHV0cykg
PT0gMgorICAgIG91dHB1dEggPSBvdXRwdXRzWzBdCisgICAgb3V0cHV0Q3BwID0gb3V0cHV0c1sx
XQorCisgICAgbWFrZUNzc0ZpbGVBcnJheXMgPSBpbnB1dHNbMF0KKyAgICBzdHlsZVNoZWV0cyA9
IGlucHV0c1sxOl0KKworICAgICMgQnVpbGQgdXAgdGhlIGNvbW1hbmQuCisgICAgY29tbWFuZCA9
IFsncGVybCcsIG1ha2VDc3NGaWxlQXJyYXlzLCBvdXRwdXRILCBvdXRwdXRDcHBdCisgICAgY29t
bWFuZC5leHRlbmQoc3R5bGVTaGVldHMpCisKKyAgICAjIERvIGl0LiBjaGVja19jYWxsIGlzIG5l
dyBpbiAyLjUsIHNvIHNpbXVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIGNhbGwgYW5kCisgICAgIyBh
c3NlcnQuCisgICAgcmV0dXJuQ29kZSA9IHN1YnByb2Nlc3MuY2FsbChjb21tYW5kKQorICAgIGFz
c2VydCByZXR1cm5Db2RlID09IDAKKworICAgIHJldHVybiByZXR1cm5Db2RlCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2JpbmRpbmcucHkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaW5kaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLjI0ZDE3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaW5kaW5nLnB5CkBAIC0wLDAgKzEsMTM1IEBACisjIS91
c3IvYmluL3B5dGhvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIENvcHlyaWdodCAoYykg
MjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjIHVzYWdlOiBydWxlX2Jp
bmRpbmcucHkgSU5QVVQgQ1BQRElSIEhESVIgLS0gSU5QVVRTIC0tIE9QVElPTlMKKyMKKyMgSU5Q
VVQgaXMgYW4gSURMIGZpbGUsIHN1Y2ggYXMgV2hhdGV2ZXIuaWRsLgorIworIyBDUFBESVIgaXMg
dGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIFY4V2hhdGV2ZXIuY3BwIHdpbGwgYmUgcGxhY2VkLiBI
RElSIGlzCisjIHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCBWOFdoYXRldmVyLmggd2lsbCBiZSBw
bGFjZWQuCisjCisjIFRoZSBmaXJzdCBpdGVtIGluIElOUFVUUyBpcyB0aGUgcGF0aCB0byBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gUmVtYWluaW5nCisjIGl0ZW1zIGluIElOUFVUUyBhcmUgdXNlZCB0
byBidWlsZCB0aGUgUGVybCBtb2R1bGUgaW5jbHVkZSBwYXRoLgorIworIyBPUFRJT05TIGFyZSBw
YXNzZWQgYXMtaXMgdG8gZ2VuZXJhdGUtYmluZGluZ3MucGwgYXMgYWRkaXRpb25hbCBhcmd1bWVu
dHMuCisKKworaW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCBzaGxleAoraW1wb3J0IHNo
dXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgU3BsaXRBcmdzSW50
b1NlY3Rpb25zKGFyZ3MpOgorICAgIHNlY3Rpb25zID0gW10KKyAgICB3aGlsZSBsZW4oYXJncykg
PiAwOgorICAgICAgICBpZiBub3QgJy0tJyBpbiBhcmdzOgorICAgICAgICAgICAgIyBJZiB0aGVy
ZSBpcyBubyAnLS0nIGxlZnQsIGV2ZXJ5dGhpbmcgcmVtYWluaW5nIGlzIGFuIGVudGlyZSBzZWN0
aW9uLgorICAgICAgICAgICAgZGFzaGVzID0gbGVuKGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBkYXNoZXMgPSBhcmdzLmluZGV4KCctLScpCisKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKGFyZ3NbOmRhc2hlc10pCisKKyAgICAgICAgIyBOZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9v
cCwgbG9vayBhdCBldmVyeXRoaW5nIGFmdGVyIHRoaXMgJy0tJy4KKyAgICAgICAgaWYgZGFzaGVz
ICsgMSA9PSBsZW4oYXJncyk6CisgICAgICAgICAgICAjIElmIHRoZSAnLS0nIGlzIGF0IHRoZSBl
bmQgb2YgdGhlIGxpc3QsIHdlIHdvbid0IGNvbWUgYmFjayB0aHJvdWdoIHRoZQorICAgICAgICAg
ICAgIyBsb29wIGFnYWluLiBBZGQgYW4gZW1wdHkgc2VjdGlvbiBub3cgY29ycmVzcG9uZGluZyB0
byB0aGUgbm90aGluZ25lc3MKKyAgICAgICAgICAgICMgZm9sbG93aW5nIHRoZSBmaW5hbCAnLS0n
LgorICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoYXJn
cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzW2Rhc2hlcyArIDE6XQor
CisgICAgcmV0dXJuIHNlY3Rpb25zCisKKworZGVmIG1haW4oYXJncyk6CisgICAgc2VjdGlvbnMg
PSBTcGxpdEFyZ3NJbnRvU2VjdGlvbnMoYXJnc1sxOl0pCisgICAgYXNzZXJ0IGxlbihzZWN0aW9u
cykgPT0gMywgc2VjdGlvbnMKKyAgICAoYmFzZSwgaW5wdXRzLCBvcHRpb25zKSA9IHNlY3Rpb25z
CisKKyAgICBhc3NlcnQgbGVuKGJhc2UpID09IDMsIGJhc2UKKyAgICAoaW5wdXQsIGNwcGRpciwg
aGRpcikgPSBiYXNlCisKKyAgICBhc3NlcnQgbGVuKGlucHV0cykgPiAxLCBpbnB1dHMKKyAgICBn
ZW5lcmF0ZUJpbmRpbmdzID0gaW5wdXRzWzBdCisgICAgcGVybE1vZHVsZXMgPSBpbnB1dHNbMTpd
CisKKyAgICBpbmNsdWRlRGlycyA9IFtdCisgICAgZm9yIHBlcmxNb2R1bGUgaW4gcGVybE1vZHVs
ZXM6CisgICAgICAgIGluY2x1ZGVEaXIgPSBvcy5wYXRoLmRpcm5hbWUocGVybE1vZHVsZSkKKyAg
ICAgICAgaWYgbm90IGluY2x1ZGVEaXIgaW4gaW5jbHVkZURpcnM6CisgICAgICAgICAgICBpbmNs
dWRlRGlycy5hcHBlbmQoaW5jbHVkZURpcikKKworICAgICMgVGhlIGRlZmluZXMgY29tZSBpbiBh
cyBvbmUgZmxhdCBzdHJpbmcuIFNwbGl0IGl0IHVwIGludG8gZGlzdGluY3QgYXJndW1lbnRzLgor
ICAgIGlmICctLWRlZmluZXMnIGluIG9wdGlvbnM6CisgICAgICAgIGRlZmluZXNJbmRleCA9IG9w
dGlvbnMuaW5kZXgoJy0tZGVmaW5lcycpCisgICAgICAgIGlmIGRlZmluZXNJbmRleCArIDEgPCBs
ZW4ob3B0aW9ucyk6CisgICAgICAgICAgICBzcGxpdE9wdGlvbnMgPSBzaGxleC5zcGxpdChvcHRp
b25zW2RlZmluZXNJbmRleCArIDFdKQorICAgICAgICAgICAgaWYgc3BsaXRPcHRpb25zOgorICAg
ICAgICAgICAgICAgIG9wdGlvbnNbZGVmaW5lc0luZGV4ICsgMV0gPSAnICcuam9pbihzcGxpdE9w
dGlvbnMpCisKKyAgICAjIEJ1aWxkIHVwIHRoZSBjb21tYW5kLgorICAgIGNvbW1hbmQgPSBbJ3Bl
cmwnLCAnLXcnXQorICAgIGZvciBpbmNsdWRlRGlyIGluIGluY2x1ZGVEaXJzOgorICAgICAgICBj
b21tYW5kLmV4dGVuZChbJy1JJywgaW5jbHVkZURpcl0pCisgICAgY29tbWFuZC5hcHBlbmQoZ2Vu
ZXJhdGVCaW5kaW5ncykKKyAgICBjb21tYW5kLmV4dGVuZChvcHRpb25zKQorICAgIGNvbW1hbmQu
ZXh0ZW5kKFsnLS1vdXRwdXREaXInLCBjcHBkaXIsIGlucHV0XSkKKworICAgICMgRG8gaXQuIGNo
ZWNrX2NhbGwgaXMgbmV3IGluIDIuNSwgc28gc2ltdWxhdGUgaXRzIGJlaGF2aW9yIHdpdGggY2Fs
bCBhbmQKKyAgICAjIGFzc2VydC4KKyAgICByZXR1cm5Db2RlID0gc3VicHJvY2Vzcy5jYWxsKGNv
bW1hbmQpCisgICAgYXNzZXJ0IHJldHVybkNvZGUgPT0gMAorCisgICAgIyBCb3RoIHRoZSAuY3Bw
IGFuZCAuaCB3ZXJlIGdlbmVyYXRlZCBpbiBjcHBkaXIsIGJ1dCBpZiBoZGlyIGlzIGRpZmZlcmVu
dCwKKyAgICAjIHRoZSAuaCBuZWVkcyB0byBtb3ZlLiBDb3B5IGl0IGluc3RlYWQgb2YgdXNpbmcg
b3MucmVuYW1lIGZvciBtYXhpbXVtCisgICAgIyBwb3J0YWJpbGl0eSBpbiBhbGwgY2FzZXMuCisg
ICAgaWYgY3BwZGlyICE9IGhkaXI6CisgICAgICAgIGlucHV0QmFzZW5hbWUgPSBvcy5wYXRoLmJh
c2VuYW1lKGlucHV0KQorICAgICAgICAocm9vdCwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQoaW5w
dXRCYXNlbmFtZSkKKyAgICAgICAgaG5hbWUgPSAnVjglcy5oJyAlIHJvb3QKKyAgICAgICAgaHNy
YyA9IG9zLnBhdGguam9pbihjcHBkaXIsIGhuYW1lKQorICAgICAgICBoZHN0ID0gb3MucGF0aC5q
b2luKGhkaXIsIGhuYW1lKQorICAgICAgICBzaHV0aWwuY29weWZpbGUoaHNyYywgaGRzdCkKKyAg
ICAgICAgb3MudW5saW5rKGhzcmMpCisKKyAgICByZXR1cm4gcmV0dXJuQ29kZQorCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weSBiL1dlYkNv
cmUvV2ViQ29yZS5neXAvc2NyaXB0cy9ydWxlX2Jpc29uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLmViODVhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwL3NjcmlwdHMvcnVsZV9iaXNvbi5weQpAQCAtMCwwICsxLDEwMiBAQAorIyEvdXNyL2Jp
bi9weXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBDb3B5cmlnaHQgKGMpIDIwMDkg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyB1c2FnZTogcnVsZV9iaXNvbi5w
eSBJTlBVVF9GSUxFIE9VVFBVVF9ESVIKKyMgSU5QVVRfRklMRSBpcyBhIHBhdGggdG8gZWl0aGVy
IENTU0dyYW1tYXIueSBvciBYUGF0aEdyYW1tYXIueS4KKyMgT1VUUFVUX0RJUiBpcyB3aGVyZSB0
aGUgYmlzb24tZ2VuZXJhdGVkIC5jcHAgYW5kIC5oIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQuCisK
K2ltcG9ydCBlcnJubworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnByb2Nl
c3MKK2ltcG9ydCBzeXMKKworYXNzZXJ0IGxlbihzeXMuYXJndikgPT0gMworCitpbnB1dEZpbGUg
PSBzeXMuYXJndlsxXQorb3V0cHV0RGlyID0gc3lzLmFyZ3ZbMl0KKworaW5wdXROYW1lID0gb3Mu
cGF0aC5iYXNlbmFtZShpbnB1dEZpbGUpCithc3NlcnQgaW5wdXROYW1lID09ICdDU1NHcmFtbWFy
LnknIG9yIGlucHV0TmFtZSA9PSAnWFBhdGhHcmFtbWFyLnknCitwcmVmaXggPSB7J0NTU0dyYW1t
YXIueSc6ICdjc3N5eScsICdYUGF0aEdyYW1tYXIueSc6ICd4cGF0aHl5J31baW5wdXROYW1lXQor
CisoaW5wdXRSb290LCBpbnB1dEV4dCkgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0TmFtZSkKKwor
IyBUaGUgZ2VuZXJhdGVkIC5oIHdpbGwgYmUgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24gZGVwZW5k
aW5nIG9uIHRoZSBiaXNvbgorIyB2ZXJzaW9uLgorb3V0cHV0SFRyaWVzID0gWworICAgIG9zLnBh
dGguam9pbihvdXRwdXREaXIsIGlucHV0Um9vdCArICcuY3BwLmgnKSwKKyAgICBvcy5wYXRoLmpv
aW4ob3V0cHV0RGlyLCBpbnB1dFJvb3QgKyAnLmhwcCcpLAorXQorCitmb3Igb3V0cHV0SFRyeSBp
biBvdXRwdXRIVHJpZXM6CisgICAgdHJ5OgorICAgICAgICBvcy51bmxpbmsob3V0cHV0SFRyeSkK
KyAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9F
TlQ6CisgICAgICAgICAgICByYWlzZQorCitvdXRwdXRDcHAgPSBvcy5wYXRoLmpvaW4ob3V0cHV0
RGlyLCBpbnB1dFJvb3QgKyAnLmNwcCcpCisKK3JldHVybkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwo
WydiaXNvbicsICctZCcsICctcCcsIHByZWZpeCwgaW5wdXRGaWxlLCAnLW8nLCBvdXRwdXRDcHBd
KQorYXNzZXJ0IHJldHVybkNvZGUgPT0gMAorCisjIEZpbmQgdGhlIG5hbWUgdGhhdCBiaXNvbiB1
c2VkIGZvciB0aGUgZ2VuZXJhdGVkIGhlYWRlciBmaWxlLgorb3V0cHV0SFRtcCA9IE5vbmUKK2Zv
ciBvdXRwdXRIVHJ5IGluIG91dHB1dEhUcmllczoKKyAgICB0cnk6CisgICAgICAgIG9zLnN0YXQo
b3V0cHV0SFRyeSkKKyAgICAgICAgb3V0cHV0SFRtcCA9IG91dHB1dEhUcnkKKyAgICAgICAgYnJl
YWsKKyAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5F
Tk9FTlQ6CisgICAgICAgICAgICByYWlzZQorCithc3NlcnQgb3V0cHV0SFRtcCAhPSBOb25lCisK
KyMgUmVhZCB0aGUgaGVhZGVyIGZpbGUgaW4gdW5kZXIgdGhlIGdlbmVyYXRlZCBuYW1lIGFuZCBy
ZW1vdmUgaXQuCitvdXRwdXRIRmlsZSA9IG9wZW4ob3V0cHV0SFRtcCkKK291dHB1dEhDb250ZW50
cyA9IG91dHB1dEhGaWxlLnJlYWQoKQorb3V0cHV0SEZpbGUuY2xvc2UoKQorb3MudW5saW5rKG91
dHB1dEhUbXApCisKKyMgUmV3cml0ZSB0aGUgZ2VuZXJhdGVkIGhlYWRlciB3aXRoICNpbmNsdWRl
IGd1YXJkcy4KK291dHB1dEggPSBvcy5wYXRoLmpvaW4ob3V0cHV0RGlyLCBpbnB1dFJvb3QgKyAn
LmgnKQorCitvdXRwdXRIRmlsZSA9IG9wZW4ob3V0cHV0SCwgJ3cnKQorcHJpbnQgPj5vdXRwdXRI
RmlsZSwgJyNpZm5kZWYgJXNIJyAlIGlucHV0Um9vdAorcHJpbnQgPj5vdXRwdXRIRmlsZSwgJyNk
ZWZpbmUgJXNIJyAlIGlucHV0Um9vdAorcHJpbnQgPj5vdXRwdXRIRmlsZSwgb3V0cHV0SENvbnRl
bnRzCitwcmludCA+Pm91dHB1dEhGaWxlLCAnI2VuZGlmJworb3V0cHV0SEZpbGUuY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL3J1bGVfZ3BlcmYucHkgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvcnVsZV9ncGVyZi5weQpuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwLi5lNzZlZDZmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9zY3JpcHRzL3J1bGVfZ3BlcmYucHkKQEAgLTAsMCArMSw4NSBAQAorIyEvdXNy
L2Jpbi9weXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6Cisj
IAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MDkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyB1c2FnZTogcnVsZV9ncGVy
Zi5weSBJTlBVVF9GSUxFIE9VVFBVVF9ESVIKKyMgSU5QVVRfRklMRSBpcyBhIHBhdGggdG8gRG9j
VHlwZVN0cmluZ3MuZ3BlcmYsIEhUTUxFbnRpdHlOYW1lcy5ncGVyZiwgb3IKKyMgQ29sb3JEYXRh
LmdwZXJmLgorIyBPVVRQVVRfRElSIGlzIHdoZXJlIHRoZSBncGVyZi1nZW5lcmF0ZWQgLmNwcCBm
aWxlIHNob3VsZCBiZSBwbGFjZWQuIEJlY2F1c2UKKyMgc29tZSB1c2VycyB3YW50IGEgLmMgZmls
ZSBpbnN0ZWFkIG9mIGEgLmNwcCBmaWxlLCB0aGUgLmNwcCBmaWxlIGlzIGNvcGllZAorIyB0byAu
YyB3aGVuIGRvbmUuCisKK2ltcG9ydCBwb3NpeHBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK2Fzc2VydCBsZW4oc3lzLmFyZ3YpID09IDMKKworaW5w
dXRGaWxlID0gc3lzLmFyZ3ZbMV0KK291dHB1dERpciA9IHN5cy5hcmd2WzJdCisKK2dwZXJmQ29t
bWFuZHMgPSB7CisgICAgJ0RvY1R5cGVTdHJpbmdzLmdwZXJmJzogWworICAgICAgICAnLUNFb3Qn
LCAnLUwnLCAnQU5TSS1DJywgJy1rKicsICctTicsICdmaW5kRG9jdHlwZUVudHJ5JywKKyAgICAg
ICAgJy1GJywgJyxQdWJJREluZm86OmVBbG1vc3RTdGFuZGFyZHMsUHViSURJbmZvOjplQWxtb3N0
U3RhbmRhcmRzJworICAgIF0sCisgICAgJ0hUTUxFbnRpdHlOYW1lcy5ncGVyZic6IFsKKyAgICAg
ICAgJy1hJywgJy1MJywgJ0FOU0ktQycsICctQycsICctRycsICctYycsICctbycsICctdCcsICct
ayonLAorICAgICAgICAnLU4nLCAnZmluZEVudGl0eScsICctRCcsICctcycsICcyJworICAgIF0s
CisgICAgJ0NvbG9yRGF0YS5ncGVyZic6IFsKKyAgICAgICAgJy1DREVvdCcsICctTCcsICdBTlNJ
LUMnLCAnLWsqJywgJy1OJywgJ2ZpbmRDb2xvcicsICctRCcsICctcycsICcyJworICAgIF0sCit9
CisKK2lucHV0TmFtZSA9IHBvc2l4cGF0aC5iYXNlbmFtZShpbnB1dEZpbGUpCithc3NlcnQgaW5w
dXROYW1lIGluIGdwZXJmQ29tbWFuZHMKKworKGlucHV0Um9vdCwgaW5wdXRFeHQpID0gcG9zaXhw
YXRoLnNwbGl0ZXh0KGlucHV0TmFtZSkKK291dHB1dENwcCA9IHBvc2l4cGF0aC5qb2luKG91dHB1
dERpciwgaW5wdXRSb290ICsgJy5jcHAnKQorCisjY29tbWFuZCA9IFsnZ3BlcmYnLCAnLS1vdXRw
dXQtZmlsZScsIG91dHB1dENwcF0KK2NvbW1hbmQgPSBbJ2dwZXJmJ10KK2NvbW1hbmQuZXh0ZW5k
KGdwZXJmQ29tbWFuZHNbaW5wdXROYW1lXSkKK2NvbW1hbmQuYXBwZW5kKGlucHV0RmlsZSkKKwor
b2ZpbGUgPSBvcGVuKG91dHB1dENwcCwgJ3cnKQorCisjIERvIGl0LiBjaGVja19jYWxsIGlzIG5l
dyBpbiAyLjUsIHNvIHNpbXVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIGNhbGwgYW5kCisjIGFzc2Vy
dC4KK3JldHVybkNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCwgc3Rkb3V0PW9maWxlLmZp
bGVubygpKQorYXNzZXJ0IHJldHVybkNvZGUgPT0gMAorCitvdXRwdXRDID0gcG9zaXhwYXRoLmpv
aW4ob3V0cHV0RGlyLCBpbnB1dFJvb3QgKyAnLmMnKQorc2h1dGlsLmNvcHlmaWxlKG91dHB1dENw
cCwgb3V0cHV0QykK
</data>

          </attachment>
      

    </bug>

</bugzilla>