<?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>192081</bug_id>
          
          <creation_ts>2018-11-28 09:41:18 -0800</creation_ts>
          <short_desc>Update scripts for generating .xcfilelist files</short_desc>
          <delta_ts>2018-12-04 09:05:19 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482464</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-11-28 09:41:18 -0800</bug_when>
    <thetext>The initial pass at generate-xcfilelists (a script for creating/updating the .xcfilelist files needed for various Generate Foo Source build phases in Xcode) only generated the .xcfilelist files that held the output files; it did not generate the list of input files. As well, for the sources generated by DerivedSources.make makefiles, the script accomplished this via the implementation of a convention in the makefile that allowed the printing of these output files when invoked with the &apos;print_all_generated_files&apos; target. Use of this convention is inconvenient and error-prone.

The script is now updated to address both of these issues. First, it generates for the input and output sets of files. Second, it does away with the convention in the DerivedSources.make makefiles and instead works from the dependency output information printed when `make` is invoked with --debug. This second part is implemented in the new script extract-dependencies-from-makefile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482465</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-28 09:42:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/46312290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482467</commentid>
    <comment_count>2</comment_count>
      <attachid>355880</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-11-28 09:46:00 -0800</bug_when>
    <thetext>Created attachment 355880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482623</commentid>
    <comment_count>3</comment_count>
      <attachid>355880</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-28 13:35:06 -0800</bug_when>
    <thetext>Comment on attachment 355880
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=355880&amp;action=review

&gt; Tools/ChangeLog:37
&gt; +        * Scripts/generate-xcfilelists:

When is this script intended to be used?  Is it part of the build system, or just something that people run when they add new files or change dependencies?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482629</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-11-28 13:40:56 -0800</bug_when>
    <thetext>I&apos;m working on the story for when it can be used. Right now, it&apos;s just something I ran by hand. I&apos;m considering adding a build step that will run it in order to check the existing .xcfilelists so that people can then regenerate them and restart the build. Unfortunately, I can&apos;t run it during the build and create up-to-date .xcfilelists on-the-fly because XCBuild needs them before the build starts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482854</commentid>
    <comment_count>5</comment_count>
      <attachid>355880</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-28 23:11:42 -0800</bug_when>
    <thetext>Comment on attachment 355880
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=355880&amp;action=review

&gt; Tools/Scripts/extract-dependencies-from-makefile:5
&gt; +# Copyright (C) 2011 Apple Inc. All rights reserved.

2011?

&gt; Tools/Scripts/extract-dependencies-from-makefile:16
&gt; +# 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of

We use a 2-clause copyright now.

&gt; Tools/Scripts/generate-xcfilelists:204
&gt; +        ${BUILT_PRODUCTS_DIR}/usr/local/include/WebKitAdditions
&gt; +        ${SDKROOT}/usr/local/include/WebKitAdditions

These lists look fragile.  What are they needed for?
Also, I&apos;m pretty sure it&apos;s wrong to look in the sdk and build directory for WebKitAdditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482945</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-11-29 07:45:17 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 355880 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355880&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/extract-dependencies-from-makefile:5
&gt; &gt; +# Copyright (C) 2011 Apple Inc. All rights reserved.
&gt; 
&gt; 2011?

Bah.

&gt; &gt; Tools/Scripts/extract-dependencies-from-makefile:16
&gt; &gt; +# 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
&gt; 
&gt; We use a 2-clause copyright now.

What&apos;s a 2-clause copyright? What&apos;s a better source from which I should copy?

&gt; &gt; Tools/Scripts/generate-xcfilelists:204
&gt; &gt; +        ${BUILT_PRODUCTS_DIR}/usr/local/include/WebKitAdditions
&gt; &gt; +        ${SDKROOT}/usr/local/include/WebKitAdditions
&gt; 
&gt; These lists look fragile.  What are they needed for?
&gt; Also, I&apos;m pretty sure it&apos;s wrong to look in the sdk and build directory for
&gt; WebKitAdditions.

The values for the various FOO_SEARCH_PATHS variables were taken from build output. I then replaced the host-specific absolute paths with the appropriate environment variables. In the case of the above, the values come from BaseTarget.xcconfig:

WEBKITADDITIONS_HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include/WebKitAdditions $(SDKROOT)/usr/local/include/WebKitAdditions;
...
HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include &quot;$(WEBCORE_PRIVATE_HEADERS_DIR)/ForwardingHeaders&quot; $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2 $(WEBKITADDITIONS_HEADER_SEARCH_PATHS) $(LIBWEBRTC_HEADER_SEARCH_PATHS) $(SRCROOT) $(HEADER_SEARCH_PATHS);

I copy those values into generate-xcfilelists because I invoke DerivedSources.make, which references those variables. When I do that, it&apos;s important for the environments of that invocation and that of xcodebuild are the same. If the definitions of the variables change between the time I invoke DerivedSources.make and the time xcodebuild invokes DerivedSources.make, then that makefile may provide differing output.

Yes, this is fragile, since it means that the generate-xcfilelists script needs to be in-sync with the xcconfig file. I&apos;m not, however, sure of an alternative. Do you have a suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484512</commentid>
    <comment_count>7</comment_count>
      <attachid>355880</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-12-03 14:28:11 -0800</bug_when>
    <thetext>Comment on attachment 355880
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=355880&amp;action=review

&gt;&gt; Tools/ChangeLog:37
&gt;&gt; +        * Scripts/generate-xcfilelists:
&gt; 
&gt; When is this script intended to be used?  Is it part of the build system, or just something that people run when they add new files or change dependencies?

Good question. What say you, Keith?

&gt;&gt;&gt; Tools/Scripts/extract-dependencies-from-makefile:16
&gt;&gt;&gt; +# 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
&gt;&gt; 
&gt;&gt; We use a 2-clause copyright now.
&gt; 
&gt; What&apos;s a 2-clause copyright? What&apos;s a better source from which I should copy?

See the copyright text in &apos;HTMLMediaElement.cpp&quot; for example. It&apos;s just a more recent version of our preferred license header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484646</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-12-03 17:55:05 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #7)
&gt; Comment on attachment 355880 [details]
&gt; Patch
&gt; &gt; When is this script intended to be used?  Is it part of the build system, or just something that people run when they add new files or change dependencies?
&gt; 
&gt; Good question. What say you, Keith?

I say I addressed it in comment #4. I need the patch in this bug to land before I can submit that work, since that work depends on the generate-xcfilelists in this bug.

