<?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>9191</bug_id>
          
          <creation_ts>2006-05-31 10:37:16 -0700</creation_ts>
          <short_desc>JS*ElementWrapperFactory should be autogenerated</short_desc>
          <delta_ts>2008-05-22 14:30:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ian</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>44139</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-31 10:37:16 -0700</bug_when>
    <thetext>Currently we use JSHTMLElementWrapperFactory and JSSVGElementWrapper factory when converting from impl pointers to the actual JS* binding classes.  These are currently manually edited files, but they should be autogenerated.  It should not be hard to modify ksvg2/scripts/make_names.pl to generate this sort of file as well.  Once all of our bindings are autogenerated, it would be simple to use htmltags.in and svgtags.in as source data for these files.  It would also be possible to use exiting logic in WebCore/bindings/scripts/CodeGenerator.pm to crawl through all .idl files to find all classes.

Another way to work this would be to unify JS*ElementWrapperFactory files into a single hash lookup.  That could be autogenerated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29875</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-31 04:57:41 -0800</bug_when>
    <thetext>Yeah, this needs to be fixed.  These files are already out of date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65386</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-27 02:31:36 -0800</bug_when>
    <thetext>Eventually we&apos;ll fix this.  It&apos;s just an hour or so of tweaking the perl scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80669</commentid>
    <comment_count>3</comment_count>
      <attachid>21207</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-05-16 18:23:54 -0700</bug_when>
    <thetext>Created attachment 21207
First try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81033</commentid>
    <comment_count>4</comment_count>
      <attachid>21207</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-05-20 14:27:29 -0700</bug_when>
    <thetext>Comment on attachment 21207
First try

Wow.  Totally awesome.

I assume you&apos;ve diff&apos;d the generated file from the old manual file to confirm that there are no bad changes?

I think long term we want to move away from hacks in the perl file, and instead use a more advanced data file for generation.  For example, you could encode all of the information from the perl hashes in the htmltags.in file using proper comments.  (Or we could turn things like htmltags.in into XML like mozilla has for their bindings stuff.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81118</commentid>
    <comment_count>5</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-05-21 12:51:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 21207 [edit])
&gt; Wow.  Totally awesome.
&gt; 
&gt; I assume you&apos;ve diff&apos;d the generated file from the old manual file to confirm
&gt; that there are no bad changes?

Yes (it is not exactly a diff as the old code is using some macros to generate the code). The preparatory work I checked in last week was to guarantee that all tags would be guarded by the right #ifdefine guard and are not taken into account if the guard is not matched.

I have also tested the build thoroughly with different options to confirm that I had not forgotten some generated code.

&gt; I think long term we want to move away from hacks in the perl file, and instead
&gt; use a more advanced data file for generation.  For example, you could encode
&gt; all of the information from the perl hashes in the htmltags.in file using
&gt; proper comments.  (Or we could turn things like htmltags.in into XML like
&gt; mozilla has for their bindings stuff.)

I think the best way here is to opt for XML files. Some of make_names.pl parameters could also be included (like guardCppWith...) in the *.in files. It would also clean and simplify make_names.pl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81258</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-05-22 14:30:45 -0700</bug_when>
    <thetext>Committed in r34034.

Submitted bug 19200 about the information that should be moved to the *.in files.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21207</attachid>
            <date>2008-05-16 18:23:54 -0700</date>
            <delta_ts>2008-05-20 14:27:29 -0700</delta_ts>
            <desc>First try</desc>
            <filename>bug9191-CL.patch</filename>
            <type>text/plain</type>
            <size>47540</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmFjMjcwZC4uYmZjZWM0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOC0wNS0xNiAgSnVsaWVuIENoYWZm
cmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgOTE5MTogSlMqRWxlbWVudFdyYXBwZXJGYWN0b3J5
IHNob3VsZCBiZSBhdXRvZ2VuZXJhdGVkCisKKyAgICAgICAgLSBBZGQgYSBuZXcgb3B0aW9uIHRv
IG1ha2VfbmFtZXMgLS13cmFwcGVyRmFjdG9yeSB3aGljaCB3b3JrcyBsaWtlIC0td3JhcHBlciBi
dXQgZ2VuZXJhdGlvbnMgdGhlCisgICAgICAgIEpTKkVsZW1lbnRXcmFwcGVyRmFjdG9yaWVzLgor
CisgICAgICAgIC0gQWRkZWQgdGhlIG5ldyBwYXJhbWV0ZXIgdG8gdGhlIGRpZmZlcmVudCBidWls
ZCBzeXN0ZW1zLgorCisgICAgICAgIC0gUmVtb3ZlZCBKUypFbGVtZW50V3JhcHBlckZhY3Rvcmll
cyBpbiBiaW5kaW5ncy9qcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdFbGVtZW50V3JhcHBlckZhY3Rv
cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKwogMjAwOC0wNS0x
NiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEJyYWR5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDRhMzhkOTIuLjM3YjBmNTMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTM2Miw2ICszNjIsOCBAQCBhbGwgOiBcCiAgICAgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggXAogICAgIFwKICAgICBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlVGFibGUuY3Bw
IFwKKyAgICBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKKyAgICBKU1NWR0VsZW1l
bnRXcmFwcGVyRmFjdG9yeS5jcHAgXAogICAgIFwKICAgICBDU1NHcmFtbWFyLmNwcCBcCiAgICAg
Q1NTUHJvcGVydHlOYW1lcy5oIFwKQEAgLTUwOSwxMyArNTExLDEzIEBAIGlmZGVmIEhUTUxfRkxB
R1MKIAogSFRNTE5hbWVzLmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIGh0bWwvSFRNTFRhZ05hbWVz
LmluIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCiAJcGVybCAkPCAtLXRhZ3MgJChXZWJDb3Jl
KS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJzICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4gLS1leHRyYURlZmluZXMgIiQoSFRNTF9GTEFHUykiIFwKLSAgICAgICAgICAg
IC0tbmFtZXNwYWNlIEhUTUwgLS1uYW1lc3BhY2VQcmVmaXggeGh0bWwgLS1jcHBOYW1lc3BhY2Ug
V2ViQ29yZSAtLW5hbWVzcGFjZVVSSSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgLS1h
dHRyc051bGxOYW1lc3BhY2UgLS1vdXRwdXQgLgorICAgICAgICAgICAgLS1uYW1lc3BhY2UgSFRN
TCAtLW5hbWVzcGFjZVByZWZpeCB4aHRtbCAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNw
YWNlVVJJICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiAtLXdyYXBwZXJGYWN0b3J5IC0t
YXR0cnNOdWxsTmFtZXNwYWNlIC0tb3V0cHV0IC4KIAogZWxzZQogCiBIVE1MTmFtZXMuY3BwIDog
ZG9tL21ha2VfbmFtZXMucGwgaHRtbC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KIAlwZXJsICQ8IC0tdGFncyAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhZ05hbWVzLmlu
IC0tYXR0cnMgJChXZWJDb3JlKS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBcCi0gICAgICAg
ICAgICAtLW5hbWVzcGFjZSBIVE1MIC0tbmFtZXNwYWNlUHJlZml4IHhodG1sIC0tY3BwTmFtZXNw
YWNlIFdlYkNvcmUgLS1uYW1lc3BhY2VVUkkgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0tb3V0cHV0IC4KKyAgICAgICAgICAgIC0tbmFtZXNwYWNl
IEhUTUwgLS1uYW1lc3BhY2VQcmVmaXggeGh0bWwgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAtLW5h
bWVzcGFjZVVSSSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgLS13cmFwcGVyRmFjdG9y
eSAtLWF0dHJzTnVsbE5hbWVzcGFjZSAtLW91dHB1dCAuCiAKIGVuZGlmCiAKQEAgLTU2MiwxMiAr
NTY0LDEyIEBAIGlmZGVmIFNWR19GTEFHUwogCiBTVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFt
ZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmlu
CiAJcGVybCAkPCAtLXRhZ3MgJChXZWJDb3JlKS9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQoV2Vi
Q29yZSkvc3ZnL3N2Z2F0dHJzLmluIC0tZXh0cmFEZWZpbmVzICIkKFNWR19GTEFHUykiIFwKLSAg
ICAgICAgICAgIC0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFjdG9yeVdpdGggIkVOQUJMRShTVkcp
IiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNlVVJJICJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0tb3V0cHV0IC4KKyAg
ICAgICAgICAgIC0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFjdG9yeVdpdGggIkVOQUJMRShTVkcp
IiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNlVVJJICJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0td3JhcHBlckZhY3RvcnkgLS1hdHRyc051bGxOYW1lc3Bh
Y2UgLS1vdXRwdXQgLgogZWxzZQogCiBTVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFtZXMuY3Bw
IDogZG9tL21ha2VfbmFtZXMucGwgc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmluCiAJcGVy
bCAkPCAtLXRhZ3MgJChXZWJDb3JlKS9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQoV2ViQ29yZSkv
c3ZnL3N2Z2F0dHJzLmluIFwKLSAgICAgICAgICAgIC0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFj
dG9yeVdpdGggIkVOQUJMRShTVkcpIiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNl
VVJJICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0tYXR0cnNOdWxsTmFt
ZXNwYWNlIC0tb3V0cHV0IC4KKyAgICAgICAgICAgIC0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFj
dG9yeVdpdGggIkVOQUJMRShTVkcpIiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNl
VVJJICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0td3JhcHBlckZhY3Rv
cnkgLS1hdHRyc051bGxOYW1lc3BhY2UgLS1vdXRwdXQgLgogCiBlbmRpZgogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2
MWE3NmFlLi5jNjExNGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI2MCw2ICsyNjAsNyBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0pTSFRNTERpdkVsZW1lbnQuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9KU0hUTUxEb2N1bWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTSFRN
TEVsZW1lbnQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3Rv
cnkuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU0hUTUxFbWJlZEVsZW1lbnQuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9KU0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9K
U0hUTUxGb250RWxlbWVudC5jcHAgXApAQCAtNTEyLDcgKzUxMyw2IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAotCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTE2ODIsNiArMTY4Miw3IEBAIHdlYmNvcmVf
YnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUxpc3QuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9KU1NWR1NWR0VsZW1lbnQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KU1NW
R0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTU1ZHRWxsaXBz
ZUVsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvSlNTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgXApAQCAtMTg2
OCw3ICsxODY5LDYgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUlcJCh0b3Bfc3JjZGlyKS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzCiAKIHdlYmNvcmVfc291cmNlcyArPSBcCi0JV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU1ZHUGF0aFNlZ0N1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQ
YXRoU2VnTGlzdEN1c3RvbS5jcHAgXApAQCAtMjEyMCwxMCArMjEyMCwxMCBAQCBEZXJpdmVkU291
cmNlcy9TVkdOYW1lcy5jcHA6IERlcml2ZWRTb3VyY2VzL1NWR0VsZW1lbnRGYWN0b3J5LmNwcDsK
IGlmIFNWR19GTEFHUwogRGVyaXZlZFNvdXJjZXMvU1ZHRWxlbWVudEZhY3RvcnkuY3BwOiAkKFdl
YkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvc3ZnL3N2Z3RhZ3MuaW4gJChXZWJD
b3JlKS9zdmcvc3ZnYXR0cnMuaW4KIAkkKFBFUkwpICQ8IC0tdGFncyAkKFdlYkNvcmUpL3N2Zy9z
dmd0YWdzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9zdmcvc3ZnYXR0cnMuaW4gLS1leHRyYURlZmlu
ZXMgIiQoU1ZHX0ZFQVRVUkVTKSIgXAotCS0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFjdG9yeVdp
dGggIkVOQUJMRShTVkcpIiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNlVVJJICJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNl
IC0tb3V0cHV0ICQoR0VOU09VUkNFUykKKwktLW5hbWVzcGFjZSBTVkcgLS1ndWFyZEZhY3RvcnlX
aXRoICJFTkFCTEUoU1ZHKSIgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAtLW5hbWVzcGFjZVVSSSAi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5IC0t
YXR0cnNOdWxsTmFtZXNwYWNlIC0tb3V0cHV0ICQoR0VOU09VUkNFUykKIGVsc2UKIERlcml2ZWRT
b3VyY2VzL1NWR0VsZW1lbnRGYWN0b3J5LmNwcDogJChXZWJDb3JlKS9kb20vbWFrZV9uYW1lcy5w
bCAkKFdlYkNvcmUpL3N2Zy9zdmd0YWdzLmluICQoV2ViQ29yZSkvc3ZnL3N2Z2F0dHJzLmluCi0J
JChQRVJMKSAkPCAtLXRhZ3MgJChXZWJDb3JlKS9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQoV2Vi
Q29yZSkvc3ZnL3N2Z2F0dHJzLmluIC0tbmFtZXNwYWNlIFNWRyAtLWd1YXJkRmFjdG9yeVdpdGgg
IkVOQUJMRShTVkcpIiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNlVVJJICJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgLS1mYWN0b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0t
b3V0cHV0ICQoR0VOU09VUkNFUykKKwkkKFBFUkwpICQ8IC0tdGFncyAkKFdlYkNvcmUpL3N2Zy9z
dmd0YWdzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9zdmcvc3ZnYXR0cnMuaW4gLS1uYW1lc3BhY2Ug
U1ZHIC0tZ3VhcmRGYWN0b3J5V2l0aCAiRU5BQkxFKFNWRykiIC0tY3BwTmFtZXNwYWNlIFdlYkNv
cmUgLS1uYW1lc3BhY2VVUkkgImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAtLWZhY3Rvcnkg
LS13cmFwcGVyRmFjdG9yeSAtLWF0dHJzTnVsbE5hbWVzcGFjZSAtLW91dHB1dCAkKEdFTlNPVVJD
RVMpCiAKIGVuZGlmICMgU1ZHX0ZMQUdTCiAKQEAgLTIyMTIsMTAgKzIyMTIsMTAgQEAgRGVyaXZl
ZFNvdXJjZXMvSFRNTE5hbWVzLmg6IERlcml2ZWRTb3VyY2VzL0hUTUxOYW1lcy5jcHA7CiAKIGlm
IEhUTUxfRkxBR1MKIERlcml2ZWRTb3VyY2VzL0hUTUxOYW1lcy5jcHA6ICQoV2ViQ29yZSkvZG9t
L21ha2VfbmFtZXMucGwgJChXZWJDb3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAkKFdlYkNvcmUp
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCi0JJChQRVJMKSAkPCAtLXRhZ3MgJChXZWJDb3Jl
KS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJzICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4gLS1leHRyYURlZmluZXMgIiQoSFRNTF9GRUFUVVJFUykiIC0tbmFtZXNwYWNl
IEhUTUwgLS1uYW1lc3BhY2VQcmVmaXggeGh0bWwgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAtLW5h
bWVzcGFjZVVSSSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgLS1hdHRyc051bGxOYW1l
c3BhY2UgLS1vdXRwdXQgJChHRU5TT1VSQ0VTKQorCSQoUEVSTCkgJDwgLS10YWdzICQoV2ViQ29y
ZSkvaHRtbC9IVE1MVGFnTmFtZXMuaW4gLS1hdHRycyAkKFdlYkNvcmUpL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluIC0tZXh0cmFEZWZpbmVzICIkKEhUTUxfRkVBVFVSRVMpIiAtLW5hbWVzcGFj
ZSBIVE1MIC0tbmFtZXNwYWNlUHJlZml4IHhodG1sIC0tY3BwTmFtZXNwYWNlIFdlYkNvcmUgLS1u
YW1lc3BhY2VVUkkgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIC0td3JhcHBlckZhY3Rv
cnkgLS1hdHRyc051bGxOYW1lc3BhY2UgLS1vdXRwdXQgJChHRU5TT1VSQ0VTKQogZWxzZQogRGVy
aXZlZFNvdXJjZXMvSFRNTE5hbWVzLmNwcDogJChXZWJDb3JlKS9kb20vbWFrZV9uYW1lcy5wbCAk
KFdlYkNvcmUpL2h0bWwvSFRNTFRhZ05hbWVzLmluICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4KLQkkKFBFUkwpICQ8IC0tdGFncyAkKFdlYkNvcmUpL2h0bWwvSFRNTFRhZ05h
bWVzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiAtLW5h
bWVzcGFjZSBIVE1MIC0tbmFtZXNwYWNlUHJlZml4IHhodG1sIC0tY3BwTmFtZXNwYWNlIFdlYkNv
cmUgLS1uYW1lc3BhY2VVUkkgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIC0tYXR0cnNO
dWxsTmFtZXNwYWNlIC0tb3V0cHV0ICQoR0VOU09VUkNFUykKKwkkKFBFUkwpICQ8IC0tdGFncyAk
KFdlYkNvcmUpL2h0bWwvSFRNTFRhZ05hbWVzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbiAtLW5hbWVzcGFjZSBIVE1MIC0tbmFtZXNwYWNlUHJlZml4IHho
dG1sIC0tY3BwTmFtZXNwYWNlIFdlYkNvcmUgLS1uYW1lc3BhY2VVUkkgImh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiIC0td3JhcHBlckZhY3RvcnkgLS1hdHRyc051bGxOYW1lc3BhY2UgLS1v
dXRwdXQgJChHRU5TT1VSQ0VTKQogZW5kaWYgIyBIVE1MX0ZMQUdTCiAKIERlcml2ZWRTb3VyY2Vz
L1hNTE5hbWVzLmg6IERlcml2ZWRTb3VyY2VzL1hNTE5hbWVzLmNwcDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDc0NzAyNDguLjhh
MDE5ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwpAQCAtMzg2LDcgKzM4Niw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pz
L0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1
bWVudEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
IFwKLSAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKICAg
ICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICBiaW5kaW5n
cy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTM1Nyw3ICsxMzU2LDYgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAKICAgICBTT1VSQ0VTICs9IFwKICMgVE9ETzogdGhp
cy1vbmUtaXMtbm90LWF1dG8tYWRkZWQhIEZJWE1FISB0bXAvU1ZHRWxlbWVudEZhY3RvcnkuY3Bw
IFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
U1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwIFwKQEAgLTE1NjgsNyArMTU2Niw3IEBAIFNPVVJDRVMg
Kz0gXAogCiAgICAgICAgICMgR0VORVJBVE9SIDUtQzoKICAgICAgICAgc3ZnbmFtZXNfYS5vdXRw
dXQgPSAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUi9TVkdOYW1lcy5jcHAKLSAgICAgICAgc3ZnbmFt
ZXNfYS5jb21tYW5kcyA9IHBlcmwgJCRQV0QvZG9tL21ha2VfbmFtZXMucGwgLS10YWdzICQkUFdE
L3N2Zy9zdmd0YWdzLmluIC0tYXR0cnMgJCRQV0Qvc3ZnL3N2Z2F0dHJzLmluIC0tZXh0cmFEZWZp
bmVzIFwiJCR7REVGSU5FU31cIiAtLW5hbWVzcGFjZSBTVkcgLS1ndWFyZEZhY3RvcnlXaXRoIFwi
RU5BQkxFKFNWRylcIiAtLWNwcE5hbWVzcGFjZSBXZWJDb3JlIC0tbmFtZXNwYWNlVVJJICdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgLS1mYWN0b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0t
cHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9DfSAtRVwiIC0tb3V0cHV0ICQkR0VORVJBVEVEX1NP
VVJDRVNfRElSCisgICAgICAgIHN2Z25hbWVzX2EuY29tbWFuZHMgPSBwZXJsICQkUFdEL2RvbS9t
YWtlX25hbWVzLnBsIC0tdGFncyAkJFBXRC9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQkUFdEL3N2
Zy9zdmdhdHRycy5pbiAtLWV4dHJhRGVmaW5lcyBcIiQke0RFRklORVN9XCIgLS1uYW1lc3BhY2Ug
U1ZHIC0tZ3VhcmRGYWN0b3J5V2l0aCBcIkVOQUJMRShTVkcpXCIgLS1jcHBOYW1lc3BhY2UgV2Vi
Q29yZSAtLW5hbWVzcGFjZVVSSSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIC0tZmFjdG9y
eSAtLXdyYXBwZXJGYWN0b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0tcHJlcHJvY2Vzc29yIFwi
JCR7UU1BS0VfTU9DfSAtRVwiIC0tb3V0cHV0ICQkR0VORVJBVEVEX1NPVVJDRVNfRElSCiAgICAg
ICAgIHN2Z25hbWVzX2EuaW5wdXQgPSBTVkdfTkFNRVMKICAgICAgICAgc3ZnbmFtZXNfYS5kZXBl
bmRlbmN5X3R5cGUgPSBUWVBFX0MKICAgICAgICAgc3ZnbmFtZXNfYS5DT05GSUcgPSB0YXJnZXRf
cHJlZGVwcwpAQCAtMTU4Myw2ICsxNTgxLDE0IEBAIFNPVVJDRVMgKz0gXAogICAgICAgICBzdmdu
YW1lc19iLnZhcmlhYmxlX291dCA9IEdFTkVSQVRFRF9TT1VSQ0VTCiAgICAgICAgIHN2Z25hbWVz
X2IuY2xlYW4gKz0gJHtRTUFLRV9WQVJfR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIfVNWR0Vs
ZW1lbnRGYWN0b3J5LmggJHtRTUFLRV9GSUxFX09VVH0KICAgICAgICAgYWRkRXh0cmFDb21waWxl
cihzdmduYW1lc19iKQorICAgICAgICBzdmduYW1lc19jLm91dHB1dCA9ICQkR0VORVJBVEVEX1NP
VVJDRVNfRElSL0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAorICAgICAgICBzdmduYW1l
c19jLmNvbW1hbmRzID0gQGVjaG8gLW4gJycKKyAgICAgICAgc3ZnbmFtZXNfYy5pbnB1dCA9IFNW
R19OQU1FUworICAgICAgICBzdmduYW1lc19jLmRlcGVuZHMgPSAkJEdFTkVSQVRFRF9TT1VSQ0VT
X0RJUi9TVkdOYW1lcy5jcHAKKyAgICAgICAgc3ZnbmFtZXNfYy5DT05GSUcgPSB0YXJnZXRfcHJl
ZGVwcworICAgICAgICBzdmduYW1lc19jLnZhcmlhYmxlX291dCA9IEdFTkVSQVRFRF9TT1VSQ0VT
CisgICAgICAgIHN2Z25hbWVzX2MuY2xlYW4gKz0gJHtRTUFLRV9WQVJfR0VORVJBVEVEX1NPVVJD
RVNfRElSX1NMQVNIfUpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggJHtRTUFLRV9GSUxFX09V
VH0KKyAgICAgICAgYWRkRXh0cmFDb21waWxlcihzdmduYW1lc19jKQogCiAgICAgICAgICMgR0VO
RVJBVE9SIDUtRDoKICAgICAgICAgeGxpbmtuYW1lcy5vdXRwdXQgPSAkJEdFTkVSQVRFRF9TT1VS
Q0VTX0RJUi9YTGlua05hbWVzLmNwcApAQCAtMTY4MiwxMyArMTY4OCwyMSBAQCBRTUFLRV9FWFRS
QV9UQVJHRVRTICs9IGdyYW1tYXJfaF9kZXAKIAogIyBHRU5FUkFUT1IgNS1BOgogaHRtbG5hbWVz
Lm91dHB1dCA9ICQkR0VORVJBVEVEX1NPVVJDRVNfRElSL0hUTUxOYW1lcy5jcHAKLWh0bWxuYW1l
cy5jb21tYW5kcyA9IHBlcmwgJCRQV0QvZG9tL21ha2VfbmFtZXMucGwgLS10YWdzICQkUFdEL2h0
bWwvSFRNTFRhZ05hbWVzLmluIC0tYXR0cnMgJCRQV0QvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4gLS1leHRyYURlZmluZXMgXCIkJHtERUZJTkVTfVwiIC0tbmFtZXNwYWNlIEhUTUwgLS1uYW1l
c3BhY2VQcmVmaXggeGh0bWwgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAtLW5hbWVzcGFjZVVSSSAn
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgLS1hdHRyc051bGxOYW1lc3BhY2UgLS1wcmVw
cm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgLS1vdXRwdXQgJCRHRU5FUkFURURfU09VUkNF
U19ESVIKK2h0bWxuYW1lcy5jb21tYW5kcyA9IHBlcmwgJCRQV0QvZG9tL21ha2VfbmFtZXMucGwg
LS10YWdzICQkUFdEL2h0bWwvSFRNTFRhZ05hbWVzLmluIC0tYXR0cnMgJCRQV0QvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4gLS1leHRyYURlZmluZXMgXCIkJHtERUZJTkVTfVwiIC0tbmFtZXNw
YWNlIEhUTUwgLS1uYW1lc3BhY2VQcmVmaXggeGh0bWwgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAt
LW5hbWVzcGFjZVVSSSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgLS13cmFwcGVyRmFj
dG9yeSAtLWF0dHJzTnVsbE5hbWVzcGFjZSAtLXByZXByb2Nlc3NvciBcIiQke1FNQUtFX01PQ30g
LUVcIiAtLW91dHB1dCAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUgogaHRtbG5hbWVzLmlucHV0ID0g
SFRNTF9OQU1FUwogaHRtbG5hbWVzLmRlcGVuZGVuY3lfdHlwZSA9IFRZUEVfQwogaHRtbG5hbWVz
LkNPTkZJRyA9IHRhcmdldF9wcmVkZXBzCiBodG1sbmFtZXMudmFyaWFibGVfb3V0ID0gR0VORVJB
VEVEX1NPVVJDRVMKIGh0bWxuYW1lcy5jbGVhbiA9ICR7UU1BS0VfRklMRV9PVVR9ICR7UU1BS0Vf
VkFSX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSH1IVE1MTmFtZXMuaAogYWRkRXh0cmFDb21w
aWxlcihodG1sbmFtZXMpCitodG1sbmFtZXNfYS5vdXRwdXQgPSAkJEdFTkVSQVRFRF9TT1VSQ0VT
X0RJUi9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCitodG1sbmFtZXNfYS5jb21tYW5k
cyA9IEBlY2hvIC1uICcnCitodG1sbmFtZXNfYS5pbnB1dCA9IEhUTUxfTkFNRVMKK2h0bWxuYW1l
c19hLmRlcGVuZHMgPSAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUi9IVE1MTmFtZXMuY3BwCitodG1s
bmFtZXNfYS5DT05GSUcgPSB0YXJnZXRfcHJlZGVwcworaHRtbG5hbWVzX2EudmFyaWFibGVfb3V0
ID0gR0VORVJBVEVEX1NPVVJDRVMKK2h0bWxuYW1lc19hLmNsZWFuICs9ICR7UU1BS0VfVkFSX0dF
TkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSH1KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAk
e1FNQUtFX0ZJTEVfT1VUfQorYWRkRXh0cmFDb21waWxlcihodG1sbmFtZXNfYSkKIAogIyBHRU5F
UkFUT1IgNS1COgogeG1sbmFtZXMub3V0cHV0ID0gJCRHRU5FUkFURURfU09VUkNFU19ESVIvWE1M
TmFtZXMuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRX
cmFwcGVyRmFjdG9yeS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMDJlNmMuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3Rv
cnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjczICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKLQotI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQXJl
YUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQXVkaW9FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TEJSRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxCYXNlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxCYXNlRm9udEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQmxvY2txdW90ZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQnV0dG9uRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTERMaXN0
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxEaXJlY3RvcnlFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRW1iZWRFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb250RWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEhSRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxIZWFk
aW5nRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxIdG1sRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxJRnJhbWVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSXNJbmRleEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MTElFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTExpbmtFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTWFycXVl
ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTWVudUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
TWV0YUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTW9kRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxPTGlzdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1
ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFBhcmFt
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxQcmVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFF1
b3RlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTFNlbGVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TFRhYmxlQ29sRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TFRpdGxlRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxVTGlzdEVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQotI2luY2x1
ZGUgIkpTSFRNTEFuY2hvckVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxBcHBsZXRFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSlNIVE1MQXJlYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxCUkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxCYXNlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRN
TEJhc2VGb250RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTEJsb2NrcXVvdGVFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSlNIVE1MQm9keUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxCdXR0b25F
bGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkpT
SFRNTERMaXN0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJKU0hUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNI
VE1MRm9udEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTSFRNTEZyYW1lRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5oIgotI2luY2x1ZGUgIkpTSFRNTEhSRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTEhlYWRF
bGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MSGVhZGluZ0VsZW1lbnQuaCIKLSNpbmNsdWRlICJK
U0hUTUxIdG1sRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTElGcmFtZUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxJbnB1dEVsZW1l
bnQuaCIKLSNpbmNsdWRlICJKU0hUTUxJc0luZGV4RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRN
TExJRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTExhYmVsRWxlbWVudC5oIgotI2luY2x1ZGUg
IkpTSFRNTExlZ2VuZEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxMaW5rRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTE1hcEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxNYXJxdWVlRWxl
bWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTE1lbnVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1M
TWV0YUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxNb2RFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SlNIVE1MT0xpc3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MT2JqZWN0RWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTE9wdEdyb3VwRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTE9wdGlv
bkVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSlNIVE1MUGFyYW1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MUHJlRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTSFRNTFF1b3RlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTFNjcmlwdEVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNI
VE1MU3R5bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5o
IgotI2luY2x1ZGUgIkpTSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxU
YWJsZUNvbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxUYWJsZUVsZW1lbnQuaCIKLSNpbmNs
dWRlICJKU0hUTUxUYWJsZVJvd0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MVGV4dEFyZWFFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSlNIVE1MVGl0bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MVUxpc3RFbGVtZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAiSlNIVE1MQXVkaW9FbGVtZW50LmgiCi0j
aW5jbHVkZSAiSlNIVE1MU291cmNlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTSFRNTFZpZGVvRWxl
bWVudC5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJranNfaHRtbC5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgS0pTOwotCi0vLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIGZpbGUgc2hvdWxkIGJlIGF1dG9n
ZW5lcmF0ZWQsIGp1c3QgbGlrZSBIVE1MTmFtZXMsIEhUTUxFbGVtZW50RmFjdG9yeSwgZXRjLgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLXR5
cGVkZWYgSlNOb2RlKiAoKkNyZWF0ZUhUTUxFbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3Rh
dGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50Pik7Ci0KLSNkZWZpbmUgRk9SX0VBQ0hfVEFHKG1h
Y3JvKSBcCi0gICAgbWFjcm8oYSwgQW5jaG9yKSBcCi0gICAgbWFjcm8oYXBwbGV0LCBBcHBsZXQp
IFwKLSAgICBtYWNybyhhcmVhLCBBcmVhKSBcCi0gICAgbWFjcm8oYmFzZSwgQmFzZSkgXAotICAg
IG1hY3JvKGJhc2Vmb250LCBCYXNlRm9udCkgXAotICAgIG1hY3JvKGJsb2NrcXVvdGUsIEJsb2Nr
cXVvdGUpIFwKLSAgICBtYWNybyhib2R5LCBCb2R5KSBcCi0gICAgbWFjcm8oYnIsIEJSKSBcCi0g
ICAgbWFjcm8oYnV0dG9uLCBCdXR0b24pIFwKLSAgICBtYWNybyhjYW52YXMsIENhbnZhcykgXAot
ICAgIG1hY3JvKGNhcHRpb24sIFRhYmxlQ2FwdGlvbikgXAotICAgIG1hY3JvKGNvbCwgVGFibGVD
b2wpIFwKLSAgICBtYWNybyhkZWwsIE1vZCkgXAotICAgIG1hY3JvKGRpciwgRGlyZWN0b3J5KSBc
Ci0gICAgbWFjcm8oZGl2LCBEaXYpIFwKLSAgICBtYWNybyhkbCwgRExpc3QpIFwKLSAgICBtYWNy
byhlbWJlZCwgRW1iZWQpIFwKLSAgICBtYWNybyhmaWVsZHNldCwgRmllbGRTZXQpIFwKLSAgICBt
YWNybyhmb250LCBGb250KSBcCi0gICAgbWFjcm8oZm9ybSwgRm9ybSkgXAotICAgIG1hY3JvKGZy
YW1lLCBGcmFtZSkgXAotICAgIG1hY3JvKGZyYW1lc2V0LCBGcmFtZVNldCkgXAotICAgIG1hY3Jv
KGgxLCBIZWFkaW5nKSBcCi0gICAgbWFjcm8oaGVhZCwgSGVhZCkgXAotICAgIG1hY3JvKGhyLCBI
UikgXAotICAgIG1hY3JvKGh0bWwsIEh0bWwpIFwKLSAgICBtYWNybyhpZnJhbWUsIElGcmFtZSkg
XAotICAgIG1hY3JvKGltZywgSW1hZ2UpIFwKLSAgICBtYWNybyhpbnB1dCwgSW5wdXQpIFwKLSAg
ICBtYWNybyhpc2luZGV4LCBJc0luZGV4KSBcCi0gICAgbWFjcm8obGFiZWwsIExhYmVsKSBcCi0g
ICAgbWFjcm8obGVnZW5kLCBMZWdlbmQpIFwKLSAgICBtYWNybyhsaSwgTEkpIFwKLSAgICBtYWNy
byhsaW5rLCBMaW5rKSBcCi0gICAgbWFjcm8obWFwLCBNYXApIFwKLSAgICBtYWNybyhtYXJxdWVl
LCBNYXJxdWVlKSBcCi0gICAgbWFjcm8obWVudSwgTWVudSkgXAotICAgIG1hY3JvKG1ldGEsIE1l
dGEpIFwKLSAgICBtYWNybyhvYmplY3QsIE9iamVjdCkgXAotICAgIG1hY3JvKG9sLCBPTGlzdCkg
XAotICAgIG1hY3JvKG9wdGdyb3VwLCBPcHRHcm91cCkgXAotICAgIG1hY3JvKG9wdGlvbiwgT3B0
aW9uKSBcCi0gICAgbWFjcm8ocCwgUGFyYWdyYXBoKSBcCi0gICAgbWFjcm8ocGFyYW0sIFBhcmFt
KSBcCi0gICAgbWFjcm8ocHJlLCBQcmUpIFwKLSAgICBtYWNybyhxLCBRdW90ZSkgXAotICAgIG1h
Y3JvKHNjcmlwdCwgU2NyaXB0KSBcCi0gICAgbWFjcm8oc2VsZWN0LCBTZWxlY3QpIFwKLSAgICBt
YWNybyhzdHlsZSwgU3R5bGUpIFwKLSAgICBtYWNybyh0YWJsZSwgVGFibGUpIFwKLSAgICBtYWNy
byh0Ym9keSwgVGFibGVTZWN0aW9uKSBcCi0gICAgbWFjcm8odGQsIFRhYmxlQ2VsbCkgXAotICAg
IG1hY3JvKHRleHRhcmVhLCBUZXh0QXJlYSkgXAotICAgIG1hY3JvKHRyLCBUYWJsZVJvdykgXAot
ICAgIG1hY3JvKHRpdGxlLCBUaXRsZSkgXAotICAgIG1hY3JvKHVsLCBVTGlzdCkgXAotICAgIC8v
IGVuZCBvZiBtYWNybwotCi0jZGVmaW5lIEZPUl9FQUNIX01FRElBX1RBRyhtYWNybykgXAotICAg
IG1hY3JvKGF1ZGlvLCBBdWRpbykgXAotICAgIG1hY3JvKHNvdXJjZSwgU291cmNlKSBcCi0gICAg
bWFjcm8odmlkZW8sIFZpZGVvKSBcCi0gICAgLy8gZW5kIG9mIG1hY3JvCi0KLSNkZWZpbmUgQ1JF
QVRFX1dSQVBQRVJfRlVOQ1RJT04odGFnLCBuYW1lKSBcCi1zdGF0aWMgSlNOb2RlKiBjcmVhdGUj
I25hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50KSBcCi17IFwKLSAgICByZXR1cm4gbmV3IEpTSFRNTCMjbmFtZSMjRWxlbWVudChKU0hU
TUwjI25hbWUjI0VsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYyksIHN0YXRpY19jYXN0PEhUTUwj
I25hbWUjI0VsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7IFwKLX0KLSNkZWZpbmUgQ1JFQVRFX01F
RElBX1dSQVBQRVJfRlVOQ1RJT04odGFnLCBuYW1lKSBcCi1zdGF0aWMgSlNOb2RlKiBjcmVhdGUj
I25hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50KSBcCi17IFwKLSAgICBpZiAoIU1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpKSBcCi0g
ICAgICAgIHJldHVybiBuZXcgSlNIVE1MRWxlbWVudChKU0hUTUxFbGVtZW50UHJvdG90eXBlOjpz
ZWxmKGV4ZWMpLCBlbGVtZW50LmdldCgpKTsgXAotICAgIHJldHVybiBuZXcgSlNIVE1MIyNuYW1l
IyNFbGVtZW50KEpTSFRNTCMjbmFtZSMjRWxlbWVudFByb3RvdHlwZTo6c2VsZihleGVjKSwgc3Rh
dGljX2Nhc3Q8SFRNTCMjbmFtZSMjRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpKTsgXAotfQotRk9S
X0VBQ0hfVEFHKENSRUFURV9XUkFQUEVSX0ZVTkNUSU9OKQotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBGT1JfRUFDSF9NRURJQV9UQUcoQ1JFQVRFX01FRElBX1dSQVBQRVJfRlVOQ1RJT04pCi0jZW5k
aWYKLSN1bmRlZiBDUkVBVEVfV1JBUFBFUl9GVU5DVElPTgotCi1KU05vZGUqIGNyZWF0ZUpTSFRN
TFdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50
KQotewotICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGVIVE1MRWxl
bWVudFdyYXBwZXJGdW5jdGlvbj4gbWFwOwotICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7Ci0jZGVm
aW5lIEFERF9UT19IQVNIX01BUCh0YWcsIG5hbWUpIG1hcC5zZXQodGFnIyNUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCBjcmVhdGUjI25hbWUjI1dyYXBwZXIpOwotRk9SX0VBQ0hfVEFHKEFERF9UT19I
QVNIX01BUCkKLSNpZiBFTkFCTEUoVklERU8pCi1GT1JfRUFDSF9NRURJQV9UQUcoQUREX1RPX0hB
U0hfTUFQKQotI2VuZGlmCi0jdW5kZWYgQUREX1RPX0hBU0hfTUFQCi0gICAgICAgIG1hcC5zZXQo
Y29sZ3JvdXBUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVUYWJsZUNvbFdyYXBwZXIpOwot
ICAgICAgICBtYXAuc2V0KGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSGVhZGluZ1dy
YXBwZXIpOwotICAgICAgICBtYXAuc2V0KGgzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
SGVhZGluZ1dyYXBwZXIpOwotICAgICAgICBtYXAuc2V0KGg0VGFnLmxvY2FsTmFtZSgpLmltcGwo
KSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOwotICAgICAgICBtYXAuc2V0KGg1VGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOwotICAgICAgICBtYXAuc2V0KGg2VGFn
LmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSGVhZGluZ1dyYXBwZXIpOwotICAgICAgICBtYXAu
c2V0KGltYWdlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlSW1hZ2VXcmFwcGVyKTsKLSAg
ICAgICAgbWFwLnNldChpbnNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVNb2RXcmFwcGVy
KTsKLSAgICAgICAgbWFwLnNldChrZXlnZW5UYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVT
ZWxlY3RXcmFwcGVyKTsKLSAgICAgICAgbWFwLnNldChsaXN0aW5nVGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgY3JlYXRlUHJlV3JhcHBlcik7Ci0gICAgICAgIG1hcC5zZXQodGZvb3RUYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGVUYWJsZVNlY3Rpb25XcmFwcGVyKTsKLSAgICAgICAgbWFwLnNl
dCh0aFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIGNyZWF0ZVRhYmxlQ2VsbFdyYXBwZXIpOwotICAg
ICAgICBtYXAuc2V0KHRoZWFkVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlVGFibGVTZWN0
aW9uV3JhcHBlcik7Ci0gICAgICAgIG1hcC5zZXQoeG1wVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
Y3JlYXRlUHJlV3JhcHBlcik7Ci0gICAgfQotICAgIENyZWF0ZUhUTUxFbGVtZW50V3JhcHBlckZ1
bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1hcC5nZXQoZWxlbWVudC0+bG9jYWxOYW1l
KCkuaW1wbCgpKTsKLSAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKQotICAgICAgICByZXR1
cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGVsZW1lbnQpOwotICAgIHJldHVybiBuZXcg
SlNIVE1MRWxlbWVudChKU0hUTUxFbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMpLCBlbGVtZW50
LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhlOGJmZmEuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVmIEpTSFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeV9oCi0jZGVmaW5lIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oCi0KLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgS0pTIHsKLSAgICBjbGFzcyBFeGVj
U3RhdGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEpTTm9kZTsKLSAg
ICBjbGFzcyBIVE1MRWxlbWVudDsKLQotICAgIEpTTm9kZSogY3JlYXRlSlNIVE1MV3JhcHBlcihL
SlM6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+KTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVtZW50V3JhcHBlckZhY3Rv
cnkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MmMxNTAuLjAwMDAwMDAKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMjEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykKLQotI2lu
Y2x1ZGUgIkpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCi0KLSNpbmNsdWRlICJKU1NWR0FF
bGVtZW50LmgiCi0jaWYgRU5BQkxFKFNWR19GT05UUykKLSNpbmNsdWRlICJKU1NWR0FsdEdseXBo
RWxlbWVudC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSlNTVkdBbmltYXRlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0NpcmNsZUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU1NWR0NsaXBQYXRoRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHQ3Vyc29yRWxl
bWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRGVmc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0Rl
ZmluaXRpb25TcmNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdEZXNjRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkpTU1ZHRWxsaXBzZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFQmxlbmRFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIgotI2luY2x1ZGUg
IkpTU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSlNTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJKU1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRkVGbG9vZEVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFRnVuY0FFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNT
VkdGRUZ1bmNCRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRkVGdW5jR0VsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU1NWR0ZFRnVuY1JFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSlNTVkdGRU1lcmdlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdGRU9mZnNldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTU1ZHRkVUaWxlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRmlsdGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZvbnRFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSlNTVkdGb250RmFjZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5oIgot
I2luY2x1ZGUgIkpTU1ZHRm9udEZhY2VTcmNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdGb250
RmFjZVVyaUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0dFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SlNTVkdHbHlwaEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR0ltYWdlRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkpTU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdMaW5l
RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHTWFya2VyRWxlbWVudC5oIgotI2luY2x1ZGUgIkpT
U1ZHTWFza0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR01ldGFkYXRhRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkpTU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHUGF0aEVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR1BhdHRlcm5FbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNT
VkdQb2x5Z29uRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHUG9seWxpbmVFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSlNTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR1Jl
Y3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdTY3JpcHRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SlNTVkdTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdTdG9wRWxlbWVudC5oIgotI2luY2x1
ZGUgIkpTU1ZHU3R5bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdTVkdFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSlNTVkdTd2l0Y2hFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdTeW1ib2xFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdUZXh0RWxlbWVudC5oIgotI2luY2x1ZGUgIkpTU1ZHVGV4
dFBhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdUaXRsZUVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJKU1NWR1RSZWZFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNTVkdUU3BhbkVsZW1lbnQuaCIKLSNp
bmNsdWRlICJKU1NWR1VzZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1NWR1ZpZXdFbGVtZW50Lmgi
Ci0KLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotCi0jaW5jbHVkZSAiU1ZHQUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTVkdBbHRHbHlwaEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlQ29sb3JF
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0NpcmNsZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdDbGlwUGF0aEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdDdXJzb3JFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHRGVmc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdEZWZpbml0
aW9uU3JjRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0Rlc2NFbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHRWxsaXBzZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUJsZW5kRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRUZsb29kRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZF
RnVuY0FFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVGdW5jQkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJTVkdGRUZ1bmNHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFRnVuY1JFbGVtZW50LmgiCi0j
aW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVJbWFn
ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRU1lcmdlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0RWxlbWVudC5oIgot
I2luY2x1ZGUgIlNWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRkVTcG90TGlnaHRFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU1ZHRkVUaWxlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGb250RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRm9ybWF0
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJTVkdGb250RmFjZVNyY0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdGb250RmFjZVVyaUVsZW1l
bnQuaCIKLSNpbmNsdWRlICJTVkdHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0dseXBoRWxlbWVu
dC5oIgotI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHTWFya2VyRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiU1ZHTWV0YWRhdGFFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTWlzc2luZ0dseXBoRWxlbWVu
dC5oIgotI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGF0dGVybkVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQb2x5Z29uRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1Bv
bHlsaW5lRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIgot
I2luY2x1ZGUgIlNWR1JlY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHU2NyaXB0RWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR1NldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQu
aCIKLSNpbmNsdWRlICJTVkdTd2l0Y2hFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHU3ltYm9sRWxl
bWVudC5oIgotI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVGV4dFBh
dGhFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVGl0bGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZH
VFJlZkVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVmlld0VsZW1lbnQuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIEtKUzsKLQotLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBmaWxlIHNob3VsZCBiZSBh
dXRvZ2VuZXJhdGVkLCBqdXN0IGxpa2UgU1ZHTmFtZXMsIFNWR0VsZW1lbnRGYWN0b3J5LCBldGMu
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwotCi10
eXBlZGVmIEpTTm9kZSogKCpDcmVhdGVTVkdFbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3Rh
dGUqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+KTsKLQotI2lmIEVOQUJMRShTVkdfQU5JTUFUSU9O
KQotI2RlZmluZSBGT1JfRUFDSF9BTklNQVRJT05fVEFHKG1hY3JvKSBcCi0gICAgbWFjcm8oYW5p
bWF0ZUNvbG9yLCBBbmltYXRlQ29sb3IpIFwKLSAgICBtYWNybyhhbmltYXRlLCBBbmltYXRlKSBc
Ci0gICAgbWFjcm8oYW5pbWF0ZVRyYW5zZm9ybSwgQW5pbWF0ZVRyYW5zZm9ybSkgXAotICAgIG1h
Y3JvKHNldCwgU2V0KSBcCi0gICAgLy8gZW5kIG9mIG1hY3JvCi0KLSNlbHNlCi0jZGVmaW5lIEZP
Ul9FQUNIX0FOSU1BVElPTl9UQUcobWFjcm8pCi0jZW5kaWYKLQotCi0jaWYgRU5BQkxFKFNWR19G
T05UUykKLSNkZWZpbmUgRk9SX0VBQ0hfRk9OVF9UQUcobWFjcm8pIFwKLSAgICBtYWNybyhhbHRH
bHlwaCwgQWx0R2x5cGgpIFwKLSAgICBtYWNybyhkZWZpbml0aW9uX3NyYywgRGVmaW5pdGlvblNy
YykgXAotICAgIG1hY3JvKGZvbnQsIEZvbnQpIFwKLSAgICBtYWNybyhmb250X2ZhY2UsIEZvbnRG
YWNlKSBcCi0gICAgbWFjcm8oZm9udF9mYWNlX2Zvcm1hdCwgRm9udEZhY2VGb3JtYXQpIFwKLSAg
ICBtYWNybyhmb250X2ZhY2VfbmFtZSwgRm9udEZhY2VOYW1lKSBcCi0gICAgbWFjcm8oZm9udF9m
YWNlX3NyYywgRm9udEZhY2VTcmMpIFwKLSAgICBtYWNybyhmb250X2ZhY2VfdXJpLCBGb250RmFj
ZVVyaSkgXAotICAgIG1hY3JvKGdseXBoLCBHbHlwaCkgXAotICAgIG1hY3JvKG1pc3NpbmdfZ2x5
cGgsIE1pc3NpbmdHbHlwaCkKLSAgICAvLyBlbmQgb2YgbWFjcm8KLSAgICAKLSNlbHNlCi0jZGVm
aW5lIEZPUl9FQUNIX0ZPTlRfVEFHKG1hY3JvKQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCi0jZGVmaW5lIEZPUl9FQUNIX0ZJTFRFUl9UQUcobWFjcm8pIFwKLSAgICBtYWNybyhm
ZUJsZW5kLCBGRUJsZW5kKSBcCi0gICAgbWFjcm8oZmVDb2xvck1hdHJpeCwgRkVDb2xvck1hdHJp
eCkgXAotICAgIG1hY3JvKGZlQ29tcG9uZW50VHJhbnNmZXIsIEZFQ29tcG9uZW50VHJhbnNmZXIp
IFwKLSAgICBtYWNybyhmZUNvbXBvc2l0ZSwgRkVDb21wb3NpdGUpIFwKLSAgICBtYWNybyhmZURp
ZmZ1c2VMaWdodGluZywgRkVEaWZmdXNlTGlnaHRpbmcpIFwKLSAgICBtYWNybyhmZURpc3BsYWNl
bWVudE1hcCwgRkVEaXNwbGFjZW1lbnRNYXApIFwKLSAgICBtYWNybyhmZURpc3RhbnRMaWdodCwg
RkVEaXN0YW50TGlnaHQpIFwKLSAgICBtYWNybyhmZUZsb29kLCBGRUZsb29kKSBcCi0gICAgbWFj
cm8oZmVGdW5jQSwgRkVGdW5jQSkgXAotICAgIG1hY3JvKGZlRnVuY0IsIEZFRnVuY0IpIFwKLSAg
ICBtYWNybyhmZUZ1bmNHLCBGRUZ1bmNHKSBcCi0gICAgbWFjcm8oZmVGdW5jUiwgRkVGdW5jUikg
XAotICAgIG1hY3JvKGZlR2F1c3NpYW5CbHVyLCBGRUdhdXNzaWFuQmx1cikgXAotICAgIG1hY3Jv
KGZlSW1hZ2UsIEZFSW1hZ2UpIFwKLSAgICBtYWNybyhmZU1lcmdlLCBGRU1lcmdlKSBcCi0gICAg
bWFjcm8oZmVNZXJnZU5vZGUsIEZFTWVyZ2VOb2RlKSBcCi0gICAgbWFjcm8oZmVPZmZzZXQsIEZF
T2Zmc2V0KSBcCi0gICAgbWFjcm8oZmVQb2ludExpZ2h0LCBGRVBvaW50TGlnaHQpIFwKLSAgICBt
YWNybyhmZVNwZWN1bGFyTGlnaHRpbmcsIEZFU3BlY3VsYXJMaWdodGluZykgXAotICAgIG1hY3Jv
KGZlU3BvdExpZ2h0LCBGRVNwb3RMaWdodCkgXAotICAgIG1hY3JvKGZlVGlsZSwgRkVUaWxlKSBc
Ci0gICAgbWFjcm8oZmVUdXJidWxlbmNlLCBGRVR1cmJ1bGVuY2UpIFwKLSAgICBtYWNybyhmaWx0
ZXIsIEZpbHRlcikgXAotICAgIC8vIGVuZCBvZiBtYWNybwotI2Vsc2UKLSNkZWZpbmUgRk9SX0VB
Q0hfRklMVEVSX1RBRyhtYWNybykKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNWR19GT1JFSUdOX09C
SkVDVCkKLSNkZWZpbmUgRk9SX0VBQ0hfRk9SRUlHTl9PQkpFQ1RfVEFHKG1hY3JvKSBcCi0gICAg
bWFjcm8oZm9yZWlnbk9iamVjdCwgRm9yZWlnbk9iamVjdCkgXAotICAgIC8vIGVuZCBvZiBtYWNy
bwotI2Vsc2UKLSNkZWZpbmUgRk9SX0VBQ0hfRk9SRUlHTl9PQkpFQ1RfVEFHKG1hY3JvKQotI2Vu
ZGlmCi0KLSNkZWZpbmUgRk9SX0VBQ0hfVEFHKG1hY3JvKSBcCi0gICAgbWFjcm8oYSwgQSkgXAot
ICAgIG1hY3JvKGNpcmNsZSwgQ2lyY2xlKSBcCi0gICAgbWFjcm8oY2xpcFBhdGgsIENsaXBQYXRo
KSBcCi0gICAgbWFjcm8oY3Vyc29yLCBDdXJzb3IpIFwKLSAgICBtYWNybyhkZWZzLCBEZWZzKSBc
Ci0gICAgbWFjcm8oZGVzYywgRGVzYykgXAotICAgIG1hY3JvKGVsbGlwc2UsIEVsbGlwc2UpIFwK
LSAgICBtYWNybyhnLCBHKSBcCi0gICAgbWFjcm8oaW1hZ2UsIEltYWdlKSBcCi0gICAgbWFjcm8o
bGluZWFyR3JhZGllbnQsIExpbmVhckdyYWRpZW50KSBcCi0gICAgbWFjcm8obGluZSwgTGluZSkg
XAotICAgIG1hY3JvKG1hcmtlciwgTWFya2VyKSBcCi0gICAgbWFjcm8obWFzaywgTWFzaykgXAot
ICAgIG1hY3JvKG1ldGFkYXRhLCBNZXRhZGF0YSkgXAotICAgIG1hY3JvKHBhdGgsIFBhdGgpIFwK
LSAgICBtYWNybyhwYXR0ZXJuLCBQYXR0ZXJuKSBcCi0gICAgbWFjcm8ocG9seWxpbmUsIFBvbHls
aW5lKSBcCi0gICAgbWFjcm8ocG9seWdvbiwgUG9seWdvbikgXAotICAgIG1hY3JvKHJhZGlhbEdy
YWRpZW50LCBSYWRpYWxHcmFkaWVudCkgXAotICAgIG1hY3JvKHJlY3QsIFJlY3QpIFwKLSAgICBt
YWNybyhzY3JpcHQsIFNjcmlwdCkgXAotICAgIG1hY3JvKHN0b3AsIFN0b3ApIFwKLSAgICBtYWNy
byhzdHlsZSwgU3R5bGUpIFwKLSAgICBtYWNybyhzdmcsIFNWRykgXAotICAgIG1hY3JvKHN3aXRj
aCwgU3dpdGNoKSBcCi0gICAgbWFjcm8oc3ltYm9sLCBTeW1ib2wpIFwKLSAgICBtYWNybyh0ZXh0
LCBUZXh0KSBcCi0gICAgbWFjcm8odGV4dFBhdGgsIFRleHRQYXRoKSBcCi0gICAgbWFjcm8odGl0
bGUsIFRpdGxlKSBcCi0gICAgbWFjcm8odHJlZiwgVFJlZikgXAotICAgIG1hY3JvKHRzcGFuLCBU
U3BhbikgXAotICAgIG1hY3JvKHVzZSwgVXNlKSBcCi0gICAgbWFjcm8odmlldywgVmlldykgXAot
ICAgIC8vIGVuZCBvZiBtYWNybwotCi0jZGVmaW5lIENSRUFURV9XUkFQUEVSX0ZVTkNUSU9OKHRh
ZywgbmFtZSkgXAotc3RhdGljIEpTTm9kZSogY3JlYXRlIyNuYW1lIyNXcmFwcGVyKEV4ZWNTdGF0
ZSogZXhlYywgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBlbGVtZW50KSBcCi17IFwKLSAgICByZXR1
cm4gbmV3IEpTU1ZHIyNuYW1lIyNFbGVtZW50KEpTU1ZHIyNuYW1lIyNFbGVtZW50UHJvdG90eXBl
OjpzZWxmKGV4ZWMpLCBzdGF0aWNfY2FzdDxTVkcjI25hbWUjI0VsZW1lbnQqPihlbGVtZW50Lmdl
dCgpKSk7IFwKLX0KLUZPUl9FQUNIX1RBRyhDUkVBVEVfV1JBUFBFUl9GVU5DVElPTikKLUZPUl9F
QUNIX0FOSU1BVElPTl9UQUcoQ1JFQVRFX1dSQVBQRVJfRlVOQ1RJT04pCi1GT1JfRUFDSF9GT05U
X1RBRyhDUkVBVEVfV1JBUFBFUl9GVU5DVElPTikKLUZPUl9FQUNIX0ZJTFRFUl9UQUcoQ1JFQVRF
X1dSQVBQRVJfRlVOQ1RJT04pCi1GT1JfRUFDSF9GT1JFSUdOX09CSkVDVF9UQUcoQ1JFQVRFX1dS
QVBQRVJfRlVOQ1RJT04pCi0KLSN1bmRlZiBDUkVBVEVfV1JBUFBFUl9GVU5DVElPTgotCi1KU05v
ZGUqIGNyZWF0ZUpTU1ZHV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U1ZHRWxl
bWVudD4gZWxlbWVudCkKLXsKLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpBdG9taWNTdHJp
bmdJbXBsKiwgQ3JlYXRlU1ZHRWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gbWFwOwotICAgIGlmICht
YXAuaXNFbXB0eSgpKSB7Ci0jZGVmaW5lIEFERF9UT19IQVNIX01BUCh0YWcsIG5hbWUpIG1hcC5z
ZXQodGFnIyNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGUjI25hbWUjI1dyYXBwZXIpOwot
Rk9SX0VBQ0hfVEFHKEFERF9UT19IQVNIX01BUCkKLUZPUl9FQUNIX0FOSU1BVElPTl9UQUcoQURE
X1RPX0hBU0hfTUFQKQotRk9SX0VBQ0hfRk9OVF9UQUcoQUREX1RPX0hBU0hfTUFQKQotRk9SX0VB
Q0hfRklMVEVSX1RBRyhBRERfVE9fSEFTSF9NQVApCi1GT1JfRUFDSF9GT1JFSUdOX09CSkVDVF9U
QUcoQUREX1RPX0hBU0hfTUFQKQotI3VuZGVmIEFERF9UT19IQVNIX01BUAotICAgIH0KLSAgICBD
cmVhdGVTVkdFbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1h
cC5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKLSAgICBpZiAoY3JlYXRlV3JhcHBl
ckZ1bmN0aW9uKQotICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGVs
ZW1lbnQpOwotICAgIHJldHVybiBuZXcgSlNTVkdFbGVtZW50KEpTU1ZHRWxlbWVudFByb3RvdHlw
ZTo6c2VsZihleGVjKSwgZWxlbWVudC5nZXQoKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShTVkcpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudFdyYXBw
ZXJGYWN0b3J5LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0
b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwODNmZWMuLjAwMDAwMDAKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI2lmbmRlZiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeV9oCi0jZGVmaW5l
IEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5X2gKLQotI2lmIEVOQUJMRShTVkcpCi0KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgS0pTIHsKLSAgICBjbGFzcyBFeGVjU3Rh
dGU7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEpTTm9kZTsKLSAgICBj
bGFzcyBTVkdFbGVtZW50OwotCi0gICAgSlNOb2RlKiBjcmVhdGVKU1NWR1dyYXBwZXIoS0pTOjpF
eGVjU3RhdGUqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+KTsKLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykKLQotI2VuZGlmIC8vIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5X2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9XZWJDb3JlL2RvbS9tYWtlX25hbWVz
LnBsCmluZGV4IDE2ZTNkYzguLjE4OTBhNTQgMTAwNzU1Ci0tLSBhL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKKysrIGIvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtMzIsNiArMzIsNyBA
QCB1c2UgRmlsZTo6UGF0aDsKIHVzZSBDb25maWc7CiAKIG15ICRwcmludEZhY3RvcnkgPSAwOwor
bXkgJHByaW50V3JhcHBlckZhY3RvcnkgPSAwOwogbXkgJGNwcE5hbWVzcGFjZSA9ICIiOwogbXkg
JG5hbWVzcGFjZSA9ICIiOwogbXkgJG5hbWVzcGFjZVByZWZpeCA9ICIiOwpAQCAtNDYsNiArNDcs
OSBAQCBteSAkYXR0cnNOdWxsTmFtZXNwYWNlID0gMDsKIG15ICRleHRyYURlZmluZXMgPSAwOwog
bXkgJHByZXByb2Nlc3NvciA9ICIvdXNyL2Jpbi9nY2MgLUUgLVAgLXggYysrIjsKIG15ICRndWFy
ZEZhY3RvcnlXaXRoID0gMDsKK215ICVodG1sQ2FwaXRhbGl6YXRpb25IYWNrcyA9ICgpOworbXkg
JXN2Z0N1c3RvbU1hcHBpbmdzID0gKCk7CitteSAlaHRtbEN1c3RvbU1hcHBpbmdzID0gKCk7CiAK
IEdldE9wdGlvbnMoJ3RhZ3M9cycgPT4gXCR0YWdzRmlsZSwgCiAgICAgJ2F0dHJzPXMnID0+IFwk
YXR0cnNGaWxlLApAQCAtNTUsNiArNTksNyBAQCBHZXRPcHRpb25zKCd0YWdzPXMnID0+IFwkdGFn
c0ZpbGUsCiAgICAgJ25hbWVzcGFjZVVSST1zJyA9PiBcJG5hbWVzcGFjZVVSSSwKICAgICAnY3Bw
TmFtZXNwYWNlPXMnID0+IFwkY3BwTmFtZXNwYWNlLAogICAgICdmYWN0b3J5JyA9PiBcJHByaW50
RmFjdG9yeSwKKyAgICAnd3JhcHBlckZhY3RvcnknID0+IFwkcHJpbnRXcmFwcGVyRmFjdG9yeSwK
ICAgICAndGFnc051bGxOYW1lc3BhY2UnID0+IFwkdGFnc051bGxOYW1lc3BhY2UsCiAgICAgJ2F0
dHJzTnVsbE5hbWVzcGFjZScgPT4gXCRhdHRyc051bGxOYW1lc3BhY2UsCiAgICAgJ2V4dHJhRGVm
aW5lcz1zJyA9PiBcJGV4dHJhRGVmaW5lcywKQEAgLTc0LDE0ICs3OSwyMCBAQCAkbmFtZXNwYWNl
UHJlZml4ID0gJG5hbWVzcGFjZSB1bmxlc3MgJG5hbWVzcGFjZVByZWZpeDsKIG1rcGF0aCgkb3V0
cHV0RGlyKTsKIG15ICRuYW1lc0Jhc2VQYXRoID0gIiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9TmFt
ZXMiOwogbXkgJGZhY3RvcnlCYXNlUGF0aCA9ICIkb3V0cHV0RGlyLyR7bmFtZXNwYWNlfUVsZW1l
bnRGYWN0b3J5IjsKK215ICR3cmFwcGVyRmFjdG9yeUJhc2VQYXRoID0gIiRvdXRwdXREaXIvSlMk
e25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkiOwogCiBwcmludE5hbWVzSGVhZGVyRmls
ZSgiJG5hbWVzQmFzZVBhdGguaCIpOwogcHJpbnROYW1lc0NwcEZpbGUoIiRuYW1lc0Jhc2VQYXRo
LmNwcCIpOworCiBpZiAoJHByaW50RmFjdG9yeSkgewogICAgIHByaW50RmFjdG9yeUNwcEZpbGUo
IiRmYWN0b3J5QmFzZVBhdGguY3BwIik7CiAgICAgcHJpbnRGYWN0b3J5SGVhZGVyRmlsZSgiJGZh
Y3RvcnlCYXNlUGF0aC5oIik7CiB9CiAKK2lmICgkcHJpbnRXcmFwcGVyRmFjdG9yeSkgeworICAg
IHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKCIkd3JhcHBlckZhY3RvcnlCYXNlUGF0aC5jcHAi
KTsKKyAgICBwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSgiJHdyYXBwZXJGYWN0b3J5QmFz
ZVBhdGguaCIpOworfQogCiAjIyBTdXBwb3J0IHJvdXRpbmVzCiAKQEAgLTE0MSw2ICsxNTIsMzcg
QEAgc3ViIHByaW50RnVuY3Rpb25Jbml0cwogICAgIH0KIH0KIAorc3ViIGluaXRpYWxpemVIdG1s
SGFja3MKK3sKKyAgICBpZiAoIWtleXMgJWh0bWxDYXBpdGFsaXphdGlvbkhhY2tzKSB7CisgICAg
ICAgICVodG1sQ2FwaXRhbGl6YXRpb25IYWNrcyA9ICgnYScgPT4gJ0FuY2hvcicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWZvbnQnID0+ICdCYXNlRm9udCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnInID0+ICdCUicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FwdGlvbicgPT4gJ1RhYmxlQ2FwdGlvbics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sJyA9PiAnVGFibGVDb2wn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbCcgPT4gJ01vZCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyJyA9PiAnRGlyZWN0b3J5JywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkbCcgPT4gJ0RMaXN0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWVsZHNldCcgPT4gJ0ZpZWxkU2V0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXNldCcgPT4gJ0Zy
YW1lU2V0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoMScgPT4gJ0hl
YWRpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hyJyA9PiAnSFIn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lmcmFtZScgPT4gJ0lGcmFt
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1nJyA9PiAnSW1hZ2Un
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzaW5kZXgnID0+ICdJc0lu
ZGV4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaScgPT4gJ0xJJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbCcgPT4gJ09MaXN0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRncm91cCcgPT4gJ09wdEdyb3Vw
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwJyA9PiAnUGFyYWdyYXBo
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxJyA9PiAnUXVvdGUnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rib2R5JyA9PiAnVGFibGVTZWN0
aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZCcgPT4gJ1RhYmxl
Q2VsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dGFyZWEnID0+
ICdUZXh0QXJlYScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHInID0+
ICdUYWJsZVJvdycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndWwnID0+
ICdVTGlzdCcpOworICAgIH0KK30KKwogc3ViIHN2Z0NhcGl0YWxpemF0aW9uSGFja3MKIHsKICAg
ICBteSAkbmFtZSA9IHNoaWZ0OwpAQCAtMTYyLDcgKzIwNCwxMyBAQCBzdWIgdXBwZXJDYXNlTmFt
ZQogICAgIG15ICRuYW1lID0gc2hpZnQ7CiAgICAgCiAgICAgJG5hbWUgPSBzdmdDYXBpdGFsaXph
dGlvbkhhY2tzKCRuYW1lKSBpZiAoJG5hbWVzcGFjZSBlcSAiU1ZHIik7Ci0gICAgCisKKyAgICAj
IFByb2Nlc3Mgc3BlY2lhbCBtYXBwaW5nCisgICAgaWYgKCRuYW1lc3BhY2UgZXEgIkhUTUwiKSB7
CisgICAgICAgIGluaXRpYWxpemVIdG1sSGFja3MoKTsKKyAgICAgICAgcmV0dXJuICRodG1sQ2Fw
aXRhbGl6YXRpb25IYWNrc3skbmFtZX0gaWYgZXhpc3RzICRodG1sQ2FwaXRhbGl6YXRpb25IYWNr
c3skbmFtZX07CisgICAgfQorCiAgICAgd2hpbGUgKCRuYW1lID1+IC9eKC4qPylfKC4qKS8pIHsK
ICAgICAgICAgJG5hbWUgPSAkMSAuIHVjZmlyc3QgJDI7CiAgICAgfQpAQCAtMzM0LDEyICszODIs
MjUgQEAgcHJpbnQgRiAiXG52b2lkIGluaXQoKQogICAgIGNsb3NlIEY7CiB9CiAKLXN1YiBwcmlu
dEVsZW1lbnRJbmNsdWRlcworc3ViIHByaW50SlNFbGVtZW50SW5jbHVkZXMKIHsKICAgICBteSAo
JEYsIEBuYW1lcykgPSBAXzsKICAgICBmb3IgbXkgJG5hbWUgKEBuYW1lcykgewotICAgICAgICBt
eSAkdXBwZXJDYXNlID0gdXBwZXJDYXNlTmFtZSgkbmFtZSk7Ci0gICAgICAgIHByaW50IEYgIiNp
bmNsdWRlIFwiJHtuYW1lc3BhY2V9JHt1cHBlckNhc2V9RWxlbWVudC5oXCJcbiI7CisgICAgICAg
IG5leHQgaWYgKGhhc0N1c3RvbU1hcHBpbmcoJG5hbWUpKTsKKworICAgICAgICBteSAkdWNOYW1l
ID0gdXBwZXJDYXNlTmFtZSgkbmFtZSk7CisgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMk
e25hbWVzcGFjZX0ke3VjTmFtZX1FbGVtZW50LmhcIlxuIjsKKyAgICB9Cit9CisKK3N1YiBwcmlu
dEVsZW1lbnRJbmNsdWRlcworeworICAgIG15ICgkRiwgJG5hbWVzUmVmLCAkc2hvdWxkU2tpcEN1
c3RvbU1hcHBpbmdzKSA9IEBfOworICAgIGZvciBteSAkbmFtZSAoQCRuYW1lc1JlZikgeworICAg
ICAgICBuZXh0IGlmICgkc2hvdWxkU2tpcEN1c3RvbU1hcHBpbmdzICYmIGhhc0N1c3RvbU1hcHBp
bmcoJG5hbWUpKTsKKworICAgICAgICBteSAkdWNOYW1lID0gdXBwZXJDYXNlTmFtZSgkbmFtZSk7
CisgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9JHt1Y05hbWV9RWxlbWVu
dC5oXCJcbiI7CiAgICAgfQogfQogCkBAIC0zOTEsNyArNDUyLDcgQEAgcHJpbnQgRiA8PEVORAog
RU5ECiA7CiAKLXByaW50RWxlbWVudEluY2x1ZGVzKCRGLCBAdGFncyk7CitwcmludEVsZW1lbnRJ
bmNsdWRlcygkRiwgXEB0YWdzLCAwKTsKIAogcHJpbnQgRiA8PEVORAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC01MTksMyArNTgwLDIyOSBAQCBuYW1lc3BhY2UgJHtjcHBOYW1lc3BhY2V9
CiAKICAgICBjbG9zZSBGOwogfQorCisjIyBXcmFwcGVyIEZhY3Rvcnkgcm91dGluZXMKKworc3Vi
IGlzTWVkaWFUYWcKK3sKKyAgICBteSAkbmFtZSA9IHNoaWZ0OworICAgIHJldHVybiAkbmFtZSBl
cSAiYXVkaW8iIHx8ICRuYW1lIGVxICJzb3VyY2UiIHx8ICRuYW1lIGVxICJ2aWRlbyIgfHwgMDsK
K30KKworc3ViIGluaXRpYWxpemVDdXN0b21NYXBwaW5ncworeworICAgIGlmICgha2V5cyAlc3Zn
Q3VzdG9tTWFwcGluZ3MpIHsKKyAgICAgICAgIyBUaGVzZSBhcmUgdXNlZCB0byBtYXAgYSB0YWcg
dG8gYW5vdGhlciBvbmUgaW4gV3JhcHBlckZhY3RvcnkKKyAgICAgICAgIyAoZm9yIGV4YW1wbGUs
ICJoMiIgaXMgbWFwcGVkIHRvICJoMSIgc28gdGhhdCB0aGV5IHVzZSB0aGUgc2FtZSBKUyBXcmFw
cGVyICgiaDEiIHdyYXBwZXIpKQorICAgICAgICAjIE1hcHBpbmcgdG8gYW4gZW1wdHkgc3RyaW5n
IHdpbGwgbm90IGdlbmVyYXRlIGEgd3JhcHBlcgorICAgICAgICAlc3ZnQ3VzdG9tTWFwcGluZ3Mg
PSAoJ2FuaW1hdGVNb3Rpb24nID0+ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2hrZXJuJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcGF0aCcgPT4g
JycpOworICAgICAgICAlaHRtbEN1c3RvbU1hcHBpbmdzID0gKCdhYmJyJyA9PiAnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYWNyb255bScgPT4gJycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnID0+ICcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdiJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmRv
JyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmlnJyA9PiAnJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyA9PiAnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY2l0ZScgPT4gJycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NvZGUnID0+ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdj
b2xncm91cCcgPT4gJ2NvbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RkJyA9
PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGZuJyA9PiAnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZHQnID0+ICcnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdlbScgPT4gJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2gyJyA9PiAnaDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoMycgPT4gJ2gx
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaDQnID0+ICdoMScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2g1JyA9PiAnaDEnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdoNicgPT4gJ2gxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnaScgPT4gJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlJyA9PiAn
aW1nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zJyA9PiAnZGVsJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2JkJyA9PiAnJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAna2V5Z2VuJyA9PiAnc2VsZWN0JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbGlzdGluZycgPT4gJ3ByZScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2xheWVyJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
bm9icicgPT4gJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZW1iZWQnID0+
ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub2ZyYW1lcycgPT4gJycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vbGF5ZXInID0+ICcnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdub3NjcmlwdCcgPT4gJycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3BsYWludGV4dCcgPT4gJycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3MnID0+ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1w
JyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc21hbGwnID0+ICcnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGFuJyA9PiAnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3RyaWtlJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc3Ryb25nJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnc3ViJyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwJyA9PiAn
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGZvb3QnID0+ICd0Ym9keScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoJyA9PiAndGQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0aGVhZCcgPT4gJ3Rib2R5JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndHQnID0+ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd1JyA9PiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyJyA9PiAnJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2JyJyA9PiAnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAneG1wJyA9PiAncHJlJyk7CisgICAgfQorfQorCitzdWIgaGFz
Q3VzdG9tTWFwcGluZworeworICAgIG15ICRuYW1lID0gc2hpZnQ7CisgICAgaW5pdGlhbGl6ZUN1
c3RvbU1hcHBpbmdzKCk7CisgICAgcmV0dXJuIDEgaWYgJG5hbWVzcGFjZSBlcSAiSFRNTCIgJiYg
ZXhpc3RzKCRodG1sQ3VzdG9tTWFwcGluZ3N7JG5hbWV9KTsKKyAgICByZXR1cm4gMSBpZiAkbmFt
ZXNwYWNlIGVxICJTVkciICYmIGV4aXN0cygkc3ZnQ3VzdG9tTWFwcGluZ3N7JG5hbWV9KTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3ViIHByaW50V3JhcHBlckZ1bmN0aW9ucworeworICAgIG15ICgk
RiwgQG5hbWVzKSA9IEBfOworICAgIGZvciBteSAkbmFtZSAoQG5hbWVzKSB7CisgICAgICAgICMg
Q3VzdG9tIG1hcHBpbmcgZG8gbm90IG5lZWQgYSBKUyB3cmFwcGVyCisgICAgICAgIG5leHQgaWYg
KGhhc0N1c3RvbU1hcHBpbmcoJG5hbWUpKTsKKworICAgICAgICBteSAkdWNOYW1lID0gdXBwZXJD
YXNlTmFtZSgkbmFtZSk7CisgICAgICAgICMgSGFjayBmb3IgdGhlIG1lZGlhIHRhZ3MKKyAgICAg
ICAgaWYgKGlzTWVkaWFUYWcoJG5hbWUpKSB7CisgICAgICAgICAgICBwcmludCBGIDw8RU5ECitz
dGF0aWMgSlNOb2RlKiBjcmVhdGUke3VjTmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgUGFz
c1JlZlB0cjwke25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQoreworICAgIGlmICghTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTJHtuYW1l
c3BhY2V9RWxlbWVudChKUyR7bmFtZXNwYWNlfUVsZW1lbnRQcm90b3R5cGU6OnNlbGYoZXhlYyks
IGVsZW1lbnQuZ2V0KCkpOworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTJHtuYW1lc3BhY2V9JHt1
Y05hbWV9RWxlbWVudChKUyR7bmFtZXNwYWNlfSR7dWNOYW1lfUVsZW1lbnRQcm90b3R5cGU6OnNl
bGYoZXhlYyksIHN0YXRpY19jYXN0PCR7bmFtZXNwYWNlfSR7dWNOYW1lfUVsZW1lbnQqPihlbGVt
ZW50LmdldCgpKSk7Cit9CisKK0VORAorOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHJpbnQgRiA8PEVORAorc3RhdGljIEpTTm9kZSogY3JlYXRlJHt1Y05hbWV9V3JhcHBlcihFeGVj
U3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8JHtuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKK3sg
ICAKKyAgICByZXR1cm4gbmV3IChleGVjKSBKUyR7bmFtZXNwYWNlfSR7dWNOYW1lfUVsZW1lbnQo
SlMke25hbWVzcGFjZX0ke3VjTmFtZX1FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMpLCBzdGF0
aWNfY2FzdDwke25hbWVzcGFjZX0ke3VjTmFtZX1FbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOwor
fQorCitFTkQKKzsKKyAgICAgICAgfQorICAgIH0KK30KKworc3ViIHByaW50V3JhcHBlckZhY3Rv
cnlDcHBGaWxlCit7CisgICAgbXkgJGNwcFBhdGggPSBzaGlmdDsKKyAgICBteSAkRjsKKyAgICBv
cGVuIEYsICI+JGNwcFBhdGgiOworCisgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKKworICAg
IHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuXG4iOworCisgICAgcHJpbnQgRiAiI2lm
ICRndWFyZEZhY3RvcnlXaXRoXG5cbiIgaWYgJGd1YXJkRmFjdG9yeVdpdGg7CisKKyAgICBwcmlu
dCBGICIjaW5jbHVkZSBcIkpTJHtuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5LmhcIlxu
IjsKKworICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYsIEB0YWdzKTsKKworICAgIHByaW50
IEYgIlxuI2luY2x1ZGUgXCIke25hbWVzcGFjZX1OYW1lcy5oXCJcblxuIjsKKworICAgIHByaW50
RWxlbWVudEluY2x1ZGVzKCRGLCBcQHRhZ3MsIDEpOworCisgICAgcHJpbnQgRiA8PEVORAordXNp
bmcgbmFtZXNwYWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3Bh
Y2UgJHtuYW1lc3BhY2V9TmFtZXM7CisKK3R5cGVkZWYgSlNOb2RlKiAoKkNyZWF0ZSR7bmFtZXNw
YWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8JHtuYW1l
c3BhY2V9RWxlbWVudD4pOworCitFTkQKKzsKKworICAgIHByaW50V3JhcHBlckZ1bmN0aW9ucygk
RiwgQHRhZ3MpOworCisgICAgcHJpbnQgRiA8PEVORAorSlNOb2RlKiBjcmVhdGVKUyR7bmFtZXNw
YWNlfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPCR7bmFtZXNwYWNlfUVsZW1l
bnQ+IGVsZW1lbnQpCit7ICAgCisgICAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWljU3Ry
aW5nSW1wbCosIENyZWF0ZSR7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IG1hcDsK
KyAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworRU5ECis7CisKKyAgICBmb3IgbXkgJHRhZyAoQHRh
Z3MpIHsKKyAgICAgICAgbmV4dCBpZiAoaGFzQ3VzdG9tTWFwcGluZygkdGFnKSk7CisKKyAgICAg
ICAgbXkgJHVjVGFnID0gdXBwZXJDYXNlTmFtZSgkdGFnKTsKKyAgICAgICAgcHJpbnQgRiAiICAg
ICAgIG1hcC5zZXQoJHt0YWd9VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlJHt1Y1RhZ31X
cmFwcGVyKTtcbiI7CisgICAgfQorCisgICAgaWYgKCRuYW1lc3BhY2UgZXEgIkhUTUwiKSB7Cisg
ICAgICAgIGZvciBteSAkdGFnIChzb3J0IGtleXMgJWh0bWxDdXN0b21NYXBwaW5ncykgeworICAg
ICAgICAgICAgbmV4dCBpZiAhJGh0bWxDdXN0b21NYXBwaW5nc3skdGFnfTsKKyAgICAgICAgICAg
IG15ICR1Y0N1c3RvbVRhZyA9IHVwcGVyQ2FzZU5hbWUoJGh0bWxDdXN0b21NYXBwaW5nc3skdGFn
fSk7CisgICAgICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldCgke3RhZ31UYWcubG9jYWxO
YW1lKCkuaW1wbCgpLCBjcmVhdGUke3VjQ3VzdG9tVGFnfVdyYXBwZXIpO1xuIjsKKyAgICAgICAg
fQorICAgIH0KKworICAgICMgQ3VycmVudGx5IFNWRyBoYXMgbm8gbmVlZCB0byBhZGQgY3VzdG9t
IG1hcC5zZXQgYXMgaXQgb25seSBoYXMgZW1wdHkgZWxlbWVudHMKKworICAgIHByaW50IEYgPDxF
TkQKKyAgICB9CisgICAgQ3JlYXRlJHtuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBj
cmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVdyYXBwZXJGdW5jdGlvbihleGVjLCBlbGVtZW50KTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBK
UyR7bmFtZXNwYWNlfUVsZW1lbnQoSlMke25hbWVzcGFjZX1FbGVtZW50UHJvdG90eXBlOjpzZWxm
KGV4ZWMpLCBlbGVtZW50LmdldCgpKTsKK30KKworfQorCitFTkQKKzsKKworICAgIHByaW50IEYg
IiNlbmRpZlxuIiBpZiAkZ3VhcmRGYWN0b3J5V2l0aDsKKworICAgIGNsb3NlIEY7Cit9CisKK3N1
YiBwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZQoreworICAgIG15ICRoZWFkZXJQYXRoID0g
c2hpZnQ7CisgICAgbXkgJEY7CisgICAgb3BlbiBGLCAiPiRoZWFkZXJQYXRoIjsKKworICAgIHBy
aW50TGljZW5zZUhlYWRlcigkRik7CisKKyAgICBwcmludCBGICIjaWZuZGVmIEpTJHtuYW1lc3Bh
Y2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hcbiI7CisgICAgcHJpbnQgRiAiI2RlZmluZSBKUyR7
bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG5cbiI7CisKKyAgICBwcmludCBGICIj
aWYgJHtndWFyZEZhY3RvcnlXaXRofVxuIiBpZiAkZ3VhcmRGYWN0b3J5V2l0aDsKKworICAgIHBy
aW50IEYgPDxFTkQKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgS0pTIHsK
KyAgICBjbGFzcyBFeGVjU3RhdGU7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSlNOb2RlOworICAgIGNsYXNzICR7
bmFtZXNwYWNlfUVsZW1lbnQ7CisKKyAgICBKU05vZGUqIGNyZWF0ZUpTJHtuYW1lc3BhY2V9V3Jh
cHBlcihLSlM6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8JHtuYW1lc3BhY2V9RWxlbWVudD4pOwor
Cit9CisgCitFTkQKKzsKKworICAgIHByaW50IEYgIiNlbmRpZiAvLyAkZ3VhcmRGYWN0b3J5V2l0
aFxuXG4iIGlmICRndWFyZEZhY3RvcnlXaXRoOworCisgICAgcHJpbnQgRiAiI2VuZGlmIC8vIEpT
JHtuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hcbiI7CisKKyAgICBjbG9zZSBGOwor
fQo=
</data>
<flag name="review"
          id="9264"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>