I&apos;ll get on the bit about the copyright and clauses Tuesday or Wednesday (I&apos;m out sick from work right now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484705</commentid>
    <comment_count>9</comment_count>
      <attachid>356458</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2018-12-03 21:26:48 -0800</bug_when>
    <thetext>Created attachment 356458
Updated copyright header and date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484835</commentid>
    <comment_count>10</comment_count>
      <attachid>356458</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-12-04 08:38:54 -0800</bug_when>
    <thetext>Comment on attachment 356458
Updated copyright header and date.

lgtm. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484841</commentid>
    <comment_count>11</comment_count>
      <attachid>356458</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-04 09:05:18 -0800</bug_when>
    <thetext>Comment on attachment 356458
Updated copyright header and date.

Clearing flags on attachment: 356458

Committed r238854: &lt;https://trac.webkit.org/changeset/238854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484842</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-04 09:05:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355880</attachid>
            <date>2018-11-28 09:46:00 -0800</date>
            <delta_ts>2018-12-03 21:26:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192081-20181128094559.patch</filename>
            <type>text/plain</type>
            <size>29341</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTU3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhOGQ1MGI3NDIwNDhjNGFhNWYzNGEzOWI1NTQ5MjZk
ZTg0MWY3Zi4uZjBjMWViMWZjNTU1MTBiNWRiMTZmOWMyNWQwZWU2MmU5NGU3OTI1NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE4LTExLTI4ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgc2NyaXB0cyBmb3IgZ2VuZXJhdGluZyAueGNmaWxlbGlzdCBmaWxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDgxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80NjMxMjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW5pdGlhbCBwYXNzIGF0IGdlbmVyYXRlLXhjZmls
ZWxpc3RzIChhIHNjcmlwdCBmb3IKKyAgICAgICAgY3JlYXRpbmcvdXBkYXRpbmcgdGhlIC54Y2Zp
bGVsaXN0IGZpbGVzIG5lZWRlZCBmb3IgdmFyaW91cyBHZW5lcmF0ZQorICAgICAgICBGb28gU291
cmNlIGJ1aWxkIHBoYXNlcyBpbiBYY29kZSkgb25seSBnZW5lcmF0ZWQgdGhlIC54Y2ZpbGVsaXN0
IGZpbGVzCisgICAgICAgIHRoYXQgaGVsZCB0aGUgb3V0cHV0IGZpbGVzOyBpdCBkaWQgbm90IGdl
bmVyYXRlIHRoZSBsaXN0IG9mIGlucHV0CisgICAgICAgIGZpbGVzLiBBcyB3ZWxsLCBmb3IgdGhl
IHNvdXJjZXMgZ2VuZXJhdGVkIGJ5IERlcml2ZWRTb3VyY2VzLm1ha2UKKyAgICAgICAgbWFrZWZp
bGVzLCB0aGUgc2NyaXB0IGFjY29tcGxpc2hlZCB0aGlzIHZpYSB0aGUgaW1wbGVtZW50YXRpb24g
b2YgYQorICAgICAgICBjb252ZW50aW9uIGluIHRoZSBtYWtlZmlsZSB0aGF0IGFsbG93ZWQgdGhl
IHByaW50aW5nIG9mIHRoZXNlIG91dHB1dAorICAgICAgICBmaWxlcyB3aGVuIGludm9rZWQgd2l0
aCB0aGUgJ3ByaW50X2FsbF9nZW5lcmF0ZWRfZmlsZXMnIHRhcmdldC4gVXNlIG9mCisgICAgICAg
IHRoaXMgY29udmVudGlvbiBpcyBpbmNvbnZlbmllbnQgYW5kIGVycm9yLXByb25lLgorCisgICAg
ICAgIFRoZSBzY3JpcHQgaXMgbm93IHVwZGF0ZWQgdG8gYWRkcmVzcyBib3RoIG9mIHRoZXNlIGlz
c3Vlcy4gRmlyc3QsIGl0CisgICAgICAgIGdlbmVyYXRlcyBmb3IgdGhlIGlucHV0IGFuZCBvdXRw
dXQgc2V0cyBvZiBmaWxlcy4gU2Vjb25kLCBpdCBkb2VzIGF3YXkKKyAgICAgICAgd2l0aCB0aGUg
Y29udmVudGlvbiBpbiB0aGUgRGVyaXZlZFNvdXJjZXMubWFrZSBtYWtlZmlsZXMgYW5kIGluc3Rl
YWQKKyAgICAgICAgd29ya3MgZnJvbSB0aGUgZGVwZW5kZW5jeSBvdXRwdXQgaW5mb3JtYXRpb24g
cHJpbnRlZCB3aGVuIGBtYWtlYCBpcworICAgICAgICBpbnZva2VkIHdpdGggLS1kZWJ1Zy4gVGhp
cyBzZWNvbmQgcGFydCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgbmV3CisgICAgICAgIHNjcmlwdCBl
eHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlLgorCisgICAgICAgICogU2NyaXB0cy9l
eHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlOiBBZGRlZC4KKyAgICAgICAgKFBhcnNl
cik6CisgICAgICAgIChQYXJzZXIuX19pbml0X18pOgorICAgICAgICAoUGFyc2VyLm5leHRMaW5l
KToKKyAgICAgICAgKFBhcnNlci5hZGRUYXJnZXQpOgorICAgICAgICAoUGFyc2VyLmFkZFByZXJl
cSk6CisgICAgICAgIChQYXJzZXIuZG9QYXJzZSk6CisgICAgICAgIChQYXJzZXIucHJpbnRJbnB1
dHMpOgorICAgICAgICAoUGFyc2VyLnByaW50T3V0cHV0cyk6CisgICAgICAgIChwYXJzZUFyZ3Mp
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS14Y2ZpbGVsaXN0
czoKKwogMjAxOC0xMS0yNyAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIGdlbmVyYXRlLXtkZXJpdmVkLHVuaWZpZWR9LXNvdXJjZXMgc2NyaXB0cyB0
byBzdXBwb3J0IGdlbmVyYXRpbmcgLnhjZmlsZWxpc3QgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvZXh0cmFjdC1kZXBlbmRlbmNpZXMtZnJvbS1tYWtlZmlsZSBiL1Rvb2xzL1Njcmlw
dHMvZXh0cmFjdC1kZXBlbmRlbmNpZXMtZnJvbS1tYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmRmM2Zi
YmRhN2RkZGFiMTRkMGQ2MDlmYmRjZjVhM2U5Y2FjZjFkCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy9leHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlCkBAIC0wLDAgKzEs
MTM3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgdmltOiBzZXQgZnQ9cHl0aG9uOgorIyAt
Ki0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisj
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgRXh0cmFjdCBkZXBlbmRl
bmN5IGluZm9ybWF0aW9uIGZyb20gdGhlIG91dHB1dCBvZiBgbWFrZSAtZGAsIGdlbmVyYXRpbmcg
YQorIyBsaXN0IG9mIHRvcC1sZXZlbCB0YXJnZXRzICh3aGljaCBhcmUgYXNzdW1lZCB0byBiZSBn
ZW5lcmF0ZWQvb3V0cHV0IGZpbGVzKQorIyBhbmQgYSBsaXN0IG9mIGxlYWYgZGVwZW5kZW5jaWVz
ICh3aGljaCBhcmUgYXNzdW1lZCB0byBiZSB0aGUgYmFzZSBpbnB1dAorIyBmaWxlcykuIFJlYWQg
dGhlIG1ha2UgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBmcm9tIHN0ZGluIGFuZCB3cml0ZSB0aGUg
cmVzdWx0cworIyB0byB0aGUgc3BlY2lmaWVkIGZpbGVzLgorCisKK2Zyb20gX19mdXR1cmVfXyBp
bXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgcmUKK2ltcG9y
dCBzeXMKKworCitjbGFzcyBQYXJzZXIob2JqZWN0KToKKworICAgIGZpbGVOYW1lUGF0dGVybiAg
ICAgICAgID0gciJgKFteJ10rKSciCisgICAgcmVQcmVyZXF1aXNpdGUgICAgICAgICAgPSByZS5j
b21waWxlKHIiUHJlcmVxdWlzaXRlIHt9IGlzIC4qIHRoYW4gdGFyZ2V0IHt9Ii5mb3JtYXQoZmls
ZU5hbWVQYXR0ZXJuLCBmaWxlTmFtZVBhdHRlcm4pKQorICAgIHJlV2FzQ29uc2lkZXJlZEFscmVh
ZHkgID0gcmUuY29tcGlsZShyInt9IHdhcyBjb25zaWRlcmVkIGFscmVhZHkuIi5mb3JtYXQoZmls
ZU5hbWVQYXR0ZXJuKSkKKyAgICByZVBydW5pbmdGaWxlICAgICAgICAgICA9IHJlLmNvbXBpbGUo
ciJQcnVuaW5nIGZpbGUge30uIi5mb3JtYXQoZmlsZU5hbWVQYXR0ZXJuKSkKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50YXJnZXRzID0ge30KKyAgICAgICAgc2VsZi5w
cmVyZXFzID0ge30KKworICAgIGRlZiBuZXh0TGluZShzZWxmLCBpbnB1dCk6CisgICAgICAgIHdo
aWxlIFRydWU6CisgICAgICAgICAgICBsaW5lID0gaW5wdXQucmVhZGxpbmUoKQorICAgICAgICAg
ICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisg
ICAgICAgICAgICBpZiBsaW5lOiB5aWVsZCBsaW5lCisKKyAgICBkZWYgYWRkVGFyZ2V0KHNlbGYs
IHRhcmdldCk6CisgICAgICAgIHNlbGYudGFyZ2V0c1t0YXJnZXRdID0gMQorCisgICAgZGVmIGFk
ZFByZXJlcShzZWxmLCBwcmVyZXEpOgorICAgICAgICBzZWxmLnByZXJlcXNbcHJlcmVxXSA9IDEK
KworICAgIGRlZiBkb1BhcnNlKHNlbGYsIGlucHV0KToKKworICAgICAgICAjIFB1bGwgb3V0IGV2
ZXJ5dGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgdGFyZ2V0IG9yIHByZXJlcXVpc2l0ZS4KKworICAg
ICAgICBmb3IgbGluZSBpbiBzZWxmLm5leHRMaW5lKGlucHV0KToKKyAgICAgICAgICAgIG0gPSBQ
YXJzZXIucmVQcmVyZXF1aXNpdGUuc2VhcmNoKGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAg
ICAgICAgICAgICAgIHNlbGYuYWRkVGFyZ2V0KG0uZ3JvdXAoMikpCisgICAgICAgICAgICAgICAg
c2VsZi5hZGRQcmVyZXEobS5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICBtID0gUGFyc2VyLnJlV2FzQ29uc2lkZXJlZEFscmVhZHkuc2VhcmNoKGxpbmUp
CisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkVGFyZ2V0KG0uZ3Jv
dXAoMSkpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbSA9IFBhcnNl
ci5yZVBydW5pbmdGaWxlLnNlYXJjaChsaW5lKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAg
ICAgICAgICBzZWxmLmFkZFByZXJlcShtLmdyb3VwKDEpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgIyBSZWdhcmRpbmcgcHJlcmVxdWlzaXRlcywgd2UncmUgaW50ZXJlc3Rl
ZCBpbiBvbmx5IHRob3NlIHRoYXQgYXJlbid0CisgICAgICAgICMgYWxzbyB0YXJnZXRzLiBXZSBv
bmx5IHdhbnQgb25lcyB0aGF0IGRvbid0IGhhdmUgYnVpbGQgcnVsZXMsIGFuZAorICAgICAgICAj
IGhlbmNlIG11c3QgYWxyZWFkeSBleGlzdC4gVGhvc2UgYXJlIG91ciBpbnB1dHMuCisKKyAgICAg
ICAgZm9yIGtleSBpbiBzZWxmLnRhcmdldHMua2V5cygpOgorICAgICAgICAgICAgc2VsZi5wcmVy
ZXFzLnBvcChrZXksIE5vbmUpCisKKyAgICBkZWYgcHJpbnRJbnB1dHMoc2VsZiwgaW5wdXRzRmls
ZSk6CisgICAgICAgIHdpdGggb3BlbihpbnB1dHNGaWxlLCAndycpIGFzIHRvRmlsZToKKyAgICAg
ICAgICAgIFsgcHJpbnQoInt9Ii5mb3JtYXQoZiksIGZpbGUgPSB0b0ZpbGUpIGZvciBmIGluIHNv
cnRlZChzZWxmLnByZXJlcXMua2V5cygpKSBdCisKKyAgICBkZWYgcHJpbnRPdXRwdXRzKHNlbGYs
IG91dHB1dHNGaWxlKToKKyAgICAgICAgd2l0aCBvcGVuKG91dHB1dHNGaWxlLCAndycpIGFzIHRv
RmlsZToKKyAgICAgICAgICAgIFsgcHJpbnQoInt9Ii5mb3JtYXQoZiksIGZpbGUgPSB0b0ZpbGUp
IGZvciBmIGluIHNvcnRlZChzZWxmLnRhcmdldHMua2V5cygpKSBdCisKKworZGVmIHBhcnNlQXJn
cygpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKworICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLWlucHV0JywKKyAgICAgICAgbWV0YXZhcj0nPHhj
ZmlsZWxpc3Q+JywKKyAgICAgICAgdHlwZT1zdHIsCisgICAgICAgIHJlcXVpcmVkID0gVHJ1ZSwK
KyAgICAgICAgaGVscD0ncGF0aCB0byB0aGUgeGNmaWxlbGlzdCBob2xkaW5nIGlucHV0IGZpbGVz
JykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICctLW91dHB1dCcsCisgICAg
ICAgIG1ldGF2YXI9Jzx4Y2ZpbGVsaXN0PicsCisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICBy
ZXF1aXJlZCA9IFRydWUsCisgICAgICAgIGhlbHA9J3BhdGggdG8gdGhlIHhjZmlsZWxpc3QgaG9s
ZGluZyBvdXRwdXQvZ2VuZXJhdGVkIGZpbGVzJykKKworICAgIHJldHVybiBwYXJzZXIucGFyc2Vf
YXJncygpCisKKworZGVmIG1haW4oKToKKyAgICBhcmdzID0gcGFyc2VBcmdzKCkKKyAgICBwYXJz
ZXIgPSBQYXJzZXIoKQorCisgICAgcGFyc2VyLmRvUGFyc2Uoc3lzLnN0ZGluKQorICAgIHBhcnNl
ci5wcmludElucHV0cyhhcmdzLmlucHV0KQorICAgIHBhcnNlci5wcmludE91dHB1dHMoYXJncy5v
dXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUteGNmaWxlbGlzdHMgYi9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLXhjZmlsZWxpc3RzCmluZGV4IGExMjRlOTEwY2MzMzE5Mjg0YjZkYjIxN2IyMjQ5
MTY4NTM3ZjJhNjUuLmU0NDY3Y2IyMjYwNzU2NGZlMWIxOGMyNjBhN2IzNjY5MTY2YjAwZGUgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUteGNmaWxlbGlzdHMKKysrIGIvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS14Y2ZpbGVsaXN0cwpAQCAtMSw0ICsxLDQgQEAKLSMhL2Jpbi9iYXNo
CisjIS9iaW4vc2gKIAogIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKQEAgLTI3LDE5ICsyNywyMSBAQAogIyBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAKLSMgVGhp
cyBzY3JpcHQgZ2VuZXJhdGVzIC54Y2ZpbGVsaXN0IGZpbGVzIHRvIGJlIHVzZWQgYXMgb3V0cHV0
IHNwZWNpZmljYXRpb25zCi0jIG9mIFJ1biBTY3JpcHQgYnVpbGQgcGhhc2VzLgorIyBUaGlzIHNj
cmlwdCBnZW5lcmF0ZXMgLnhjZmlsZWxpc3QgZmlsZXMgdG8gYmUgdXNlZCBhcyBpbnB1dCBhbmQg
b3V0cHV0CisjIHNwZWNpZmljYXRpb25zIG9mIFJ1biBTY3JpcHQgYnVpbGQgcGhhc2VzLgogIwog
IyBDdXJyZW50bHksIHRoaXMgc2NyaXB0IGxvb2tzIGF0IHRoZSBHZW5lcmF0ZSBEZXJpdmVkIFNv
dXJjZXMgYW5kIEdlbmVyYXRlCiAjIFVuaWZpZWQgU291cmNlcyBidWlsZCBwaGFzZXMuIEZvciB0
aGUgZm9ybWVyLCBpdCBpbnZva2VzIHRoZQotIyBEZXJpdmVkU291cmNlcy5tYWtlIG1ha2VmaWxl
LCBwYXNzaW5nIGluIGEgdGFyZ2V0IHRoYXQgcmVzdWx0cyBpbiB0aGUgbmFtZXMKLSMgb2YgdGhl
IGdlbmVyYXRlZCBzb3VyY2UgZmlsZXMgYmVpbmcgcHJpbnRlZCBvdXQuIEZvciB0aGUgbGF0dGVy
LCB0aGUgc2NyaXB0Ci0jIGlzIGhhcmQtY29kZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIC5jcHAg
YW5kIC5tbSBmaWxlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgYW5kCi0jIGNyZWF0ZXMgYW4gYXBwcm9w
cmlhdGUgLnhjZmlsZWxpc3QgZmlsZXMgY292ZXJpbmcgdGhvc2UgZ2VuZXJhdGVkIGZpbGVzLgor
IyBEZXJpdmVkU291cmNlcy5tYWtlIG1ha2VmaWxlLCBwYXNzaW5nIGluIG9wdGlvbnMgdGhhdCBw
cmludCBvdXQgdGhlCisjIGRlcGVuZGVuY3kgdHJlZSBhbmQgdXNpbmcgdGhhdCBpbmZvcm1hdGlv
biB0byBmb3JtIHRoZSBhc3NvY2lhdGVkIGlucHV0IGFuZAorIyBvdXRwdXQgLnhjZmlsZWxpc3Qg
ZmlsZXMuIEZvciB0aGUgbGF0dGVyLCBpdCBpbnZva2VzIHRoZSBzYW1lCisjIGdlbmVyYXRlLXVu
aWZpZWQtYnVuZGxlcy5yYiBzY3JpcHQgdGhhdCBnZW5lcmF0ZXMgdGhlIGFjdHVhbAorIyBVbmlm
aWVkU291cmNlcyouY3BwL21tIGZpbGVzLCBhbGJlaXQgaW4gYSBtb2RlIHRoYXQgcHJvZHVjZXMg
LnhjZmlsZWxpc3QKKyMgZmlsZXMgaW5zdGVhZC4KICMKLSMgVGhlIGdlbmVyYXRlZCAueGNmaWxl
bGlzdCBmaWxlcyBhcmUgY3JlYXRlZCBpbjoKLSMKLSMgICAiJHtXRUJLSVRfRElSfS97U291cmNl
LFRvb2xzfS8ke1BST0pFQ1RfTkFNRX0vPHNvbWUtbmFtZT4ueGNmaWxlbGlzdCIKKyMgVGhlIGdl
bmVyYXRlZCBEZXJpdmVkU291cmNlcy5tYWtlIC54Y2ZpbGVsaXN0IGZpbGVzIGFyZSBjcmVhdGVk
IGluIGluIHRoZQorIyBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgRGVyaXZlZFNvdXJjZXMubWFrZSBm
aWxlLiBUaGUgZ2VuZXJhdGVkIFVuaWZpZWRTb3VyY2VzCisjIC54Y2ZpbGVsaXN0IGZpbGVzIGFy
ZSBjcmVhdGVkIGluICR7UFJPSkVDVF9ESVJ9LgogIwogIyBUaGlzIHNjcmlwdCBhc3N1bWVzIHRo
YXQgdGhlIGdlbmVyYXRlZC9kZXJpdmVkIHNvdXJjZXMgYXJlIGNyZWF0ZWQgaW4gdGhlCiAjIGZv
bGxvd2luZyBsb2NhdGlvbiwgYW5kIGluY29ycG9yYXRlcyB0aGF0IHBhdGggaW50byB0aGUgcGF0
aHMgaXQgc3RvcmVzIGluCkBAIC02MCwxMyArNjIsMzMgQEAKICMgY29tcGFyZWQgdG8gdGhlIHZl
cnNpb25zIGNoZWNrZWQgaW50byB0aGUgcmVwb3NpdG9yeS4gSWYgdGhlcmUgYXJlCiAjIGRpZmZl
cmVuY2VzLCB0aGUgdXNlciBpcyBub3RpZmllZCBzbyB0aGF0IHRoZXkga25vdyB0aGF0IHRoZSAu
eGNmaWxlbGlzdAogIyBmaWxlcyBuZWVkIHRvIGJlIHJlZ2VuZXJhdGVkLiBUaGlzIGZhY2lsaXR5
IGNhbiBiZSBpbmNvcnBvcmF0ZWQgaW50byBhCi0jIGNoZWNrLWluIGhvb2sgb3IgaW50byB0aGUg
RVdTIChwZXJoYXBzIGFzIHBhcnQgb2YgY2hlY2std2Via2l0LXN0eWxlKS4KKyMgYnVpbGQgcGhh
c2UsIGEgY2hlY2staW4gaG9vaywgb3IgaW50byB0aGUgRVdTIChwZXJoYXBzIGFzIHBhcnQgb2YK
KyMgY2hlY2std2Via2l0LXN0eWxlKS4KIAogCiBIRVJFPSIkKGNkICIkKGRpcm5hbWUgIiQwIiki
ICYmIHB3ZCAtUCkiCi1XRUJLSVRfRElSPSIkKGNkICIke0hFUkV9Ly4uLy4uIiAmJiBwd2QgLVAp
IgogCiAKKyMgUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgZXhpdC4KKworZnVuY3Rpb24gZGll
KCkKK3sKKyAgICBlY2hvICIjIyMgJEAiIDE+JjIKKyAgICBleGl0IDEKK30KKworCisjIFV0aWxp
dHk6IHJlcGxhY2Ugb25lIHN0cmluZyB3aXRoIGFub3RoZXIgaW4gYSBmaWxlLgorCitmdW5jdGlv
biByZXBsYWNlKCkKK3sKKyAgICBGSUxFPSIkMSIKKyAgICBQQVRURVJOPSIkMiIKKyAgICBSRVBM
QUNFTUVOVD0iJDMiCisKKyAgICBzZWQgLUUgLWUgInN8XiR7UEFUVEVSTn0vfCR7UkVQTEFDRU1F
TlR9L3wiIC1pICcnICIke0ZJTEV9IgorfQorCiAjIEdpdmVuIGFuIC54Y2ZpbGVsaXN0IGxpc3Qg
ZmlsZSBjb250YWluaW5nIHBhcnRpYWwgcGF0aHMgdG8gdGhlIGdlbmVyYXRlZAogIyBmaWxlcywg
bW9kaWZ5IGVhY2ggcGF0aCB0byBhbHNvIGluY2x1ZGUgdGhlIGFjdHVhbCBsb2NhdGlvbiBvZiBn
ZW5lcmF0ZWQKICMgZmlsZXMgZm9yIHRoZSBnaXZlbiBwcm9qZWN0LiBGb3IgaW5zdGFuY2UsIG1v
ZGlmeSAiVW5pZmllZFNvdXJjZXMxLmNwcCIgdG8KQEAgLTc0LDIwICs5Niw4IEBAIFdFQktJVF9E
SVI9IiQoY2QgIiR7SEVSRX0vLi4vLi4iICYmIHB3ZCAtUCkiCiAKIGZ1bmN0aW9uIHByZXBlbmRf
cHJlZml4X3RvX2FsbF9wYXRocygpCiB7Ci0gICAgUFJPSkVDVF9OQU1FPSIkMSIKLSAgICBGSUxF
PSIkMiIKLQotICAgIGlmIFtbICIke1BST0pFQ1RfTkFNRX0iID09IFdlYktpdCBdXQotICAgIHRo
ZW4KLSAgICAgICAgREVSSVZFRF9TT1VSQ0VTX0RJUj1XZWJLaXQyCi0gICAgZWxpZiBbWyAiJHtQ
Uk9KRUNUX05BTUV9IiA9PSBXZWJLaXRMZWdhY3kgXV0KLSAgICB0aGVuCi0gICAgICAgIERFUklW
RURfU09VUkNFU19ESVI9V2ViS2l0Ci0gICAgZWxzZQotICAgICAgICBERVJJVkVEX1NPVVJDRVNf
RElSPSIke1BST0pFQ1RfTkFNRX0iCi0gICAgZmkKLQotICAgIHNlZCAtRSAtZSAic3xefFwkXChC
VUlMVF9QUk9EVUNUU19ESVJcKS9EZXJpdmVkU291cmNlcy8ke0RFUklWRURfU09VUkNFU19ESVJ9
L3wiIC1pICcnICIke0ZJTEV9IgorICAgIEZJTEU9IiQxIgorICAgIHNlZCAtRSAtZSAic3xefCR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0vfCIgLWkgJycgIiR7RklMRX0iCiB9CiAKIApAQCAtOTYsMjQg
KzEwNiwxNSBAQCBmdW5jdGlvbiBwcmVwZW5kX3ByZWZpeF90b19hbGxfcGF0aHMoKQogCiBmdW5j
dGlvbiBmaW5kX2ZpcnN0X2V4aXN0aW5nKCkKIHsKLSAgICBESVJTPSgiJEAiKQotICAgIGZvciBE
SVIgaW4gIiR7RElSU1tAXX0iCisgICAgSVRFTVM9KCIkQCIpCisgICAgZm9yIElURU0gaW4gIiR7
SVRFTVNbQF19IgogICAgIGRvCi0gICAgICAgIFtbIC14ICIke0RJUn0iIF1dICYmIHsgZWNobyAi
JHtESVJ9IjsgcmV0dXJuIDA7IH0KKyAgICAgICAgW1sgLWUgIiR7SVRFTX0iIF1dICYmIHsgZWNo
byAiJHtJVEVNfSI7IHJldHVybiAwOyB9CiAgICAgZG9uZQogICAgIHJldHVybiAxCiB9CiAKIAot
IyBVdGlsaXR5OiBnaXZlbiBhIHByb2plY3QgbmFtZSwgZmluZCB0aGUgZmlsZSBzeXN0ZW0gcGF0
aCB0byBpdC4KLQotZnVuY3Rpb24gZ2V0X3Byb2plY3RfZGlyKCkKLXsKLSAgICBsb2NhbCBQUk9K
RUNUX05BTUU9IiQxIgotICAgIGZpbmRfZmlyc3RfZXhpc3RpbmcgIiR7V0VCS0lUX0RJUn0iL3tT
b3VyY2UsVG9vbHN9LyIke1BST0pFQ1RfTkFNRX0iCi19Ci0KLQogIyBHaXZlbiBhIGNoZWNrZWQt
aW4gLnhjZmlsZWxpc3QgYW5kIGEgbmV3bHktZ2VuZXJhdGVkIG9uZSBzdG9yZWQgaW4gYQogIyB0
ZW1wb3JhcnkgbG9jYXRpb24sIGNvbXBhcmUgdGhlIHR3byB0byBzZWUgaWYgdGhlcmUgYXJlIGFu
eSBjaGFuZ2VzIHRoYXQgbmVlZAogIyB0byBiZSBhY2NvdW50ZWQgZm9yLiBJZiB0aGVyZSBhcmUg
ZGlmZmVyZW5jZXMsIHByaW50IG91dCBhIG5vdGljZSBhbmQgcHJlcApAQCAtMTM1LDEwMSArMTM2
LDMxMyBAQCBmdW5jdGlvbiBjaGVja194Y2ZpbGVsaXN0KCkKIH0KIAogCi0jIEdlbmVyYXRlIC54
Y2ZpbGVsaXN0IGZpbGVzIGZvciAidW5pZmllZCBzb3VyY2VzIiBkZXJpdmVkIGZpbGVzLiBOb3Rl
IHRoYXQKLSMgdGhpcyBmaWxlIGxpc3QgZ2VuZXJhdG9yIGFzc3VtZXMgdGhlIGxvY2F0aW9uIG9m
IHRoZSBkZXJpdmVkIGZpbGVzIChpbgotIyBwYXJ0aWN1bGFyLCB0aGF0IHRoZXkgYXJlIGJhc2Vk
IHJlbGF0aXZlIHRvICQoQlVJTFRfUFJPRFVDVFNfRElSKSByYXRoZXIKLSMgdGhhbiwgc2F5ICQo
UFJPSkVDVF9ERVJJVkVEX0ZJTEVfRElSKSkuIElmIHRoZSBYY29kZSBwcm9qZWN0cyBhcmUgcmVm
YWN0b3JlZAotIyB0byB1c2UgJChQUk9KRUNUX0RFUklWRURfRklMRV9ESVIpLCB0aGVuIHRoaXMg
c2NyaXB0IHNob3VsZCBiZSB1cGRhdGVkLCB0b28uCitmdW5jdGlvbiBzZXRfYnVpbGRfdmFyaWFi
bGVzX2Zvcl9KYXZhU2NyaXB0Q29yZSgpCit7CisgICAgUFJPSkVDVF9OQU1FPUphdmFTY3JpcHRD
b3JlCisgICAgUFJPSkVDVF9ESVI9IiR7T1BFTlNPVVJDRV9ESVJ9L1NvdXJjZS8ke1BST0pFQ1Rf
TkFNRX0iCisgICAgR0VORVJBVE9SPSIke1BST0pFQ1RfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWRl
cml2ZWQtc291cmNlcy5zaCIKKyAgICBERVJJVkVEX1NPVVJDRVNfTUFLRT0iJHtQUk9KRUNUX0RJ
Un0vRGVyaXZlZFNvdXJjZXMubWFrZSIKKyAgICBERVJJVkVEX1NPVVJDRVNfRElSPSIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvJHtQUk9KRUNUX05BTUV9IgorCisgICAgZXhw
b3J0IEZSQU1FV09SS19TRUFSQ0hfUEFUSFM9CisgICAgZXhwb3J0IEhFQURFUl9TRUFSQ0hfUEFU
SFM9IgorICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUKKyAgICAgICAgLgorICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xv
Y2FsL2luY2x1ZGUiCisgICAgZXhwb3J0IFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTPSIK
KyAgICAgICAgJHtTREtST09UfS9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3JrcyIKKyAg
ICBleHBvcnQgU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFM9Cit9CisKIAotZnVuY3Rpb24gZ2Vu
ZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV91bmlmaWVkc291cmNlcygpCitmdW5jdGlvbiBzZXRfYnVp
bGRfdmFyaWFibGVzX2Zvcl9XZWJDb3JlKCkKIHsKLSAgICBsb2NhbCBQUk9KRUNUX05BTUU9IiQx
IgotICAgIGxvY2FsIE5VTV9DUFA9JDIKLSAgICBsb2NhbCBOVU1fTU09JDMKKyAgICBQUk9KRUNU
X05BTUU9V2ViQ29yZQorICAgIFBST0pFQ1RfRElSPSIke09QRU5TT1VSQ0VfRElSfS9Tb3VyY2Uv
JHtQUk9KRUNUX05BTUV9IgorICAgIEdFTkVSQVRPUj0iJHtQUk9KRUNUX0RJUn0vU2NyaXB0cy9n
ZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giCisgICAgREVSSVZFRF9TT1VSQ0VTX01BS0U9IiR7
UFJPSkVDVF9ESVJ9L0Rlcml2ZWRTb3VyY2VzLm1ha2UiCisgICAgREVSSVZFRF9TT1VSQ0VTX0RJ
Uj0iJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzLyR7UFJPSkVDVF9OQU1FfSIK
KworICAgIGV4cG9ydCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTPSIKKyAgICAgICAgJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9IgorICAgIGV4cG9ydCBIRUFERVJfU0VBUkNIX1BBVEhTPSIKKyAgICAgICAg
UEFMCisgICAgICAgIEZvcndhcmRpbmdIZWFkZXJzCisgICAgICAgIC91c3IvaW5jbHVkZS9saWJ4
c2x0CisgICAgICAgIC91c3IvaW5jbHVkZS9saWJ4bWwyCisgICAgICAgICR7QlVJTFRfUFJPRFVD
VFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNf
RElSfS91c3IvbG9jYWwvaW5jbHVkZQorICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNy
L2xvY2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zCisgICAgICAgICR7U0RLUk9PVH0vdXNyL2xv
Y2FsL2luY2x1ZGUvV2ViS2l0QWRkaXRpb25zCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElS
fS91c3IvbG9jYWwvaW5jbHVkZS93ZWJydGMKKyAgICAgICAgJHtTREtST09UfS91c3IvbG9jYWwv
aW5jbHVkZS93ZWJydGMKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9p
bmNsdWRlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvSGVhZGVycworICAgICAgICAke1NES1JP
T1R9L3Vzci9sb2NhbC9pbmNsdWRlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvSGVhZGVycwor
ICAgICAgICAke1BST0pFQ1RfRElSfSIKKyAgICBleHBvcnQgU1lTVEVNX0ZSQU1FV09SS19TRUFS
Q0hfUEFUSFM9IgorICAgICAgICAke1NES1JPT1R9L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFt
ZXdvcmtzCisgICAgICAgICR7U0RLUk9PVH0vU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcyIKKyAg
ICBleHBvcnQgU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFM9Cit9CiAKLSAgICBsb2NhbCBYQ0ZJ
TEVMSVNUX05BTUU9IlVuaWZpZWRTb3VyY2VzLnhjZmlsZWxpc3QiCi0gICAgbG9jYWwgUFJPSkVD
VF9ESVI9IiQoZ2V0X3Byb2plY3RfZGlyICIke1BST0pFQ1RfTkFNRX0iKSIKLSAgICBsb2NhbCBY
Q0ZJTEVMSVNUX1BBVEg9IiR7UFJPSkVDVF9ESVJ9LyR7WENGSUxFTElTVF9OQU1FfSIKIAotICAg
IGlmICgoICR7RE9fQ0hFQ0t9ICkpCi0gICAgdGhlbgotICAgICAgICBlY2hvICIjIyMgQ2hlY2tp
bmc6ICR7WENGSUxFTElTVF9QQVRIfSIKLSAgICAgICAgWENGSUxFTElTVF9QQVRIX09SSUc9IiR7
WENGSUxFTElTVF9QQVRIfSIKLSAgICAgICAgWENGSUxFTElTVF9QQVRIPSIvdG1wLyR7WENGSUxF
TElTVF9OQU1FfSIKLSAgICBlbHNlCi0gICAgICAgIGVjaG8gIiMjIyBHZW5lcmF0aW5nOiAke1hD
RklMRUxJU1RfUEFUSH0iCi0gICAgZmkKK2Z1bmN0aW9uIHNldF9idWlsZF92YXJpYWJsZXNfZm9y
X1dlYktpdCgpCit7CisgICAgUFJPSkVDVF9OQU1FPVdlYktpdAorICAgIFBST0pFQ1RfRElSPSIk
e09QRU5TT1VSQ0VfRElSfS9Tb3VyY2UvJHtQUk9KRUNUX05BTUV9IgorICAgIEdFTkVSQVRPUj0i
JHtQUk9KRUNUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giCisgICAg
REVSSVZFRF9TT1VSQ0VTX01BS0U9IiR7UFJPSkVDVF9ESVJ9L0Rlcml2ZWRTb3VyY2VzLm1ha2Ui
CisgICAgREVSSVZFRF9TT1VSQ0VTX0RJUj0iJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIiCisKKyAgICBleHBvcnQgRlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0iCisg
ICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfSIKKyAgICBleHBvcnQgSEVBREVSX1NFQVJDSF9Q
QVRIUz0iCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZQor
ICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vV2ViQ29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhl
YWRlcnMvRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9s
b2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucworICAgICAgICAke1NES1JPT1R9L3Vzci9sb2Nh
bC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucworICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0v
dXNyL2xvY2FsL2luY2x1ZGUvd2VicnRjCisgICAgICAgICR7U0RLUk9PVH0vdXNyL2xvY2FsL2lu
Y2x1ZGUvd2VicnRjCisgICAgICAgICR7UFJPSkVDVF9ESVJ9IgorICAgIGV4cG9ydCBTWVNURU1f
RlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0iCisgICAgICAgICR7U0RLUk9PVH0vU3lzdGVtL0xpYnJh
cnkvUHJpdmF0ZUZyYW1ld29ya3MKKyAgICAgICAgJHtTREtST09UfS9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzIgorICAgIGV4cG9ydCBTWVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUz0KK30KIAot
ICAgIHsKLSAgICAgICAgbG9jYWwgbgotICAgICAgICBmb3IgbiBpbiAkKHNlcSAkTlVNX0NQUCkK
LSAgICAgICAgZG8KLSAgICAgICAgICAgIGVjaG8gdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3Vy
Y2Ukbi5jcHAKLSAgICAgICAgZG9uZQogCi0gICAgICAgIGVjaG8KK2Z1bmN0aW9uIHNldF9idWls
ZF92YXJpYWJsZXNfZm9yX0R1bXBSZW5kZXJUcmVlKCkKK3sKKyAgICBQUk9KRUNUX05BTUU9RHVt
cFJlbmRlclRyZWUKKyAgICBQUk9KRUNUX0RJUj0iJHtPUEVOU09VUkNFX0RJUn0vVG9vbHMvJHtQ
Uk9KRUNUX05BTUV9IgorICAgIEdFTkVSQVRPUj0iJHtQUk9KRUNUX0RJUn0vU2NyaXB0cy9nZW5l
cmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giCisgICAgREVSSVZFRF9TT1VSQ0VTX01BS0U9IiR7UFJP
SkVDVF9ESVJ9L0Rlcml2ZWRTb3VyY2VzLm1ha2UiCisgICAgREVSSVZFRF9TT1VSQ0VTX0RJUj0i
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzLyR7UFJPSkVDVF9OQU1FfSIKKwor
ICAgIGV4cG9ydCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTPQorICAgIGV4cG9ydCBIRUFERVJfU0VB
UkNIX1BBVEhTPQorICAgIGV4cG9ydCBTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0KKyAg
ICBleHBvcnQgU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFM9Cit9CisKK2Z1bmN0aW9uIHNldF9i
dWlsZF92YXJpYWJsZXNfZm9yX1dlYktpdFRlc3RSdW5uZXIoKQoreworICAgIFBST0pFQ1RfTkFN
RT1XZWJLaXRUZXN0UnVubmVyCisgICAgUFJPSkVDVF9ESVI9IiR7T1BFTlNPVVJDRV9ESVJ9L1Rv
b2xzLyR7UFJPSkVDVF9OQU1FfSIKKyAgICBHRU5FUkFUT1I9IiR7UFJPSkVDVF9ESVJ9L1Njcmlw
dHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIgorICAgIERFUklWRURfU09VUkNFU19NQUtF
PSIke1BST0pFQ1RfRElSfS9EZXJpdmVkU291cmNlcy5tYWtlIgorICAgIERFUklWRURfU09VUkNF
U19ESVI9IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy8ke1BST0pFQ1RfTkFN
RX0iCisKKyAgICBleHBvcnQgRlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0KKyAgICBleHBvcnQgSEVB
REVSX1NFQVJDSF9QQVRIUz0KKyAgICBleHBvcnQgU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFU
SFM9CisgICAgZXhwb3J0IFNZU1RFTV9IRUFERVJfU0VBUkNIX1BBVEhTPQorfQogCi0gICAgICAg
IGZvciBuIGluICQoc2VxICROVU1fTU0pCi0gICAgICAgIGRvCi0gICAgICAgICAgICBlY2hvIHVu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlJG4tbW0ubW0KLSAgICAgICAgZG9uZQotICAgIH0g
PiAiJHtYQ0ZJTEVMSVNUX1BBVEh9IgogCi0gICAgcHJlcGVuZF9wcmVmaXhfdG9fYWxsX3BhdGhz
ICIke1BST0pFQ1RfTkFNRX0iICIke1hDRklMRUxJU1RfUEFUSH0iCi0gICAgKCggJHtET19DSEVD
S30gKSkgJiYgY2hlY2tfeGNmaWxlbGlzdCAiJHtYQ0ZJTEVMSVNUX1BBVEhfT1JJR30iICIke1hD
RklMRUxJU1RfUEFUSH0iCitmdW5jdGlvbiBkdW1wX3ZhcmlhYmxlcygpCit7CisgICAgZWNobyAi
QUNUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAke0FDVElPTn0iCisgICAgZWNo
byAiT1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAke09TfSIKKyAgICBlY2hv
ICJQTEFURk9STV9OQU1FICAgICAgICAgICAgICAgICAgICAgICA9ICR7UExBVEZPUk1fTkFNRX0i
CisgICAgZWNobyAiU0RLUk9PVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAke1NES1JP
T1R9IgorICAgIGVjaG8gIlNSQ1JPT1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJHtT
UkNST09UfSIKKyAgICBlY2hvICJCVUlMRF9TQ1JJUFRTX0RJUiAgICAgICAgICAgICAgICAgICA9
ICR7QlVJTERfU0NSSVBUU19ESVJ9IgorICAgIGVjaG8gIkJVSUxUX1BST0RVQ1RTX0RJUiAgICAg
ICAgICAgICAgICAgID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9IgorICAgIGVjaG8gIldFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUiAgICAgICAgID0gJHtXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVJ9IgorICAgIGVjaG8gIldFQktJVDJfUFJJVkFURV9IRUFERVJTX0RJUiAgICAgICAgID0gJHtX
RUJLSVQyX1BSSVZBVEVfSEVBREVSU19ESVJ9IgorICAgIGVjaG8gIkpBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIgID0gJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
fSIKKyAgICBlY2hvICJXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7V0VC
S0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFN9IgorICAgIGVjaG8gIiIKKyAgICBlY2hv
ICJQUk9KRUNUX05BTUUgICAgICAgICAgICAgICAgICAgICAgICA9ICR7UFJPSkVDVF9OQU1FfSIK
KyAgICBlY2hvICJQUk9KRUNUX0RJUiAgICAgICAgICAgICAgICAgICAgICAgICA9ICR7UFJPSkVD
VF9ESVJ9IgorICAgIGVjaG8gIkdFTkVSQVRPUiAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
JHtHRU5FUkFUT1J9IgorICAgIGVjaG8gIkRFUklWRURfU09VUkNFU19NQUtFICAgICAgICAgICAg
ICAgID0gJHtERVJJVkVEX1NPVVJDRVNfTUFLRX0iCisgICAgZWNobyAiREVSSVZFRF9TT1VSQ0VT
X0RJUiAgICAgICAgICAgICAgICAgPSAke0RFUklWRURfU09VUkNFU19ESVJ9IgorICAgIGVjaG8g
IiIKKyAgICBlY2hvICJGUkFNRVdPUktfU0VBUkNIX1BBVEhTICAgICAgICAgICAgICA9ICR7RlJB
TUVXT1JLX1NFQVJDSF9QQVRIU30iCisgICAgZWNobyAiSEVBREVSX1NFQVJDSF9QQVRIUyAgICAg
ICAgICAgICAgICAgPSAke0hFQURFUl9TRUFSQ0hfUEFUSFN9IgorICAgIGVjaG8gIlNZU1RFTV9G
UkFNRVdPUktfU0VBUkNIX1BBVEhTICAgICAgID0gJHtTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9Q
QVRIU30iCiB9CiAKIAotIyBHZW5lcmF0ZSAueGNmaWxlbGlzdCBmaWxlcyBiYXNlZCBvbiB0aGUg
b3V0cHV0IG9mIHRoZSBnaXZlbiBtYWtlZmlsZSB3aGVuCi0jIHBhc3NlZCB0aGUgInByaW50X2Fs
bF9nZW5lcmF0ZWRfZmlsZXMiIHRhcmdldC4KK2Z1bmN0aW9uIHNldF9idWlsZF92YXJpYWJsZXMo
KQoreworICAgIFBST0pFQ1RfVEFHPSIkMSIKKworICAgIGV4cG9ydCBBQ1RJT049YnVpbGQKKyAg
ICBleHBvcnQgT1M9TUFDT1MKKyAgICBleHBvcnQgUExBVEZPUk1fTkFNRT1tYWNvc3gKKyAgICBl
eHBvcnQgU0RLUk9PVD0iJCh4Y3J1biAtc2hvdy1zZGstcGF0aCkiCisgICAgZXhwb3J0IEJVSUxE
X1NDUklQVFNfRElSPSIke09QRU5TT1VSQ0VfRElSfS9Tb3VyY2UvV1RGL1NjcmlwdHMiCisgICAg
ZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj0iJChmaW5kX2ZpcnN0X2V4aXN0aW5nICIke09QRU5T
T1VSQ0VfRElSfS9XZWJLaXRCdWlsZC8ie0RlYnVnLFJlbGVhc2V9KikiCisgICAgW1sgLW4gIiR7
U0RLUk9PVH0iIF1dIHx8IGRpZSAiU0RLUk9PVCBpcyBub3QgZGVmaW5lZCIKKyAgICBbWyAtZSAi
JHtCVUlMRF9TQ1JJUFRTX0RJUn0iIF1dIHx8IGRpZSAiJEJVSUxEX1NDUklQVFNfRElSIGRvZXMg
bm90IGV4aXN0IgorICAgIFtbIC1uICIke0JVSUxUX1BST0RVQ1RTX0RJUn0iIF1dIHx8IGRpZSAi
QlVJTFRfUFJPRFVDVFNfRElSIGlzIG5vdCBkZWZpbmVkLiBZb3UgbWF5IG5lZWQgdG8gYnVpbGQg
V2ViS2l0IGZpcnN0LiIKKworICAgIGV4cG9ydCBXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVI9
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycyIK
KyAgICBleHBvcnQgV0VCS0lUMl9QUklWQVRFX0hFQURFUlNfRElSPSIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vV2ViS2l0LmZyYW1ld29yay9Qcml2YXRlSGVhZGVycyIKKyAgICBleHBvcnQgSkFWQVND
UklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUj0iJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycyIKKyAgICBleHBvcnQgV0VCS0lUQURE
SVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFM9IiR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9j
YWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMgJHtTREtST09UfS91c3IvbG9jYWwvaW5jbHVkZS9X
ZWJLaXRBZGRpdGlvbnMiCisgICAgW1sgLWUgIiR7V0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
fSIgXV0gfHwgZGllICIkV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSIGRvZXMgbm90IGV4aXN0
LiBZb3UgbWF5IG5lZWQgdG8gYnVpbGQgV2ViS2l0IGZpcnN0LiIKKyAgICBbWyAtZSAiJHtKQVZB
U0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfSIgXV0gfHwgZGllICIkSkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX0RJUiBkb2VzIG5vdCBleGlzdC4gWW91IG1heSBuZWVkIHRvIGJ1
aWxkIFdlYktpdCBmaXJzdC4iCisgICAgIyBbWyAtZSAiJHtXRUJLSVRBRERJVElPTlNfSEVBREVS
X1NFQVJDSF9QQVRIU30iIF1dIHx8IGRpZSAiJFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNI
X1BBVEhTIGRvZXMgbm90IGV4aXN0LiBZb3UgbWF5IG5lZWQgdG8gYnVpbGQgV2ViS2l0IGZpcnN0
LiIKKworICAgIGxvY2FsIEZOPXNldF9idWlsZF92YXJpYWJsZXNfZm9yXyR7UFJPSkVDVF9UQUd9
CisgICAgbG9jYWwgSVNfRlVOQ1RJT049JCh0eXBlIC10ICRGTikKKyAgICBbWyAiJHtJU19GVU5D
VElPTn0iID09ICJmdW5jdGlvbiIgXV0gJiYgZXZhbCAkRk4gfHwgZGllICJDb3VsZCBub3Qgc2V0
IGJ1aWxkIHZhcmlhYmxlcyBmb3IgJHtQUk9KRUNUX1RBR30iCisKKyAgICAjIERvIHRoZXNlIGFm
dGVyIHByb2plY3Qtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24uCisKKyAgICBleHBvcnQgU1JDUk9P
VD0iJHtQUk9KRUNUX0RJUn0iCisKKyAgICBbWyAtZSAiJHtQUk9KRUNUX0RJUn0iIF1dIHx8IGRp
ZSAiJFBST0pFQ1RfRElSIGRvZXMgbm90IGV4aXN0IgorICAgIFtbIC1lICIke0dFTkVSQVRPUn0i
IF1dIHx8IGRpZSAiJEdFTkVSQVRPUiBkb2VzIG5vdCBleGlzdCIKKyAgICBbWyAtZSAiJHtERVJJ
VkVEX1NPVVJDRVNfTUFLRX0iIF1dIHx8IGRpZSAiJERFUklWRURfU09VUkNFU19NQUtFIGRvZXMg
bm90IGV4aXN0IgorICAgIFtbIC1lICIke0RFUklWRURfU09VUkNFU19ESVJ9IiBdXSB8fCBkaWUg
IiRERVJJVkVEX1NPVVJDRVNfRElSIGRvZXMgbm90IGV4aXN0IgorCisgICAgIyBkdW1wX3Zhcmlh
YmxlcworfQogCi1mdW5jdGlvbiBnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX21ha2VmaWxlKCkK
KworZnVuY3Rpb24gc29ydF9maWxlcygpCiB7Ci0gICAgbG9jYWwgUFJPSkVDVF9OQU1FPSIkMSIK
LSAgICBsb2NhbCBNQUtFRklMRV9OQU1FPSIkMiIKLSAgICBsb2NhbCBYQ0ZJTEVMSVNUX05BTUU9
IiQzIgorICAgIHNvcnQgIiR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIgLW8gIiR7SU5QVVRfWENG
SUxFTElTVF9QQVRIfSIKKyAgICBzb3J0ICIke09VVFBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAtbyAi
JHtPVVRQVVRfWENGSUxFTElTVF9QQVRIfSIKK30KIAotICAgIGxvY2FsIFBST0pFQ1RfRElSPSIk
KGdldF9wcm9qZWN0X2RpciAiJHtQUk9KRUNUX05BTUV9IikiCi0gICAgbG9jYWwgWENGSUxFTElT
VF9QQVRIPSIke1BST0pFQ1RfRElSfS8ke1hDRklMRUxJU1RfTkFNRX0iCiAKKyMgSWYgd2UncmUg
ZG9pbmcgYSBjaGVjayAoYXMgb3Bwb3NlZCB0byBnZW5lcmF0aW5nIHRoZSBmaWxlcyksIHRoZW4g
cmVkaXJlY3QKKyMgdGhlIHNjcmlwdCB0byBnZW5lcmF0ZSB0aGUgZmlsZXMgaW4gYSB0ZW1wb3Jh
cnkgbG9jYXRpb24gKHNvIHRoYXQgd2UgY2FuCisjIGNvbXBhcmUgdGhvc2UgdG8gdGhlIG9yaWdp
bmFscyBsYXRlcikuCisKK2Z1bmN0aW9uIGNoZWNrX3Byb2xvZygpCit7CiAgICAgaWYgKCggJHtE
T19DSEVDS30gKSkKICAgICB0aGVuCi0gICAgICAgIGVjaG8gIiMjIyBDaGVja2luZzogJHtYQ0ZJ
TEVMSVNUX1BBVEh9IgotICAgICAgICBYQ0ZJTEVMSVNUX1BBVEhfT1JJRz0iJHtYQ0ZJTEVMSVNU
X1BBVEh9IgotICAgICAgICBYQ0ZJTEVMSVNUX1BBVEg9Ii90bXAvJHtYQ0ZJTEVMSVNUX05BTUV9
IgorICAgICAgICBJTlBVVF9YQ0ZJTEVMSVNUX1BBVEhfT1JJRz0iJHtJTlBVVF9YQ0ZJTEVMSVNU
X1BBVEh9IgorICAgICAgICBJTlBVVF9YQ0ZJTEVMSVNUX1BBVEg9Ii90bXAvJHtJTlBVVF9YQ0ZJ
TEVMSVNUX1BBVEgjIy99IgorICAgICAgICBPVVRQVVRfWENGSUxFTElTVF9QQVRIX09SSUc9IiR7
T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisgICAgICAgIE9VVFBVVF9YQ0ZJTEVMSVNUX1BBVEg9
Ii90bXAvJHtPVVRQVVRfWENGSUxFTElTVF9QQVRIIyMvfSIKKyAgICAgICAgbWtkaXIgLXAgIiQo
ZGlybmFtZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IikiCisgICAgICAgIG1rZGlyIC1wICIk
KGRpcm5hbWUgIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iKSIKICAgICBlbHNlCi0gICAgICAg
IGVjaG8gIiMjIyBHZW5lcmF0aW5nOiAke1hDRklMRUxJU1RfUEFUSH0iCisgICAgICAgIGVjaG8g
IiMjIyBHZW5lcmF0aW5nOiAke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iCisgICAgICAgIGVjaG8g
IiMjIyBHZW5lcmF0aW5nOiAke09VVFBVVF9YQ0ZJTEVMSVNUX1BBVEh9IgogICAgIGZpCit9CisK
KworIyBJZiB3ZSdyZSBkb2luZyBhIGNoZWNrLCB0aGVuIGRpZmYgdGhlIG5ldyBmaWxlcyBhZ2Fp
bnN0IHRoZSBvcmlnaW5hbHMuCisKK2Z1bmN0aW9uIGNoZWNrX2VwaWxvZygpCit7CisgICAgaWYg
KCggJHtET19DSEVDS30gKSkKKyAgICB0aGVuCisgICAgICAgIGVjaG8gIiMjIyBDaGVja2luZzog
JHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IgorICAgICAgICBjaGVja194Y2ZpbGVsaXN0ICIke0lO
UFVUX1hDRklMRUxJU1RfUEFUSF9PUklHfSIgIiR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIKKwor
ICAgICAgICBlY2hvICIjIyMgQ2hlY2tpbmc6ICR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisg
ICAgICAgIGNoZWNrX3hjZmlsZWxpc3QgIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSF9PUklHfSIg
IiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisgICAgZmkKK30KKworCisjIEdlbmVyYXRlIC54
Y2ZpbGVsaXN0IGZpbGVzIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgRGVyaXZlZFNvdXJjZXMubWFr
ZSB3aGVuCisjIGludm9rZWQgdG8gcHJpbnQgb3V0IGl0cyBkZXBlbmRlbmN5IGxpc3QuCiAKLSAg
ICBsb2NhbCBNQUtFX0ZMQUdTPSgKLSAgICAgICAgLS1uby1idWlsdGluLXJ1bGVzCi0gICAgICAg
IE9TPU1BQ09TCi0gICAgICAgIFNES1JPT1Q9JCh4Y3J1biAtLXNob3ctc2RrLXBhdGgpCi0gICAg
ICAgIEZSQU1FV09SS19TRUFSQ0hfUEFUSFM9LgotICAgICAgICBIRUFERVJfU0VBUkNIX1BBVEhT
PSR7V0VCS0lUX0RJUn0vU291cmNlL1dURgotICAgICkKK2Z1bmN0aW9uIGdlbmVyYXRlX3hjZmls
ZWxpc3RzX2Zyb21fZGVyaXZlZHNvdXJjZXMoKQoreworICAgIHNldF9idWlsZF92YXJpYWJsZXMg
IiQxIgorCisgICAgbG9jYWwgREVSSVZFRF9TT1VSQ0VTX01BS0VfUEFUSD0iJChkaXJuYW1lICIk
e0RFUklWRURfU09VUkNFU19NQUtFfSIpIgorICAgIElOUFVUX1hDRklMRUxJU1RfUEFUSD0iJHtE
RVJJVkVEX1NPVVJDRVNfTUFLRV9QQVRIfS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IgorICAgIE9VVFBVVF9YQ0ZJTEVMSVNUX1BBVEg9IiR7REVSSVZFRF9TT1VSQ0VTX01BS0VfUEFU
SH0vRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QiCisKKyAgICAjIFNlZSBjb21tZW50
cyBpbiBnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRzb3VyY2VzIGZvciB3aGF0IHdl
J3JlCisgICAgIyB0cnlpbmcgdG8gYWNoaWV2ZSB3aXRoIEZFQVRVUkVfREVGSU5FUy4KKworICAg
IGV4cG9ydCBGRUFUVVJFX0RFRklORVM9IiQoZ3JlcCAnaWZlcS4qZmluZHN0cmluZyAuKkZFQVRV
UkVfREVGSU5FUy4qJyAiJHtERVJJVkVEX1NPVVJDRVNfTUFLRX0iIHwgc2VkIC1FIC1lICdzLy4q
LCAoLiopXCkvXDEvJykiCisKKyAgICAjIEdlbmVyYXRlIHRoZSAueGNmaWxlbGlzdCBmaWxlcy4K
IAotICAgIG1ha2UgLUMgIiR7UFJPSkVDVF9ESVJ9IiAtZiAiJHtNQUtFRklMRV9OQU1FfSIgIiR7
TUFLRV9GTEFHU1tAXX0iIHByaW50X2FsbF9nZW5lcmF0ZWRfZmlsZXMgXAotICAgICAgICB8IHNv
cnQgfCB1bmlxID4gIiR7WENGSUxFTElTVF9QQVRIfSIKKyAgICBjaGVja19wcm9sb2cKIAotICAg
IHByZXBlbmRfcHJlZml4X3RvX2FsbF9wYXRocyAiJHtQUk9KRUNUX05BTUV9IiAiJHtYQ0ZJTEVM
SVNUX1BBVEh9IgotICAgICgoICR7RE9fQ0hFQ0t9ICkpICYmIGNoZWNrX3hjZmlsZWxpc3QgIiR7
WENGSUxFTElTVF9QQVRIX09SSUd9IiAiJHtYQ0ZJTEVMSVNUX1BBVEh9IgorICAgICIke0dFTkVS
QVRPUn0iIE5PX1NVUFBMRU1FTlRBTF9GSUxFUz0xIC0tbm8tYnVpbHRpbi1ydWxlcyAtLWRyeS1y
dW4gLS1hbHdheXMtbWFrZSAtLWRlYnVnPWFidmlqbSBhbGwgfAorICAgICAgICAiJHtPUEVOU09V
UkNFX0RJUn0iL1Rvb2xzL1NjcmlwdHMvZXh0cmFjdC1kZXBlbmRlbmNpZXMtZnJvbS1tYWtlZmls
ZSAtLWlucHV0ICIke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iIC0tb3V0cHV0ICIke09VVFBVVF9Y
Q0ZJTEVMSVNUX1BBVEh9IgorCisgICAgcmVwbGFjZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9
IiAnV2ViQ29yZScgJyQoUFJPSkVDVF9ESVIpJworICAgIHJlcGxhY2UgIiR7SU5QVVRfWENGSUxF
TElTVF9QQVRIfSIgJ0phdmFTY3JpcHRDb3JlJyAnJChQUk9KRUNUX0RJUiknCisgICAgcmVwbGFj
ZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAnSmF2YVNjcmlwdENvcmVQcml2YXRlSGVhZGVy
cycgJyQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUiknCisgICAgcmVwbGFjZSAi
JHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAnV2ViS2l0MlByaXZhdGVIZWFkZXJzJyAnJChXRUJL
SVQyX1BSSVZBVEVfSEVBREVSU19ESVIpJworICAgIHJlcGxhY2UgIiR7SU5QVVRfWENGSUxFTElT
VF9QQVRIfSIgIiR7UFJPSkVDVF9ESVJ9IiAnJChQUk9KRUNUX0RJUiknCisgICAgcmVwbGFjZSAi
JHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAiJHtXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9
IiAnJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpJworICAgIHJlcGxhY2UgIiR7SU5QVVRf
WENGSUxFTElTVF9QQVRIfSIgIiR7V0VCS0lUMl9QUklWQVRFX0hFQURFUlNfRElSfSIgJyQoV0VC
S0lUMl9QUklWQVRFX0hFQURFUlNfRElSKScKKyAgICByZXBsYWNlICIke0lOUFVUX1hDRklMRUxJ
U1RfUEFUSH0iICIke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9IiAnJChKQVZB
U0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKScKKyAgICByZXBsYWNlICIke0lOUFVUX1hD
RklMRUxJU1RfUEFUSH0iICIke0JVSUxUX1BST0RVQ1RTX0RJUn0iICckKEJVSUxUX1BST0RVQ1RT
X0RJUiknCisKKyAgICBwcmVwZW5kX3ByZWZpeF90b19hbGxfcGF0aHMgIiR7T1VUUFVUX1hDRklM
RUxJU1RfUEFUSH0iCisgICAgcmVwbGFjZSAiJHtPVVRQVVRfWENGSUxFTElTVF9QQVRIfSIgIiR7
QlVJTFRfUFJPRFVDVFNfRElSfSIgJyQoQlVJTFRfUFJPRFVDVFNfRElSKScKKworICAgIHNvcnRf
ZmlsZXMKKyAgICBjaGVja19lcGlsb2cKIH0KIAogCi0jIFdyYXBwZXIgYXJvdW5kIGdlbmVyYXRl
X3hjZmlsZWxpc3RzX2Zyb21fbWFrZWZpbGUoKSB0byBoYW5kbGUgdGhlIGNvbW1vbgotIyBwYXR0
ZXJuIG9mIGdlbmVyYXRpbmcgdGhlIGxpc3Qgb2YgZmlsZXMgZ2VuZXJhdGVkIGZyb20gdGhlCi0j
IERlcml2ZWRTb3VyY2VzLm1ha2UgbWFrZWZpbGVzLgorIyBHZW5lcmF0ZSAueGNmaWxlbGlzdCBm
aWxlcyBmb3IgInVuaWZpZWQgc291cmNlcyIgZGVyaXZlZCBmaWxlcy4gV2UgZ2VuZXJhdGUKKyMg
dHdvIGZpbGVzOiBVbmlmaWVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICh0aGUgb3JpZ2luYWwg
c291cmNlIGZpbGVzIHRoYXQKKyMgZ2V0IGJ1bmRsZWQgaW50byB0aGUgdmFyaW91cyBVbmlmaWVk
U291cmNlKi5jcHAvbW0gZmlsZXMpIGFuZAorIyBVbmlmaWVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdCAodGhlIGxpc3Qgb2YgVW5pZmllZFNvdXJjZSouY3BwL21tIGZpbGVzKS4KKyMgQm90aCBv
ZiB0aGVzZSBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIHNhbWUgU291cmNlcyoudHh0IGZpbGVzIHVz
ZWQgYnkKKyMgZ2VuZXJhdGUtdW5pZmllZC1zb3VyY2UtYnVuZGxlcy5yYi4gVGhlIC54Y2ZpbGVs
aXN0IGZpbGVzIGFyZSB3cml0dGVuIGludG8KKyMgdGhlIGFzc29jaWF0ZWQgcHJvamVjdCBkaXJl
Y3RvcnkuCiAKLWZ1bmN0aW9uIGdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fZGVyaXZlZHNvdXJj
ZXNfbWFrZWZpbGUoKQorZnVuY3Rpb24gZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV91bmlmaWVk
c291cmNlcygpCiB7Ci0gICAgbG9jYWwgUFJPSkVDVF9OQU1FPSIkMSIKLSAgICBnZW5lcmF0ZV94
Y2ZpbGVsaXN0c19mcm9tX21ha2VmaWxlICIke1BST0pFQ1RfTkFNRX0iIERlcml2ZWRTb3VyY2Vz
Lm1ha2UgRGVyaXZlZFNvdXJjZXMueGNmaWxlbGlzdAorICAgIHNldF9idWlsZF92YXJpYWJsZXMg
IiQxIgorCisgICAgSU5QVVRfWENGSUxFTElTVF9QQVRIPSIke1BST0pFQ1RfRElSfS9VbmlmaWVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IgorICAgIE9VVFBVVF9YQ0ZJTEVMSVNUX1BBVEg9IiR7
UFJPSkVDVF9ESVJ9L1VuaWZpZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IgorCisgICAgIyBE
ZWZpbmUgRkVBVFVSRV9ERUZJTkVTIGluIG9yZGVyIHRvIGVuYWJsZSBldmVyeSBwb3NzaWJsZSBm
ZWF0dXJlLCB0aHVzCisgICAgIyBpbmNsdWRpbmcgZXZlcnkgcG9zc2libGUgaW5wdXQgZmlsZSBp
bnRvIHRoZSBnZW5lcmF0ZWQgLnhjZmlsZWxpc3QgZmlsZS4KKyAgICAjIFRoaXMgbWF5IG92ZXIt
c3BlY2lmeSB0aGUgaW5wdXQgLS0gdGhhdCBpcywgaW5jbHVkZSBmaWxlcyB0aGF0IGFyZW4ndAor
ICAgICMgYWN0dWFsbHkgaW5jbHVkZWQgaW4gdGhlIFVuaWZpZWRTb3VyY2VzIGZpbGVzIC0tIGJ1
dCB0aGF0J3MgT0suIFRoZSB3b3JzdAorICAgICMgdGhhdCB3aWxsIGhhcHBlbiBpcyB0aGF0IG9u
ZSBvZiB0aGVzZSBleHRyYSBmaWxlcyB3aWxsIGdldCBtb2RpZmllZCBhbmQKKyAgICAjIHdlJ2xs
IHVubmVjZXNzYXJpbHkgZ28gdGhyb3VnaCB0aGUgR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzIHBo
YXNlLiBUaGlzCisgICAgIyB3aWxsIHVubmVjZXNzYXJpbHkgZ28gdGhyb3VnaCB0aGUgcHJvY2Vz
cyBvZiBnZW5lcmF0aW5nIHRoZQorICAgICMgVW5pZmllZFNvdXJjZXMsIGJ1dCBzaW5jZSB0aGF0
IHByb2Nlc3Mgd3JpdGVzL3VwZGF0ZXMgdGhlIFVuaWZpZWRTb3VyY2VzCisgICAgIyBmaWxlcyBv
bmx5IGlmIHRoZWlyIGNvbnRlbnRzIGFjdHVhbGx5IGNoYW5nZSwgd2Ugd29uJ3QgZW5kIHVwIGNo
YW5naW5nCisgICAgIyBhbnkgVW5pZmllZFNvdXJjZXMgZmlsZXMgYW5kIG5vdGhpbmcgZ2V0cyB1
bm5lY2Vzc2FyaWx5IHJlY29tcGlsZWQuCisKKyAgICBleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSIk
KGNkICIke1BST0pFQ1RfRElSfSI7IGdyZXAgJyNpZicgJChmaW5kIC4gLW5hbWUgJ1NvdXJjZXMq
LnR4dCcpIHwgc2VkIC1FIC1lICdzLy4qaWYgKEVOQUJMRS4qKS9cMS8nKSIKKworICAgICMgR2Vu
ZXJhdGUgdGhlIC54Y2ZpbGVsaXN0IGZpbGVzLgorCisgICAgY2hlY2tfcHJvbG9nCisKKyAgICAi
JHtQUk9KRUNUX0RJUn0vU2NyaXB0cy9nZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2giIFwKKyAg
ICAgICAgLS1nZW5lcmF0ZS14Y2ZpbGVsaXN0cyBcCisgICAgICAgIC0taW5wdXQteGNmaWxlbGlz
dC1wYXRoICIke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iIFwKKyAgICAgICAgLS1vdXRwdXQteGNm
aWxlbGlzdC1wYXRoICIke09VVFBVVF9YQ0ZJTEVMSVNUX1BBVEh9IgorCisgICAgcmVwbGFjZSAi
JHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9IiAnJChCVUlM
VF9QUk9EVUNUU19ESVIpJworICAgIHJlcGxhY2UgIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0i
ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0iICckKEJVSUxUX1BST0RVQ1RTX0RJUiknCisKKyAgICBz
b3J0X2ZpbGVzCisgICAgY2hlY2tfZXBpbG9nCiB9CiAKIAogIyBQcm9jZXNzIGNvbW1hbmQtbGlu
ZSBwYXJhbWV0ZXJzLgogCitST09UX0RJUj0iJChjZCAiJHtIRVJFfS8uLi8uLi8uLiIgJiYgcHdk
IC1QKSIKK09QRU5TT1VSQ0VfRElSPSIke1JPT1RfRElSfS9PcGVuU291cmNlIgorW1sgLW4gIiR7
Uk9PVF9ESVJ9IiBdXSB8fCBkaWUgIkNvdWxkIG5vdCBmaW5kIFJPT1RfRElSIgorW1sgLW4gIiR7
T1BFTlNPVVJDRV9ESVJ9IiBdXSB8fCBkaWUgIkNvdWxkIG5vdCBmaW5kIE9QRU5TT1VSQ0VfRElS
IgorW1sgLWUgIiR7T1BFTlNPVVJDRV9ESVJ9IiBdXSB8fCBkaWUgIiRPUEVOU09VUkNFX0RJUiBk
b2VzIG5vdCBleGlzdCIKKwogRE9fQ0hFQ0s9MAogREVGRVJSRURfRVhJVF9DT0RFPTAKIApAQCAt
MjQyLDE1ICs0NTUsMjAgQEAgZG8KICAgICBzaGlmdAogZG9uZQogCitnZW5lcmF0ZV94Y2ZpbGVs
aXN0c19mcm9tX2Rlcml2ZWRzb3VyY2VzIEphdmFTY3JpcHRDb3JlCitnZW5lcmF0ZV94Y2ZpbGVs
aXN0c19mcm9tX2Rlcml2ZWRzb3VyY2VzIFdlYkNvcmUKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zy
b21fZGVyaXZlZHNvdXJjZXMgV2ViS2l0CitnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2
ZWRzb3VyY2VzIER1bXBSZW5kZXJUcmVlCitnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2
ZWRzb3VyY2VzIFdlYktpdFRlc3RSdW5uZXIKKworZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV91
bmlmaWVkc291cmNlcyBKYXZhU2NyaXB0Q29yZQorZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV91
bmlmaWVkc291cmNlcyBXZWJDb3JlCitnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRz
b3VyY2VzIFdlYktpdAogCi1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRzb3VyY2Vz
IEphdmFTY3JpcHRDb3JlIDE0NSA1Ci1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRz
b3VyY2VzIFdlYkNvcmUgNTMwIDYyCi1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRz
b3VyY2VzIFdlYktpdCAxMDAgODAKIAotZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV9kZXJpdmVk
c291cmNlc19tYWtlZmlsZSBKYXZhU2NyaXB0Q29yZQotZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJv
bV9kZXJpdmVkc291cmNlc19tYWtlZmlsZSBXZWJDb3JlCi1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19m
cm9tX2Rlcml2ZWRzb3VyY2VzX21ha2VmaWxlIFdlYktpdAotZ2VuZXJhdGVfeGNmaWxlbGlzdHNf
ZnJvbV9kZXJpdmVkc291cmNlc19tYWtlZmlsZSBXZWJLaXRUZXN0UnVubmVyCi1nZW5lcmF0ZV94
Y2ZpbGVsaXN0c19mcm9tX2Rlcml2ZWRzb3VyY2VzX21ha2VmaWxlIER1bXBSZW5kZXJUcmVlCitT
T1VSQ0VEPSQoW1sgIiQwIiA9PSAiJHtCQVNIX1NPVVJDRVtAXX0iIF1dICYmIGVjaG8gMCB8fCBl
Y2hvIDEpCitpZiAoKCAhICRTT1VSQ0VEICkpCit0aGVuCisgICAgZXhpdCAke0RFRkVSUkVEX0VY
SVRfQ09ERX0KK2ZpCiAKLWV4aXQgJHtERUZFUlJFRF9FWElUX0NPREV9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356458</attachid>
            <date>2018-12-03 21:26:48 -0800</date>
            <delta_ts>2018-12-04 09:05:18 -0800</delta_ts>
            <desc>Updated copyright header and date.</desc>
            <filename>bug-192081-20181203212647.patch</filename>
            <type>text/plain</type>
            <size>31611</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmMzYmYwZmVkZWE0M2M5ZDQ3YmI0MDM5ZDY2MWI3MTJm
NTdmMTcxZC4uMGRkY2I0M2I3NjZlNWVlYWZmNzFiZDM4NGI2OTMwZTk4OGRiZDBhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE4LTEyLTAzICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgc2NyaXB0cyBmb3IgZ2VuZXJhdGluZyAueGNmaWxlbGlzdCBmaWxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDgxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80NjMxMjI5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW5pdGlhbCBwYXNzIGF0IGdlbmVyYXRlLXhjZmls
ZWxpc3RzIChhIHNjcmlwdCBmb3IKKyAgICAgICAgY3JlYXRpbmcvdXBkYXRpbmcgdGhlIC54Y2Zp
bGVsaXN0IGZpbGVzIG5lZWRlZCBmb3IgdmFyaW91cyBHZW5lcmF0ZQorICAgICAgICBGb28gU291
cmNlIGJ1aWxkIHBoYXNlcyBpbiBYY29kZSkgb25seSBnZW5lcmF0ZWQgdGhlIC54Y2ZpbGVsaXN0
IGZpbGVzCisgICAgICAgIHRoYXQgaGVsZCB0aGUgb3V0cHV0IGZpbGVzOyBpdCBkaWQgbm90IGdl
bmVyYXRlIHRoZSBsaXN0IG9mIGlucHV0CisgICAgICAgIGZpbGVzLiBBcyB3ZWxsLCBmb3IgdGhl
IHNvdXJjZXMgZ2VuZXJhdGVkIGJ5IERlcml2ZWRTb3VyY2VzLm1ha2UKKyAgICAgICAgbWFrZWZp
bGVzLCB0aGUgc2NyaXB0IGFjY29tcGxpc2hlZCB0aGlzIHZpYSB0aGUgaW1wbGVtZW50YXRpb24g
b2YgYQorICAgICAgICBjb252ZW50aW9uIGluIHRoZSBtYWtlZmlsZSB0aGF0IGFsbG93ZWQgdGhl
IHByaW50aW5nIG9mIHRoZXNlIG91dHB1dAorICAgICAgICBmaWxlcyB3aGVuIGludm9rZWQgd2l0
aCB0aGUgJ3ByaW50X2FsbF9nZW5lcmF0ZWRfZmlsZXMnIHRhcmdldC4gVXNlIG9mCisgICAgICAg
IHRoaXMgY29udmVudGlvbiBpcyBpbmNvbnZlbmllbnQgYW5kIGVycm9yLXByb25lLgorCisgICAg
ICAgIFRoZSBzY3JpcHQgaXMgbm93IHVwZGF0ZWQgdG8gYWRkcmVzcyBib3RoIG9mIHRoZXNlIGlz
c3Vlcy4gRmlyc3QsIGl0CisgICAgICAgIGdlbmVyYXRlcyBmb3IgdGhlIGlucHV0IGFuZCBvdXRw
dXQgc2V0cyBvZiBmaWxlcy4gU2Vjb25kLCBpdCBkb2VzIGF3YXkKKyAgICAgICAgd2l0aCB0aGUg
Y29udmVudGlvbiBpbiB0aGUgRGVyaXZlZFNvdXJjZXMubWFrZSBtYWtlZmlsZXMgYW5kIGluc3Rl
YWQKKyAgICAgICAgd29ya3MgZnJvbSB0aGUgZGVwZW5kZW5jeSBvdXRwdXQgaW5mb3JtYXRpb24g
cHJpbnRlZCB3aGVuIGBtYWtlYCBpcworICAgICAgICBpbnZva2VkIHdpdGggLS1kZWJ1Zy4gVGhp
cyBzZWNvbmQgcGFydCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgbmV3CisgICAgICAgIHNjcmlwdCBl
eHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlLgorCisgICAgICAgICogU2NyaXB0cy9l
eHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlOiBBZGRlZC4KKyAgICAgICAgKFBhcnNl
cik6CisgICAgICAgIChQYXJzZXIuX19pbml0X18pOgorICAgICAgICAoUGFyc2VyLm5leHRMaW5l
KToKKyAgICAgICAgKFBhcnNlci5hZGRUYXJnZXQpOgorICAgICAgICAoUGFyc2VyLmFkZFByZXJl
cSk6CisgICAgICAgIChQYXJzZXIuZG9QYXJzZSk6CisgICAgICAgIChQYXJzZXIucHJpbnRJbnB1
dHMpOgorICAgICAgICAoUGFyc2VyLnByaW50T3V0cHV0cyk6CisgICAgICAgIChwYXJzZUFyZ3Mp
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS14Y2ZpbGVsaXN0
czoKKwogMjAxOC0xMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZ3Jlc3Npb24oUFNPTikgR29vZ2xlIE9BdXRoIGlzIGJyb2tlbiBpbiBwcml2YXRlIHNl
c3Npb25zCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2V4dHJhY3QtZGVwZW5kZW5jaWVzLWZy
b20tbWFrZWZpbGUgYi9Ub29scy9TY3JpcHRzL2V4dHJhY3QtZGVwZW5kZW5jaWVzLWZyb20tbWFr
ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzgwNzM3YjIzMjQxODQwZTFkZWMwNTA2ODIyODY5ZDU2YTQ4ZWNj
MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZXh0cmFjdC1kZXBlbmRlbmNpZXMt
ZnJvbS1tYWtlZmlsZQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
IHZpbTogc2V0IGZ0PXB5dGhvbjoKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyMgRXh0cmFjdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZyb20gdGhlIG91
dHB1dCBvZiBgbWFrZSAtZGAsIGdlbmVyYXRpbmcgYQorIyBsaXN0IG9mIHRvcC1sZXZlbCB0YXJn
ZXRzICh3aGljaCBhcmUgYXNzdW1lZCB0byBiZSBnZW5lcmF0ZWQvb3V0cHV0IGZpbGVzKQorIyBh
bmQgYSBsaXN0IG9mIGxlYWYgZGVwZW5kZW5jaWVzICh3aGljaCBhcmUgYXNzdW1lZCB0byBiZSB0
aGUgYmFzZSBpbnB1dAorIyBmaWxlcykuIFJlYWQgdGhlIG1ha2UgZGVwZW5kZW5jeSBpbmZvcm1h
dGlvbiBmcm9tIHN0ZGluIGFuZCB3cml0ZSB0aGUgcmVzdWx0cworIyB0byB0aGUgc3BlY2lmaWVk
IGZpbGVzLgorCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1w
b3J0IGFyZ3BhcnNlCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworCitjbGFzcyBQYXJzZXIob2Jq
ZWN0KToKKworICAgIGZpbGVOYW1lUGF0dGVybiAgICAgICAgID0gciJgKFteJ10rKSciCisgICAg
cmVQcmVyZXF1aXNpdGUgICAgICAgICAgPSByZS5jb21waWxlKHIiUHJlcmVxdWlzaXRlIHt9IGlz
IC4qIHRoYW4gdGFyZ2V0IHt9Ii5mb3JtYXQoZmlsZU5hbWVQYXR0ZXJuLCBmaWxlTmFtZVBhdHRl
cm4pKQorICAgIHJlV2FzQ29uc2lkZXJlZEFscmVhZHkgID0gcmUuY29tcGlsZShyInt9IHdhcyBj
b25zaWRlcmVkIGFscmVhZHkuIi5mb3JtYXQoZmlsZU5hbWVQYXR0ZXJuKSkKKyAgICByZVBydW5p
bmdGaWxlICAgICAgICAgICA9IHJlLmNvbXBpbGUociJQcnVuaW5nIGZpbGUge30uIi5mb3JtYXQo
ZmlsZU5hbWVQYXR0ZXJuKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi50YXJnZXRzID0ge30KKyAgICAgICAgc2VsZi5wcmVyZXFzID0ge30KKworICAgIGRlZiBuZXh0
TGluZShzZWxmLCBpbnB1dCk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBsaW5l
ID0gaW5wdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAg
ICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lOiB5aWVsZCBs
aW5lCisKKyAgICBkZWYgYWRkVGFyZ2V0KHNlbGYsIHRhcmdldCk6CisgICAgICAgIHNlbGYudGFy
Z2V0c1t0YXJnZXRdID0gMQorCisgICAgZGVmIGFkZFByZXJlcShzZWxmLCBwcmVyZXEpOgorICAg
ICAgICBzZWxmLnByZXJlcXNbcHJlcmVxXSA9IDEKKworICAgIGRlZiBkb1BhcnNlKHNlbGYsIGlu
cHV0KToKKworICAgICAgICAjIFB1bGwgb3V0IGV2ZXJ5dGhpbmcgdGhhdCBsb29rcyBsaWtlIGEg
dGFyZ2V0IG9yIHByZXJlcXVpc2l0ZS4KKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLm5leHRM
aW5lKGlucHV0KToKKyAgICAgICAgICAgIG0gPSBQYXJzZXIucmVQcmVyZXF1aXNpdGUuc2VhcmNo
KGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkVGFyZ2V0
KG0uZ3JvdXAoMikpCisgICAgICAgICAgICAgICAgc2VsZi5hZGRQcmVyZXEobS5ncm91cCgxKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtID0gUGFyc2VyLnJlV2Fz
Q29uc2lkZXJlZEFscmVhZHkuc2VhcmNoKGxpbmUpCisgICAgICAgICAgICBpZiBtOgorICAgICAg
ICAgICAgICAgIHNlbGYuYWRkVGFyZ2V0KG0uZ3JvdXAoMSkpCisgICAgICAgICAgICAgICAgY29u
dGludWUKKworICAgICAgICAgICAgbSA9IFBhcnNlci5yZVBydW5pbmdGaWxlLnNlYXJjaChsaW5l
KQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZFByZXJlcShtLmdy
b3VwKDEpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBSZWdhcmRpbmcg
cHJlcmVxdWlzaXRlcywgd2UncmUgaW50ZXJlc3RlZCBpbiBvbmx5IHRob3NlIHRoYXQgYXJlbid0
CisgICAgICAgICMgYWxzbyB0YXJnZXRzLiBXZSBvbmx5IHdhbnQgb25lcyB0aGF0IGRvbid0IGhh
dmUgYnVpbGQgcnVsZXMsIGFuZAorICAgICAgICAjIGhlbmNlIG11c3QgYWxyZWFkeSBleGlzdC4g
VGhvc2UgYXJlIG91ciBpbnB1dHMuCisKKyAgICAgICAgZm9yIGtleSBpbiBzZWxmLnRhcmdldHMu
a2V5cygpOgorICAgICAgICAgICAgc2VsZi5wcmVyZXFzLnBvcChrZXksIE5vbmUpCisKKyAgICBk
ZWYgcHJpbnRJbnB1dHMoc2VsZiwgaW5wdXRzRmlsZSk6CisgICAgICAgIHdpdGggb3BlbihpbnB1
dHNGaWxlLCAndycpIGFzIHRvRmlsZToKKyAgICAgICAgICAgIFsgcHJpbnQoInt9Ii5mb3JtYXQo
ZiksIGZpbGUgPSB0b0ZpbGUpIGZvciBmIGluIHNvcnRlZChzZWxmLnByZXJlcXMua2V5cygpKSBd
CisKKyAgICBkZWYgcHJpbnRPdXRwdXRzKHNlbGYsIG91dHB1dHNGaWxlKToKKyAgICAgICAgd2l0
aCBvcGVuKG91dHB1dHNGaWxlLCAndycpIGFzIHRvRmlsZToKKyAgICAgICAgICAgIFsgcHJpbnQo
Int9Ii5mb3JtYXQoZiksIGZpbGUgPSB0b0ZpbGUpIGZvciBmIGluIHNvcnRlZChzZWxmLnRhcmdl
dHMua2V5cygpKSBdCisKKworZGVmIHBhcnNlQXJncygpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNl
LkFyZ3VtZW50UGFyc2VyKCkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICct
LWlucHV0JywKKyAgICAgICAgbWV0YXZhcj0nPHhjZmlsZWxpc3Q+JywKKyAgICAgICAgdHlwZT1z
dHIsCisgICAgICAgIHJlcXVpcmVkID0gVHJ1ZSwKKyAgICAgICAgaGVscD0ncGF0aCB0byB0aGUg
eGNmaWxlbGlzdCBob2xkaW5nIGlucHV0IGZpbGVzJykKKworICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoCisgICAgICAgICctLW91dHB1dCcsCisgICAgICAgIG1ldGF2YXI9Jzx4Y2ZpbGVsaXN0Pics
CisgICAgICAgIHR5cGU9c3RyLAorICAgICAgICByZXF1aXJlZCA9IFRydWUsCisgICAgICAgIGhl
bHA9J3BhdGggdG8gdGhlIHhjZmlsZWxpc3QgaG9sZGluZyBvdXRwdXQvZ2VuZXJhdGVkIGZpbGVz
JykKKworICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisKKworZGVmIG1haW4oKToKKyAg
ICBhcmdzID0gcGFyc2VBcmdzKCkKKyAgICBwYXJzZXIgPSBQYXJzZXIoKQorCisgICAgcGFyc2Vy
LmRvUGFyc2Uoc3lzLnN0ZGluKQorICAgIHBhcnNlci5wcmludElucHV0cyhhcmdzLmlucHV0KQor
ICAgIHBhcnNlci5wcmludE91dHB1dHMoYXJncy5vdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUteGNmaWxlbGlzdHMgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLXhjZmlsZWxpc3RzCmluZGV4
IGExMjRlOTEwY2MzMzE5Mjg0YjZkYjIxN2IyMjQ5MTY4NTM3ZjJhNjUuLmIyZjU1MGUxODBiYzFj
N2IyOWE2Y2RkYTAzOTYzYTU5Y2I3Y2UxNjcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUteGNmaWxlbGlzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS14Y2ZpbGVsaXN0
cwpAQCAtMSw0NSArMSw0NSBAQAotIyEvYmluL2Jhc2gKLQorIyEvYmluL3NoCisjCiAjIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCiAjIGFyZSBtZXQ6CiAjCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAjCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIC54Y2ZpbGVs
aXN0IGZpbGVzIHRvIGJlIHVzZWQgYXMgb3V0cHV0IHNwZWNpZmljYXRpb25zCi0jIG9mIFJ1biBT
Y3JpcHQgYnVpbGQgcGhhc2VzLgorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIFRoaXMgc2NyaXB0IGdlbmVy
YXRlcyAueGNmaWxlbGlzdCBmaWxlcyB0byBiZSB1c2VkIGFzIGlucHV0IGFuZCBvdXRwdXQKKyMg
c3BlY2lmaWNhdGlvbnMgb2YgUnVuIFNjcmlwdCBidWlsZCBwaGFzZXMuCiAjCiAjIEN1cnJlbnRs
eSwgdGhpcyBzY3JpcHQgbG9va3MgYXQgdGhlIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyBhbmQg
R2VuZXJhdGUKICMgVW5pZmllZCBTb3VyY2VzIGJ1aWxkIHBoYXNlcy4gRm9yIHRoZSBmb3JtZXIs
IGl0IGludm9rZXMgdGhlCi0jIERlcml2ZWRTb3VyY2VzLm1ha2UgbWFrZWZpbGUsIHBhc3Npbmcg
aW4gYSB0YXJnZXQgdGhhdCByZXN1bHRzIGluIHRoZSBuYW1lcwotIyBvZiB0aGUgZ2VuZXJhdGVk
IHNvdXJjZSBmaWxlcyBiZWluZyBwcmludGVkIG91dC4gRm9yIHRoZSBsYXR0ZXIsIHRoZSBzY3Jp
cHQKLSMgaXMgaGFyZC1jb2RlZCB0byBrbm93IHRoZSBudW1iZXIgb2YgLmNwcCBhbmQgLm1tIGZp
bGVzIHRoYXQgYXJlIGdlbmVyYXRlZCBhbmQKLSMgY3JlYXRlcyBhbiBhcHByb3ByaWF0ZSAueGNm
aWxlbGlzdCBmaWxlcyBjb3ZlcmluZyB0aG9zZSBnZW5lcmF0ZWQgZmlsZXMuCi0jCi0jIFRoZSBn
ZW5lcmF0ZWQgLnhjZmlsZWxpc3QgZmlsZXMgYXJlIGNyZWF0ZWQgaW46CisjIERlcml2ZWRTb3Vy
Y2VzLm1ha2UgbWFrZWZpbGUsIHBhc3NpbmcgaW4gb3B0aW9ucyB0aGF0IHByaW50IG91dCB0aGUK
KyMgZGVwZW5kZW5jeSB0cmVlIGFuZCB1c2luZyB0aGF0IGluZm9ybWF0aW9uIHRvIGZvcm0gdGhl
IGFzc29jaWF0ZWQgaW5wdXQgYW5kCisjIG91dHB1dCAueGNmaWxlbGlzdCBmaWxlcy4gRm9yIHRo
ZSBsYXR0ZXIsIGl0IGludm9rZXMgdGhlIHNhbWUKKyMgZ2VuZXJhdGUtdW5pZmllZC1idW5kbGVz
LnJiIHNjcmlwdCB0aGF0IGdlbmVyYXRlcyB0aGUgYWN0dWFsCisjIFVuaWZpZWRTb3VyY2VzKi5j
cHAvbW0gZmlsZXMsIGFsYmVpdCBpbiBhIG1vZGUgdGhhdCBwcm9kdWNlcyAueGNmaWxlbGlzdAor
IyBmaWxlcyBpbnN0ZWFkLgogIwotIyAgICIke1dFQktJVF9ESVJ9L3tTb3VyY2UsVG9vbHN9LyR7
UFJPSkVDVF9OQU1FfS88c29tZS1uYW1lPi54Y2ZpbGVsaXN0IgorIyBUaGUgZ2VuZXJhdGVkIERl
cml2ZWRTb3VyY2VzLm1ha2UgLnhjZmlsZWxpc3QgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gaW4gdGhl
CisjIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBEZXJpdmVkU291cmNlcy5tYWtlIGZpbGUuIFRoZSBn
ZW5lcmF0ZWQgVW5pZmllZFNvdXJjZXMKKyMgLnhjZmlsZWxpc3QgZmlsZXMgYXJlIGNyZWF0ZWQg
aW4gJHtQUk9KRUNUX0RJUn0uCiAjCiAjIFRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCB0aGUgZ2Vu
ZXJhdGVkL2Rlcml2ZWQgc291cmNlcyBhcmUgY3JlYXRlZCBpbiB0aGUKICMgZm9sbG93aW5nIGxv
Y2F0aW9uLCBhbmQgaW5jb3Jwb3JhdGVzIHRoYXQgcGF0aCBpbnRvIHRoZSBwYXRocyBpdCBzdG9y
ZXMgaW4KQEAgLTYwLDEzICs2MCwzMyBAQAogIyBjb21wYXJlZCB0byB0aGUgdmVyc2lvbnMgY2hl
Y2tlZCBpbnRvIHRoZSByZXBvc2l0b3J5LiBJZiB0aGVyZSBhcmUKICMgZGlmZmVyZW5jZXMsIHRo
ZSB1c2VyIGlzIG5vdGlmaWVkIHNvIHRoYXQgdGhleSBrbm93IHRoYXQgdGhlIC54Y2ZpbGVsaXN0
CiAjIGZpbGVzIG5lZWQgdG8gYmUgcmVnZW5lcmF0ZWQuIFRoaXMgZmFjaWxpdHkgY2FuIGJlIGlu
Y29ycG9yYXRlZCBpbnRvIGEKLSMgY2hlY2staW4gaG9vayBvciBpbnRvIHRoZSBFV1MgKHBlcmhh
cHMgYXMgcGFydCBvZiBjaGVjay13ZWJraXQtc3R5bGUpLgorIyBidWlsZCBwaGFzZSwgYSBjaGVj
ay1pbiBob29rLCBvciBpbnRvIHRoZSBFV1MgKHBlcmhhcHMgYXMgcGFydCBvZgorIyBjaGVjay13
ZWJraXQtc3R5bGUpLgogCiAKIEhFUkU9IiQoY2QgIiQoZGlybmFtZSAiJDAiKSIgJiYgcHdkIC1Q
KSIKLVdFQktJVF9ESVI9IiQoY2QgIiR7SEVSRX0vLi4vLi4iICYmIHB3ZCAtUCkiCiAKIAorIyBQ
cmludCBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0LgorCitmdW5jdGlvbiBkaWUoKQoreworICAg
IGVjaG8gIiMjIyAkQCIgMT4mMgorICAgIGV4aXQgMQorfQorCisKKyMgVXRpbGl0eTogcmVwbGFj
ZSBvbmUgc3RyaW5nIHdpdGggYW5vdGhlciBpbiBhIGZpbGUuCisKK2Z1bmN0aW9uIHJlcGxhY2Uo
KQoreworICAgIEZJTEU9IiQxIgorICAgIFBBVFRFUk49IiQyIgorICAgIFJFUExBQ0VNRU5UPSIk
MyIKKworICAgIHNlZCAtRSAtZSAic3xeJHtQQVRURVJOfS98JHtSRVBMQUNFTUVOVH0vfCIgLWkg
JycgIiR7RklMRX0iCit9CisKICMgR2l2ZW4gYW4gLnhjZmlsZWxpc3QgbGlzdCBmaWxlIGNvbnRh
aW5pbmcgcGFydGlhbCBwYXRocyB0byB0aGUgZ2VuZXJhdGVkCiAjIGZpbGVzLCBtb2RpZnkgZWFj
aCBwYXRoIHRvIGFsc28gaW5jbHVkZSB0aGUgYWN0dWFsIGxvY2F0aW9uIG9mIGdlbmVyYXRlZAog
IyBmaWxlcyBmb3IgdGhlIGdpdmVuIHByb2plY3QuIEZvciBpbnN0YW5jZSwgbW9kaWZ5ICJVbmlm
aWVkU291cmNlczEuY3BwIiB0bwpAQCAtNzQsMjAgKzk0LDggQEAgV0VCS0lUX0RJUj0iJChjZCAi
JHtIRVJFfS8uLi8uLiIgJiYgcHdkIC1QKSIKIAogZnVuY3Rpb24gcHJlcGVuZF9wcmVmaXhfdG9f
YWxsX3BhdGhzKCkKIHsKLSAgICBQUk9KRUNUX05BTUU9IiQxIgotICAgIEZJTEU9IiQyIgotCi0g
ICAgaWYgW1sgIiR7UFJPSkVDVF9OQU1FfSIgPT0gV2ViS2l0IF1dCi0gICAgdGhlbgotICAgICAg
ICBERVJJVkVEX1NPVVJDRVNfRElSPVdlYktpdDIKLSAgICBlbGlmIFtbICIke1BST0pFQ1RfTkFN
RX0iID09IFdlYktpdExlZ2FjeSBdXQotICAgIHRoZW4KLSAgICAgICAgREVSSVZFRF9TT1VSQ0VT
X0RJUj1XZWJLaXQKLSAgICBlbHNlCi0gICAgICAgIERFUklWRURfU09VUkNFU19ESVI9IiR7UFJP
SkVDVF9OQU1FfSIKLSAgICBmaQotCi0gICAgc2VkIC1FIC1lICJzfF58XCRcKEJVSUxUX1BST0RV
Q1RTX0RJUlwpL0Rlcml2ZWRTb3VyY2VzLyR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vfCIgLWkgJycg
IiR7RklMRX0iCisgICAgRklMRT0iJDEiCisgICAgc2VkIC1FIC1lICJzfF58JHtERVJJVkVEX1NP
VVJDRVNfRElSfS98IiAtaSAnJyAiJHtGSUxFfSIKIH0KIAogCkBAIC05NiwyNCArMTA0LDE1IEBA
IGZ1bmN0aW9uIHByZXBlbmRfcHJlZml4X3RvX2FsbF9wYXRocygpCiAKIGZ1bmN0aW9uIGZpbmRf
Zmlyc3RfZXhpc3RpbmcoKQogewotICAgIERJUlM9KCIkQCIpCi0gICAgZm9yIERJUiBpbiAiJHtE
SVJTW0BdfSIKKyAgICBJVEVNUz0oIiRAIikKKyAgICBmb3IgSVRFTSBpbiAiJHtJVEVNU1tAXX0i
CiAgICAgZG8KLSAgICAgICAgW1sgLXggIiR7RElSfSIgXV0gJiYgeyBlY2hvICIke0RJUn0iOyBy
ZXR1cm4gMDsgfQorICAgICAgICBbWyAtZSAiJHtJVEVNfSIgXV0gJiYgeyBlY2hvICIke0lURU19
IjsgcmV0dXJuIDA7IH0KICAgICBkb25lCiAgICAgcmV0dXJuIDEKIH0KIAogCi0jIFV0aWxpdHk6
IGdpdmVuIGEgcHJvamVjdCBuYW1lLCBmaW5kIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIGl0Lgot
Ci1mdW5jdGlvbiBnZXRfcHJvamVjdF9kaXIoKQotewotICAgIGxvY2FsIFBST0pFQ1RfTkFNRT0i
JDEiCi0gICAgZmluZF9maXJzdF9leGlzdGluZyAiJHtXRUJLSVRfRElSfSIve1NvdXJjZSxUb29s
c30vIiR7UFJPSkVDVF9OQU1FfSIKLX0KLQotCiAjIEdpdmVuIGEgY2hlY2tlZC1pbiAueGNmaWxl
bGlzdCBhbmQgYSBuZXdseS1nZW5lcmF0ZWQgb25lIHN0b3JlZCBpbiBhCiAjIHRlbXBvcmFyeSBs
b2NhdGlvbiwgY29tcGFyZSB0aGUgdHdvIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNoYW5nZXMg
dGhhdCBuZWVkCiAjIHRvIGJlIGFjY291bnRlZCBmb3IuIElmIHRoZXJlIGFyZSBkaWZmZXJlbmNl
cywgcHJpbnQgb3V0IGEgbm90aWNlIGFuZCBwcmVwCkBAIC0xMzUsMTAxICsxMzQsMzEzIEBAIGZ1
bmN0aW9uIGNoZWNrX3hjZmlsZWxpc3QoKQogfQogCiAKLSMgR2VuZXJhdGUgLnhjZmlsZWxpc3Qg
ZmlsZXMgZm9yICJ1bmlmaWVkIHNvdXJjZXMiIGRlcml2ZWQgZmlsZXMuIE5vdGUgdGhhdAotIyB0
aGlzIGZpbGUgbGlzdCBnZW5lcmF0b3IgYXNzdW1lcyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlcml2
ZWQgZmlsZXMgKGluCi0jIHBhcnRpY3VsYXIsIHRoYXQgdGhleSBhcmUgYmFzZWQgcmVsYXRpdmUg
dG8gJChCVUlMVF9QUk9EVUNUU19ESVIpIHJhdGhlcgotIyB0aGFuLCBzYXkgJChQUk9KRUNUX0RF
UklWRURfRklMRV9ESVIpKS4gSWYgdGhlIFhjb2RlIHByb2plY3RzIGFyZSByZWZhY3RvcmVkCi0j
IHRvIHVzZSAkKFBST0pFQ1RfREVSSVZFRF9GSUxFX0RJUiksIHRoZW4gdGhpcyBzY3JpcHQgc2hv
dWxkIGJlIHVwZGF0ZWQsIHRvby4KK2Z1bmN0aW9uIHNldF9idWlsZF92YXJpYWJsZXNfZm9yX0ph
dmFTY3JpcHRDb3JlKCkKK3sKKyAgICBQUk9KRUNUX05BTUU9SmF2YVNjcmlwdENvcmUKKyAgICBQ
Uk9KRUNUX0RJUj0iJHtPUEVOU09VUkNFX0RJUn0vU291cmNlLyR7UFJPSkVDVF9OQU1FfSIKKyAg
ICBHRU5FUkFUT1I9IiR7UFJPSkVDVF9ESVJ9L1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3Vy
Y2VzLnNoIgorICAgIERFUklWRURfU09VUkNFU19NQUtFPSIke1BST0pFQ1RfRElSfS9EZXJpdmVk
U291cmNlcy5tYWtlIgorICAgIERFUklWRURfU09VUkNFU19ESVI9IiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy8ke1BST0pFQ1RfTkFNRX0iCisKKyAgICBleHBvcnQgRlJBTUVX
T1JLX1NFQVJDSF9QQVRIUz0KKyAgICBleHBvcnQgSEVBREVSX1NFQVJDSF9QQVRIUz0iCisgICAg
ICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZQor
ICAgICAgICAuCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVk
ZSIKKyAgICBleHBvcnQgU1lTVEVNX0ZSQU1FV09SS19TRUFSQ0hfUEFUSFM9IgorICAgICAgICAk
e1NES1JPT1R9L1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzIgorICAgIGV4cG9ydCBT
WVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUz0KK30KKwogCi1mdW5jdGlvbiBnZW5lcmF0ZV94Y2Zp
bGVsaXN0c19mcm9tX3VuaWZpZWRzb3VyY2VzKCkKK2Z1bmN0aW9uIHNldF9idWlsZF92YXJpYWJs
ZXNfZm9yX1dlYkNvcmUoKQogewotICAgIGxvY2FsIFBST0pFQ1RfTkFNRT0iJDEiCi0gICAgbG9j
YWwgTlVNX0NQUD0kMgotICAgIGxvY2FsIE5VTV9NTT0kMworICAgIFBST0pFQ1RfTkFNRT1XZWJD
b3JlCisgICAgUFJPSkVDVF9ESVI9IiR7T1BFTlNPVVJDRV9ESVJ9L1NvdXJjZS8ke1BST0pFQ1Rf
TkFNRX0iCisgICAgR0VORVJBVE9SPSIke1BST0pFQ1RfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWRl
cml2ZWQtc291cmNlcy5zaCIKKyAgICBERVJJVkVEX1NPVVJDRVNfTUFLRT0iJHtQUk9KRUNUX0RJ
Un0vRGVyaXZlZFNvdXJjZXMubWFrZSIKKyAgICBERVJJVkVEX1NPVVJDRVNfRElSPSIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvJHtQUk9KRUNUX05BTUV9IgorCisgICAgZXhw
b3J0IEZSQU1FV09SS19TRUFSQ0hfUEFUSFM9IgorICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJ
Un0iCisgICAgZXhwb3J0IEhFQURFUl9TRUFSQ0hfUEFUSFM9IgorICAgICAgICBQQUwKKyAgICAg
ICAgRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAgICAgL3Vzci9pbmNsdWRlL2xpYnhzbHQKKyAgICAg
ICAgL3Vzci9pbmNsdWRlL2xpYnhtbDIKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9s
b2NhbC9pbmNsdWRlCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5j
bHVkZS9XZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgJHtTREtST09UfS91c3IvbG9jYWwvaW5jbHVk
ZS9XZWJLaXRBZGRpdGlvbnMKKyAgICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2Nh
bC9pbmNsdWRlL3dlYnJ0YworICAgICAgICAke1NES1JPT1R9L3Vzci9sb2NhbC9pbmNsdWRlL3dl
YnJ0YworICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGUvd2Vi
cnRjL3Nkay9vYmpjL0ZyYW1ld29yay9IZWFkZXJzCisgICAgICAgICR7U0RLUk9PVH0vdXNyL2xv
Y2FsL2luY2x1ZGUvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9IZWFkZXJzCisgICAgICAgICR7
UFJPSkVDVF9ESVJ9IgorICAgIGV4cG9ydCBTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0i
CisgICAgICAgICR7U0RLUk9PVH0vU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MKKyAg
ICAgICAgJHtTREtST09UfS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzIgorICAgIGV4cG9ydCBT
WVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUz0KK30KIAotICAgIGxvY2FsIFhDRklMRUxJU1RfTkFN
RT0iVW5pZmllZFNvdXJjZXMueGNmaWxlbGlzdCIKLSAgICBsb2NhbCBQUk9KRUNUX0RJUj0iJChn
ZXRfcHJvamVjdF9kaXIgIiR7UFJPSkVDVF9OQU1FfSIpIgotICAgIGxvY2FsIFhDRklMRUxJU1Rf
UEFUSD0iJHtQUk9KRUNUX0RJUn0vJHtYQ0ZJTEVMSVNUX05BTUV9IgogCi0gICAgaWYgKCggJHtE
T19DSEVDS30gKSkKLSAgICB0aGVuCi0gICAgICAgIGVjaG8gIiMjIyBDaGVja2luZzogJHtYQ0ZJ
TEVMSVNUX1BBVEh9IgotICAgICAgICBYQ0ZJTEVMSVNUX1BBVEhfT1JJRz0iJHtYQ0ZJTEVMSVNU
X1BBVEh9IgotICAgICAgICBYQ0ZJTEVMSVNUX1BBVEg9Ii90bXAvJHtYQ0ZJTEVMSVNUX05BTUV9
IgotICAgIGVsc2UKLSAgICAgICAgZWNobyAiIyMjIEdlbmVyYXRpbmc6ICR7WENGSUxFTElTVF9Q
QVRIfSIKLSAgICBmaQorZnVuY3Rpb24gc2V0X2J1aWxkX3ZhcmlhYmxlc19mb3JfV2ViS2l0KCkK
K3sKKyAgICBQUk9KRUNUX05BTUU9V2ViS2l0CisgICAgUFJPSkVDVF9ESVI9IiR7T1BFTlNPVVJD
RV9ESVJ9L1NvdXJjZS8ke1BST0pFQ1RfTkFNRX0iCisgICAgR0VORVJBVE9SPSIke1BST0pFQ1Rf
RElSfS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCIKKyAgICBERVJJVkVEX1NP
VVJDRVNfTUFLRT0iJHtQUk9KRUNUX0RJUn0vRGVyaXZlZFNvdXJjZXMubWFrZSIKKyAgICBERVJJ
VkVEX1NPVVJDRVNfRElSPSIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0MiIKKworICAgIGV4cG9ydCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTPSIKKyAgICAgICAgJHtC
VUlMVF9QUk9EVUNUU19ESVJ9IgorICAgIGV4cG9ydCBIRUFERVJfU0VBUkNIX1BBVEhTPSIKKyAg
ICAgICAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlCisgICAgICAgICR7
QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJDb3JlLmZyYW1ld29yay9Qcml2YXRlSGVhZGVycy9Gb3J3
YXJkaW5nSGVhZGVycworICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0MgorICAgICAgICAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1
ZGUvV2ViS2l0QWRkaXRpb25zCisgICAgICAgICR7U0RLUk9PVH0vdXNyL2xvY2FsL2luY2x1ZGUv
V2ViS2l0QWRkaXRpb25zCisgICAgICAgICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwv
aW5jbHVkZS93ZWJydGMKKyAgICAgICAgJHtTREtST09UfS91c3IvbG9jYWwvaW5jbHVkZS93ZWJy
dGMKKyAgICAgICAgJHtQUk9KRUNUX0RJUn0iCisgICAgZXhwb3J0IFNZU1RFTV9GUkFNRVdPUktf
U0VBUkNIX1BBVEhTPSIKKyAgICAgICAgJHtTREtST09UfS9TeXN0ZW0vTGlicmFyeS9Qcml2YXRl
RnJhbWV3b3JrcworICAgICAgICAke1NES1JPT1R9L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mi
CisgICAgZXhwb3J0IFNZU1RFTV9IRUFERVJfU0VBUkNIX1BBVEhTPQorfQogCi0gICAgewotICAg
ICAgICBsb2NhbCBuCi0gICAgICAgIGZvciBuIGluICQoc2VxICROVU1fQ1BQKQotICAgICAgICBk
bwotICAgICAgICAgICAgZWNobyB1bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJjZSRuLmNwcAot
ICAgICAgICBkb25lCiAKLSAgICAgICAgZWNobworZnVuY3Rpb24gc2V0X2J1aWxkX3ZhcmlhYmxl
c19mb3JfRHVtcFJlbmRlclRyZWUoKQoreworICAgIFBST0pFQ1RfTkFNRT1EdW1wUmVuZGVyVHJl
ZQorICAgIFBST0pFQ1RfRElSPSIke09QRU5TT1VSQ0VfRElSfS9Ub29scy8ke1BST0pFQ1RfTkFN
RX0iCisgICAgR0VORVJBVE9SPSIke1BST0pFQ1RfRElSfS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2
ZWQtc291cmNlcy5zaCIKKyAgICBERVJJVkVEX1NPVVJDRVNfTUFLRT0iJHtQUk9KRUNUX0RJUn0v
RGVyaXZlZFNvdXJjZXMubWFrZSIKKyAgICBERVJJVkVEX1NPVVJDRVNfRElSPSIke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvJHtQUk9KRUNUX05BTUV9IgorCisgICAgZXhwb3J0
IEZSQU1FV09SS19TRUFSQ0hfUEFUSFM9CisgICAgZXhwb3J0IEhFQURFUl9TRUFSQ0hfUEFUSFM9
CisgICAgZXhwb3J0IFNZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTPQorICAgIGV4cG9ydCBT
WVNURU1fSEVBREVSX1NFQVJDSF9QQVRIUz0KK30KKworZnVuY3Rpb24gc2V0X2J1aWxkX3Zhcmlh
Ymxlc19mb3JfV2ViS2l0VGVzdFJ1bm5lcigpCit7CisgICAgUFJPSkVDVF9OQU1FPVdlYktpdFRl
c3RSdW5uZXIKKyAgICBQUk9KRUNUX0RJUj0iJHtPUEVOU09VUkNFX0RJUn0vVG9vbHMvJHtQUk9K
RUNUX05BTUV9IgorICAgIEdFTkVSQVRPUj0iJHtQUk9KRUNUX0RJUn0vU2NyaXB0cy9nZW5lcmF0
ZS1kZXJpdmVkLXNvdXJjZXMuc2giCisgICAgREVSSVZFRF9TT1VSQ0VTX01BS0U9IiR7UFJPSkVD
VF9ESVJ9L0Rlcml2ZWRTb3VyY2VzLm1ha2UiCisgICAgREVSSVZFRF9TT1VSQ0VTX0RJUj0iJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzLyR7UFJPSkVDVF9OQU1FfSIKKworICAg
IGV4cG9ydCBGUkFNRVdPUktfU0VBUkNIX1BBVEhTPQorICAgIGV4cG9ydCBIRUFERVJfU0VBUkNI
X1BBVEhTPQorICAgIGV4cG9ydCBTWVNURU1fRlJBTUVXT1JLX1NFQVJDSF9QQVRIUz0KKyAgICBl
eHBvcnQgU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFM9Cit9CiAKLSAgICAgICAgZm9yIG4gaW4g
JChzZXEgJE5VTV9NTSkKLSAgICAgICAgZG8KLSAgICAgICAgICAgIGVjaG8gdW5pZmllZC1zb3Vy
Y2VzL1VuaWZpZWRTb3VyY2Ukbi1tbS5tbQotICAgICAgICBkb25lCi0gICAgfSA+ICIke1hDRklM
RUxJU1RfUEFUSH0iCiAKLSAgICBwcmVwZW5kX3ByZWZpeF90b19hbGxfcGF0aHMgIiR7UFJPSkVD
VF9OQU1FfSIgIiR7WENGSUxFTElTVF9QQVRIfSIKLSAgICAoKCAke0RPX0NIRUNLfSApKSAmJiBj
aGVja194Y2ZpbGVsaXN0ICIke1hDRklMRUxJU1RfUEFUSF9PUklHfSIgIiR7WENGSUxFTElTVF9Q
QVRIfSIKK2Z1bmN0aW9uIGR1bXBfdmFyaWFibGVzKCkKK3sKKyAgICBlY2hvICJBQ1RJT04gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR7QUNUSU9OfSIKKyAgICBlY2hvICJPUyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR7T1N9IgorICAgIGVjaG8gIlBMQVRGT1JN
X05BTUUgICAgICAgICAgICAgICAgICAgICAgID0gJHtQTEFURk9STV9OQU1FfSIKKyAgICBlY2hv
ICJTREtST09UICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR7U0RLUk9PVH0iCisgICAg
ZWNobyAiU1JDUk9PVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAke1NSQ1JPT1R9Igor
ICAgIGVjaG8gIkJVSUxEX1NDUklQVFNfRElSICAgICAgICAgICAgICAgICAgID0gJHtCVUlMRF9T
Q1JJUFRTX0RJUn0iCisgICAgZWNobyAiQlVJTFRfUFJPRFVDVFNfRElSICAgICAgICAgICAgICAg
ICAgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0iCisgICAgZWNobyAiV0VCQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSICAgICAgICAgPSAke1dFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUn0iCisgICAg
ZWNobyAiV0VCS0lUMl9QUklWQVRFX0hFQURFUlNfRElSICAgICAgICAgPSAke1dFQktJVDJfUFJJ
VkFURV9IRUFERVJTX0RJUn0iCisgICAgZWNobyAiSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUiAgPSAke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9IgorICAgIGVj
aG8gIldFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJHtXRUJLSVRBRERJVElP
TlNfSEVBREVSX1NFQVJDSF9QQVRIU30iCisgICAgZWNobyAiIgorICAgIGVjaG8gIlBST0pFQ1Rf
TkFNRSAgICAgICAgICAgICAgICAgICAgICAgID0gJHtQUk9KRUNUX05BTUV9IgorICAgIGVjaG8g
IlBST0pFQ1RfRElSICAgICAgICAgICAgICAgICAgICAgICAgID0gJHtQUk9KRUNUX0RJUn0iCisg
ICAgZWNobyAiR0VORVJBVE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAke0dFTkVSQVRP
Un0iCisgICAgZWNobyAiREVSSVZFRF9TT1VSQ0VTX01BS0UgICAgICAgICAgICAgICAgPSAke0RF
UklWRURfU09VUkNFU19NQUtFfSIKKyAgICBlY2hvICJERVJJVkVEX1NPVVJDRVNfRElSICAgICAg
ICAgICAgICAgICA9ICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0iCisgICAgZWNobyAiIgorICAgIGVj
aG8gIkZSQU1FV09SS19TRUFSQ0hfUEFUSFMgICAgICAgICAgICAgID0gJHtGUkFNRVdPUktfU0VB
UkNIX1BBVEhTfSIKKyAgICBlY2hvICJIRUFERVJfU0VBUkNIX1BBVEhTICAgICAgICAgICAgICAg
ICA9ICR7SEVBREVSX1NFQVJDSF9QQVRIU30iCisgICAgZWNobyAiU1lTVEVNX0ZSQU1FV09SS19T
RUFSQ0hfUEFUSFMgICAgICAgPSAke1NZU1RFTV9GUkFNRVdPUktfU0VBUkNIX1BBVEhTfSIKIH0K
IAogCi0jIEdlbmVyYXRlIC54Y2ZpbGVsaXN0IGZpbGVzIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2Yg
dGhlIGdpdmVuIG1ha2VmaWxlIHdoZW4KLSMgcGFzc2VkIHRoZSAicHJpbnRfYWxsX2dlbmVyYXRl
ZF9maWxlcyIgdGFyZ2V0LgorZnVuY3Rpb24gc2V0X2J1aWxkX3ZhcmlhYmxlcygpCit7CisgICAg
UFJPSkVDVF9UQUc9IiQxIgorCisgICAgZXhwb3J0IEFDVElPTj1idWlsZAorICAgIGV4cG9ydCBP
Uz1NQUNPUworICAgIGV4cG9ydCBQTEFURk9STV9OQU1FPW1hY29zeAorICAgIGV4cG9ydCBTREtS
T09UPSIkKHhjcnVuIC1zaG93LXNkay1wYXRoKSIKKyAgICBleHBvcnQgQlVJTERfU0NSSVBUU19E
SVI9IiR7T1BFTlNPVVJDRV9ESVJ9L1NvdXJjZS9XVEYvU2NyaXB0cyIKKyAgICBleHBvcnQgQlVJ
TFRfUFJPRFVDVFNfRElSPSIkKGZpbmRfZmlyc3RfZXhpc3RpbmcgIiR7T1BFTlNPVVJDRV9ESVJ9
L1dlYktpdEJ1aWxkLyJ7RGVidWcsUmVsZWFzZX0qKSIKKyAgICBbWyAtbiAiJHtTREtST09UfSIg
XV0gfHwgZGllICJTREtST09UIGlzIG5vdCBkZWZpbmVkIgorICAgIFtbIC1lICIke0JVSUxEX1ND
UklQVFNfRElSfSIgXV0gfHwgZGllICIkQlVJTERfU0NSSVBUU19ESVIgZG9lcyBub3QgZXhpc3Qi
CisgICAgW1sgLW4gIiR7QlVJTFRfUFJPRFVDVFNfRElSfSIgXV0gfHwgZGllICJCVUlMVF9QUk9E
VUNUU19ESVIgaXMgbm90IGRlZmluZWQuIFlvdSBtYXkgbmVlZCB0byBidWlsZCBXZWJLaXQgZmly
c3QuIgorCisgICAgZXhwb3J0IFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUj0iJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L1dlYkNvcmUuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzIgorICAgIGV4cG9y
dCBXRUJLSVQyX1BSSVZBVEVfSEVBREVSU19ESVI9IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9XZWJL
aXQuZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzIgorICAgIGV4cG9ydCBKQVZBU0NSSVBUQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSPSIke0JVSUxUX1BST0RVQ1RTX0RJUn0vSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzIgorICAgIGV4cG9ydCBXRUJLSVRBRERJVElPTlNfSEVB
REVSX1NFQVJDSF9QQVRIUz0iJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucyAke1NES1JPT1R9L3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0
aW9ucyIKKyAgICBbWyAtZSAiJHtXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9IiBdXSB8fCBk
aWUgIiRXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIgZG9lcyBub3QgZXhpc3QuIFlvdSBtYXkg
bmVlZCB0byBidWlsZCBXZWJLaXQgZmlyc3QuIgorICAgIFtbIC1lICIke0pBVkFTQ1JJUFRDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVJ9IiBdXSB8fCBkaWUgIiRKQVZBU0NSSVBUQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSIGRvZXMgbm90IGV4aXN0LiBZb3UgbWF5IG5lZWQgdG8gYnVpbGQgV2ViS2l0
IGZpcnN0LiIKKyAgICAjIFtbIC1lICIke1dFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BB
VEhTfSIgXV0gfHwgZGllICIkV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMgZG9l
cyBub3QgZXhpc3QuIFlvdSBtYXkgbmVlZCB0byBidWlsZCBXZWJLaXQgZmlyc3QuIgorCisgICAg
bG9jYWwgRk49c2V0X2J1aWxkX3ZhcmlhYmxlc19mb3JfJHtQUk9KRUNUX1RBR30KKyAgICBsb2Nh
bCBJU19GVU5DVElPTj0kKHR5cGUgLXQgJEZOKQorICAgIFtbICIke0lTX0ZVTkNUSU9OfSIgPT0g
ImZ1bmN0aW9uIiBdXSAmJiBldmFsICRGTiB8fCBkaWUgIkNvdWxkIG5vdCBzZXQgYnVpbGQgdmFy
aWFibGVzIGZvciAke1BST0pFQ1RfVEFHfSIKKworICAgICMgRG8gdGhlc2UgYWZ0ZXIgcHJvamVj
dC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbi4KKworICAgIGV4cG9ydCBTUkNST09UPSIke1BST0pF
Q1RfRElSfSIKKworICAgIFtbIC1lICIke1BST0pFQ1RfRElSfSIgXV0gfHwgZGllICIkUFJPSkVD
VF9ESVIgZG9lcyBub3QgZXhpc3QiCisgICAgW1sgLWUgIiR7R0VORVJBVE9SfSIgXV0gfHwgZGll
ICIkR0VORVJBVE9SIGRvZXMgbm90IGV4aXN0IgorICAgIFtbIC1lICIke0RFUklWRURfU09VUkNF
U19NQUtFfSIgXV0gfHwgZGllICIkREVSSVZFRF9TT1VSQ0VTX01BS0UgZG9lcyBub3QgZXhpc3Qi
CisgICAgW1sgLWUgIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0iIF1dIHx8IGRpZSAiJERFUklWRURf
U09VUkNFU19ESVIgZG9lcyBub3QgZXhpc3QiCisKKyAgICAjIGR1bXBfdmFyaWFibGVzCit9CisK
IAotZnVuY3Rpb24gZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV9tYWtlZmlsZSgpCitmdW5jdGlv
biBzb3J0X2ZpbGVzKCkKIHsKLSAgICBsb2NhbCBQUk9KRUNUX05BTUU9IiQxIgotICAgIGxvY2Fs
IE1BS0VGSUxFX05BTUU9IiQyIgotICAgIGxvY2FsIFhDRklMRUxJU1RfTkFNRT0iJDMiCisgICAg
c29ydCAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAtbyAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BB
VEh9IgorICAgIHNvcnQgIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iIC1vICIke09VVFBVVF9Y
Q0ZJTEVMSVNUX1BBVEh9IgorfQorCiAKLSAgICBsb2NhbCBQUk9KRUNUX0RJUj0iJChnZXRfcHJv
amVjdF9kaXIgIiR7UFJPSkVDVF9OQU1FfSIpIgotICAgIGxvY2FsIFhDRklMRUxJU1RfUEFUSD0i
JHtQUk9KRUNUX0RJUn0vJHtYQ0ZJTEVMSVNUX05BTUV9IgorIyBJZiB3ZSdyZSBkb2luZyBhIGNo
ZWNrIChhcyBvcHBvc2VkIHRvIGdlbmVyYXRpbmcgdGhlIGZpbGVzKSwgdGhlbiByZWRpcmVjdAor
IyB0aGUgc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBmaWxlcyBpbiBhIHRlbXBvcmFyeSBsb2NhdGlv
biAoc28gdGhhdCB3ZSBjYW4KKyMgY29tcGFyZSB0aG9zZSB0byB0aGUgb3JpZ2luYWxzIGxhdGVy
KS4KIAorZnVuY3Rpb24gY2hlY2tfcHJvbG9nKCkKK3sKICAgICBpZiAoKCAke0RPX0NIRUNLfSAp
KQogICAgIHRoZW4KLSAgICAgICAgZWNobyAiIyMjIENoZWNraW5nOiAke1hDRklMRUxJU1RfUEFU
SH0iCi0gICAgICAgIFhDRklMRUxJU1RfUEFUSF9PUklHPSIke1hDRklMRUxJU1RfUEFUSH0iCi0g
ICAgICAgIFhDRklMRUxJU1RfUEFUSD0iL3RtcC8ke1hDRklMRUxJU1RfTkFNRX0iCisgICAgICAg
IElOUFVUX1hDRklMRUxJU1RfUEFUSF9PUklHPSIke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iCisg
ICAgICAgIElOUFVUX1hDRklMRUxJU1RfUEFUSD0iL3RtcC8ke0lOUFVUX1hDRklMRUxJU1RfUEFU
SCMjL30iCisgICAgICAgIE9VVFBVVF9YQ0ZJTEVMSVNUX1BBVEhfT1JJRz0iJHtPVVRQVVRfWENG
SUxFTElTVF9QQVRIfSIKKyAgICAgICAgT1VUUFVUX1hDRklMRUxJU1RfUEFUSD0iL3RtcC8ke09V
VFBVVF9YQ0ZJTEVMSVNUX1BBVEgjIy99IgorICAgICAgICBta2RpciAtcCAiJChkaXJuYW1lICIk
e0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iKSIKKyAgICAgICAgbWtkaXIgLXAgIiQoZGlybmFtZSAi
JHtPVVRQVVRfWENGSUxFTElTVF9QQVRIfSIpIgogICAgIGVsc2UKLSAgICAgICAgZWNobyAiIyMj
IEdlbmVyYXRpbmc6ICR7WENGSUxFTElTVF9QQVRIfSIKKyAgICAgICAgZWNobyAiIyMjIEdlbmVy
YXRpbmc6ICR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIKKyAgICAgICAgZWNobyAiIyMjIEdlbmVy
YXRpbmc6ICR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCiAgICAgZmkKK30KKwogCi0gICAgbG9j
YWwgTUFLRV9GTEFHUz0oCi0gICAgICAgIC0tbm8tYnVpbHRpbi1ydWxlcwotICAgICAgICBPUz1N
QUNPUwotICAgICAgICBTREtST09UPSQoeGNydW4gLS1zaG93LXNkay1wYXRoKQotICAgICAgICBG
UkFNRVdPUktfU0VBUkNIX1BBVEhTPS4KLSAgICAgICAgSEVBREVSX1NFQVJDSF9QQVRIUz0ke1dF
QktJVF9ESVJ9L1NvdXJjZS9XVEYKLSAgICApCisjIElmIHdlJ3JlIGRvaW5nIGEgY2hlY2ssIHRo
ZW4gZGlmZiB0aGUgbmV3IGZpbGVzIGFnYWluc3QgdGhlIG9yaWdpbmFscy4KIAotICAgIG1ha2Ug
LUMgIiR7UFJPSkVDVF9ESVJ9IiAtZiAiJHtNQUtFRklMRV9OQU1FfSIgIiR7TUFLRV9GTEFHU1tA
XX0iIHByaW50X2FsbF9nZW5lcmF0ZWRfZmlsZXMgXAotICAgICAgICB8IHNvcnQgfCB1bmlxID4g
IiR7WENGSUxFTElTVF9QQVRIfSIKK2Z1bmN0aW9uIGNoZWNrX2VwaWxvZygpCit7CisgICAgaWYg
KCggJHtET19DSEVDS30gKSkKKyAgICB0aGVuCisgICAgICAgIGVjaG8gIiMjIyBDaGVja2luZzog
JHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IgorICAgICAgICBjaGVja194Y2ZpbGVsaXN0ICIke0lO
UFVUX1hDRklMRUxJU1RfUEFUSF9PUklHfSIgIiR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIKIAot
ICAgIHByZXBlbmRfcHJlZml4X3RvX2FsbF9wYXRocyAiJHtQUk9KRUNUX05BTUV9IiAiJHtYQ0ZJ
TEVMSVNUX1BBVEh9IgotICAgICgoICR7RE9fQ0hFQ0t9ICkpICYmIGNoZWNrX3hjZmlsZWxpc3Qg
IiR7WENGSUxFTElTVF9QQVRIX09SSUd9IiAiJHtYQ0ZJTEVMSVNUX1BBVEh9IgorICAgICAgICBl
Y2hvICIjIyMgQ2hlY2tpbmc6ICR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisgICAgICAgIGNo
ZWNrX3hjZmlsZWxpc3QgIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSF9PUklHfSIgIiR7T1VUUFVU
X1hDRklMRUxJU1RfUEFUSH0iCisgICAgZmkKIH0KIAogCi0jIFdyYXBwZXIgYXJvdW5kIGdlbmVy
YXRlX3hjZmlsZWxpc3RzX2Zyb21fbWFrZWZpbGUoKSB0byBoYW5kbGUgdGhlIGNvbW1vbgotIyBw
YXR0ZXJuIG9mIGdlbmVyYXRpbmcgdGhlIGxpc3Qgb2YgZmlsZXMgZ2VuZXJhdGVkIGZyb20gdGhl
Ci0jIERlcml2ZWRTb3VyY2VzLm1ha2UgbWFrZWZpbGVzLgorIyBHZW5lcmF0ZSAueGNmaWxlbGlz
dCBmaWxlcyBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIERlcml2ZWRTb3VyY2VzLm1ha2Ugd2hlbgor
IyBpbnZva2VkIHRvIHByaW50IG91dCBpdHMgZGVwZW5kZW5jeSBsaXN0LgogCi1mdW5jdGlvbiBn
ZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2ZWRzb3VyY2VzX21ha2VmaWxlKCkKK2Z1bmN0
aW9uIGdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fZGVyaXZlZHNvdXJjZXMoKQogewotICAgIGxv
Y2FsIFBST0pFQ1RfTkFNRT0iJDEiCi0gICAgZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV9tYWtl
ZmlsZSAiJHtQUk9KRUNUX05BTUV9IiBEZXJpdmVkU291cmNlcy5tYWtlIERlcml2ZWRTb3VyY2Vz
LnhjZmlsZWxpc3QKKyAgICBzZXRfYnVpbGRfdmFyaWFibGVzICIkMSIKKworICAgIGxvY2FsIERF
UklWRURfU09VUkNFU19NQUtFX1BBVEg9IiQoZGlybmFtZSAiJHtERVJJVkVEX1NPVVJDRVNfTUFL
RX0iKSIKKyAgICBJTlBVVF9YQ0ZJTEVMSVNUX1BBVEg9IiR7REVSSVZFRF9TT1VSQ0VTX01BS0Vf
UEFUSH0vRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCIKKyAgICBPVVRQVVRfWENGSUxF
TElTVF9QQVRIPSIke0RFUklWRURfU09VUkNFU19NQUtFX1BBVEh9L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IgorCisgICAgIyBTZWUgY29tbWVudHMgaW4gZ2VuZXJhdGVfeGNmaWxl
bGlzdHNfZnJvbV91bmlmaWVkc291cmNlcyBmb3Igd2hhdCB3ZSdyZQorICAgICMgdHJ5aW5nIHRv
IGFjaGlldmUgd2l0aCBGRUFUVVJFX0RFRklORVMuCisKKyAgICBleHBvcnQgRkVBVFVSRV9ERUZJ
TkVTPSIkKGdyZXAgJ2lmZXEuKmZpbmRzdHJpbmcgLipGRUFUVVJFX0RFRklORVMuKicgIiR7REVS
SVZFRF9TT1VSQ0VTX01BS0V9IiB8IHNlZCAtRSAtZSAncy8uKiwgKC4qKVwpL1wxLycpIgorCisg
ICAgIyBHZW5lcmF0ZSB0aGUgLnhjZmlsZWxpc3QgZmlsZXMuCisKKyAgICBjaGVja19wcm9sb2cK
KworICAgICIke0dFTkVSQVRPUn0iIE5PX1NVUFBMRU1FTlRBTF9GSUxFUz0xIC0tbm8tYnVpbHRp
bi1ydWxlcyAtLWRyeS1ydW4gLS1hbHdheXMtbWFrZSAtLWRlYnVnPWFidmlqbSBhbGwgfAorICAg
ICAgICAiJHtPUEVOU09VUkNFX0RJUn0iL1Rvb2xzL1NjcmlwdHMvZXh0cmFjdC1kZXBlbmRlbmNp
ZXMtZnJvbS1tYWtlZmlsZSAtLWlucHV0ICIke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iIC0tb3V0
cHV0ICIke09VVFBVVF9YQ0ZJTEVMSVNUX1BBVEh9IgorCisgICAgcmVwbGFjZSAiJHtJTlBVVF9Y
Q0ZJTEVMSVNUX1BBVEh9IiAnV2ViQ29yZScgJyQoUFJPSkVDVF9ESVIpJworICAgIHJlcGxhY2Ug
IiR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIgJ0phdmFTY3JpcHRDb3JlJyAnJChQUk9KRUNUX0RJ
UiknCisgICAgcmVwbGFjZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAnSmF2YVNjcmlwdENv
cmVQcml2YXRlSGVhZGVycycgJyQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikn
CisgICAgcmVwbGFjZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAnV2ViS2l0MlByaXZhdGVI
ZWFkZXJzJyAnJChXRUJLSVQyX1BSSVZBVEVfSEVBREVSU19ESVIpJworICAgIHJlcGxhY2UgIiR7
SU5QVVRfWENGSUxFTElTVF9QQVRIfSIgIiR7UFJPSkVDVF9ESVJ9IiAnJChQUk9KRUNUX0RJUikn
CisgICAgcmVwbGFjZSAiJHtJTlBVVF9YQ0ZJTEVMSVNUX1BBVEh9IiAiJHtXRUJDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJ9IiAnJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpJworICAgIHJl
cGxhY2UgIiR7SU5QVVRfWENGSUxFTElTVF9QQVRIfSIgIiR7V0VCS0lUMl9QUklWQVRFX0hFQURF
UlNfRElSfSIgJyQoV0VCS0lUMl9QUklWQVRFX0hFQURFUlNfRElSKScKKyAgICByZXBsYWNlICIk
e0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iICIke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVJ9IiAnJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKScKKyAgICByZXBs
YWNlICIke0lOUFVUX1hDRklMRUxJU1RfUEFUSH0iICIke0JVSUxUX1BST0RVQ1RTX0RJUn0iICck
KEJVSUxUX1BST0RVQ1RTX0RJUiknCisKKyAgICBwcmVwZW5kX3ByZWZpeF90b19hbGxfcGF0aHMg
IiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisgICAgcmVwbGFjZSAiJHtPVVRQVVRfWENGSUxF
TElTVF9QQVRIfSIgIiR7QlVJTFRfUFJPRFVDVFNfRElSfSIgJyQoQlVJTFRfUFJPRFVDVFNfRElS
KScKKworICAgIHNvcnRfZmlsZXMKKyAgICBjaGVja19lcGlsb2cKK30KKworCisjIEdlbmVyYXRl
IC54Y2ZpbGVsaXN0IGZpbGVzIGZvciAidW5pZmllZCBzb3VyY2VzIiBkZXJpdmVkIGZpbGVzLiBX
ZSBnZW5lcmF0ZQorIyB0d28gZmlsZXM6IFVuaWZpZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
KHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMgdGhhdAorIyBnZXQgYnVuZGxlZCBpbnRvIHRoZSB2
YXJpb3VzIFVuaWZpZWRTb3VyY2UqLmNwcC9tbSBmaWxlcykgYW5kCisjIFVuaWZpZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0ICh0aGUgbGlzdCBvZiBVbmlmaWVkU291cmNlKi5jcHAvbW0gZmls
ZXMpLgorIyBCb3RoIG9mIHRoZXNlIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgc2FtZSBTb3VyY2Vz
Ki50eHQgZmlsZXMgdXNlZCBieQorIyBnZW5lcmF0ZS11bmlmaWVkLXNvdXJjZS1idW5kbGVzLnJi
LiBUaGUgLnhjZmlsZWxpc3QgZmlsZXMgYXJlIHdyaXR0ZW4gaW50bworIyB0aGUgYXNzb2NpYXRl
ZCBwcm9qZWN0IGRpcmVjdG9yeS4KKworZnVuY3Rpb24gZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJv
bV91bmlmaWVkc291cmNlcygpCit7CisgICAgc2V0X2J1aWxkX3ZhcmlhYmxlcyAiJDEiCisKKyAg
ICBJTlBVVF9YQ0ZJTEVMSVNUX1BBVEg9IiR7UFJPSkVDVF9ESVJ9L1VuaWZpZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QiCisgICAgT1VUUFVUX1hDRklMRUxJU1RfUEFUSD0iJHtQUk9KRUNUX0RJ
Un0vVW5pZmllZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QiCisKKyAgICAjIERlZmluZSBGRUFU
VVJFX0RFRklORVMgaW4gb3JkZXIgdG8gZW5hYmxlIGV2ZXJ5IHBvc3NpYmxlIGZlYXR1cmUsIHRo
dXMKKyAgICAjIGluY2x1ZGluZyBldmVyeSBwb3NzaWJsZSBpbnB1dCBmaWxlIGludG8gdGhlIGdl
bmVyYXRlZCAueGNmaWxlbGlzdCBmaWxlLgorICAgICMgVGhpcyBtYXkgb3Zlci1zcGVjaWZ5IHRo
ZSBpbnB1dCAtLSB0aGF0IGlzLCBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlbid0CisgICAgIyBhY3R1
YWxseSBpbmNsdWRlZCBpbiB0aGUgVW5pZmllZFNvdXJjZXMgZmlsZXMgLS0gYnV0IHRoYXQncyBP
Sy4gVGhlIHdvcnN0CisgICAgIyB0aGF0IHdpbGwgaGFwcGVuIGlzIHRoYXQgb25lIG9mIHRoZXNl
IGV4dHJhIGZpbGVzIHdpbGwgZ2V0IG1vZGlmaWVkIGFuZAorICAgICMgd2UnbGwgdW5uZWNlc3Nh
cmlseSBnbyB0aHJvdWdoIHRoZSBHZW5lcmF0ZSBVbmlmaWVkIFNvdXJjZXMgcGhhc2UuIFRoaXMK
KyAgICAjIHdpbGwgdW5uZWNlc3NhcmlseSBnbyB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGdlbmVy
YXRpbmcgdGhlCisgICAgIyBVbmlmaWVkU291cmNlcywgYnV0IHNpbmNlIHRoYXQgcHJvY2VzcyB3
cml0ZXMvdXBkYXRlcyB0aGUgVW5pZmllZFNvdXJjZXMKKyAgICAjIGZpbGVzIG9ubHkgaWYgdGhl
aXIgY29udGVudHMgYWN0dWFsbHkgY2hhbmdlLCB3ZSB3b24ndCBlbmQgdXAgY2hhbmdpbmcKKyAg
ICAjIGFueSBVbmlmaWVkU291cmNlcyBmaWxlcyBhbmQgbm90aGluZyBnZXRzIHVubmVjZXNzYXJp
bHkgcmVjb21waWxlZC4KKworICAgIGV4cG9ydCBGRUFUVVJFX0RFRklORVM9IiQoY2QgIiR7UFJP
SkVDVF9ESVJ9IjsgZ3JlcCAnI2lmJyAkKGZpbmQgLiAtbmFtZSAnU291cmNlcyoudHh0JykgfCBz
ZWQgLUUgLWUgJ3MvLippZiAoRU5BQkxFLiopL1wxLycpIgorCisgICAgIyBHZW5lcmF0ZSB0aGUg
LnhjZmlsZWxpc3QgZmlsZXMuCisKKyAgICBjaGVja19wcm9sb2cKKworICAgICIke1BST0pFQ1Rf
RElSfS9TY3JpcHRzL2dlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaCIgXAorICAgICAgICAtLWdl
bmVyYXRlLXhjZmlsZWxpc3RzIFwKKyAgICAgICAgLS1pbnB1dC14Y2ZpbGVsaXN0LXBhdGggIiR7
SU5QVVRfWENGSUxFTElTVF9QQVRIfSIgXAorICAgICAgICAtLW91dHB1dC14Y2ZpbGVsaXN0LXBh
dGggIiR7T1VUUFVUX1hDRklMRUxJU1RfUEFUSH0iCisKKyAgICByZXBsYWNlICIke0lOUFVUX1hD
RklMRUxJU1RfUEFUSH0iICIke0JVSUxUX1BST0RVQ1RTX0RJUn0iICckKEJVSUxUX1BST0RVQ1RT
X0RJUiknCisgICAgcmVwbGFjZSAiJHtPVVRQVVRfWENGSUxFTElTVF9QQVRIfSIgIiR7QlVJTFRf
UFJPRFVDVFNfRElSfSIgJyQoQlVJTFRfUFJPRFVDVFNfRElSKScKKworICAgIHNvcnRfZmlsZXMK
KyAgICBjaGVja19lcGlsb2cKIH0KIAogCiAjIFByb2Nlc3MgY29tbWFuZC1saW5lIHBhcmFtZXRl
cnMuCiAKK1JPT1RfRElSPSIkKGNkICIke0hFUkV9Ly4uLy4uLy4uIiAmJiBwd2QgLVApIgorT1BF
TlNPVVJDRV9ESVI9IiR7Uk9PVF9ESVJ9L09wZW5Tb3VyY2UiCitbWyAtbiAiJHtST09UX0RJUn0i
IF1dIHx8IGRpZSAiQ291bGQgbm90IGZpbmQgUk9PVF9ESVIiCitbWyAtbiAiJHtPUEVOU09VUkNF
X0RJUn0iIF1dIHx8IGRpZSAiQ291bGQgbm90IGZpbmQgT1BFTlNPVVJDRV9ESVIiCitbWyAtZSAi
JHtPUEVOU09VUkNFX0RJUn0iIF1dIHx8IGRpZSAiJE9QRU5TT1VSQ0VfRElSIGRvZXMgbm90IGV4
aXN0IgorCiBET19DSEVDSz0wCiBERUZFUlJFRF9FWElUX0NPREU9MAogCkBAIC0yNDIsMTUgKzQ1
MywyMCBAQCBkbwogICAgIHNoaWZ0CiBkb25lCiAKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21f
ZGVyaXZlZHNvdXJjZXMgSmF2YVNjcmlwdENvcmUKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21f
ZGVyaXZlZHNvdXJjZXMgV2ViQ29yZQorZ2VuZXJhdGVfeGNmaWxlbGlzdHNfZnJvbV9kZXJpdmVk
c291cmNlcyBXZWJLaXQKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fZGVyaXZlZHNvdXJjZXMg
RHVtcFJlbmRlclRyZWUKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fZGVyaXZlZHNvdXJjZXMg
V2ViS2l0VGVzdFJ1bm5lcgorCitnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRzb3Vy
Y2VzIEphdmFTY3JpcHRDb3JlCitnZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX3VuaWZpZWRzb3Vy
Y2VzIFdlYkNvcmUKK2dlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fdW5pZmllZHNvdXJjZXMgV2Vi
S2l0CiAKLWdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fdW5pZmllZHNvdXJjZXMgSmF2YVNjcmlw
dENvcmUgMTQ1IDUKLWdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fdW5pZmllZHNvdXJjZXMgV2Vi
Q29yZSA1MzAgNjIKLWdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fdW5pZmllZHNvdXJjZXMgV2Vi
S2l0IDEwMCA4MAogCi1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2ZWRzb3VyY2VzX21h
a2VmaWxlIEphdmFTY3JpcHRDb3JlCi1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2ZWRz
b3VyY2VzX21ha2VmaWxlIFdlYkNvcmUKLWdlbmVyYXRlX3hjZmlsZWxpc3RzX2Zyb21fZGVyaXZl
ZHNvdXJjZXNfbWFrZWZpbGUgV2ViS2l0Ci1nZW5lcmF0ZV94Y2ZpbGVsaXN0c19mcm9tX2Rlcml2
ZWRzb3VyY2VzX21ha2VmaWxlIFdlYktpdFRlc3RSdW5uZXIKLWdlbmVyYXRlX3hjZmlsZWxpc3Rz
X2Zyb21fZGVyaXZlZHNvdXJjZXNfbWFrZWZpbGUgRHVtcFJlbmRlclRyZWUKK1NPVVJDRUQ9JChb
WyAiJDAiID09ICIke0JBU0hfU09VUkNFW0BdfSIgXV0gJiYgZWNobyAwIHx8IGVjaG8gMSkKK2lm
ICgoICEgJFNPVVJDRUQgKSkKK3RoZW4KKyAgICBleGl0ICR7REVGRVJSRURfRVhJVF9DT0RFfQor
ZmkKIAotZXhpdCAke0RFRkVSUkVEX0VYSVRfQ09ERX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>