<?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>102082</bug_id>
          
          <creation_ts>2012-11-13 07:12:03 -0800</creation_ts>
          <short_desc>[V8] More efficient wrapper dispatch</short_desc>
          <delta_ts>2012-11-27 09:39:13 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100851</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>marshall</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765563</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-13 07:12:03 -0800</bug_when>
    <thetext>[V8] More efficient wrapper dispatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765571</commentid>
    <comment_count>1</comment_count>
      <attachid>173888</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-13 07:20:28 -0800</bug_when>
    <thetext>Created attachment 173888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765623</commentid>
    <comment_count>2</comment_count>
      <attachid>173888</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 08:19:35 -0800</bug_when>
    <thetext>Comment on attachment 173888
Patch

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

This looks great.  I&apos;m not 100% sure about the names.  Here&apos;s a recommendation:

wrapSlow -&gt; createWrapper
dispatchWrap -&gt; wrap
dispatchWrapCustom -&gt; wrap

When you have a CustomToJSObject, can&apos;t we just skip generating the implementation of wrap (aka dispatchWrap)?  I don&apos;t see what having the thunk buys us.  In any case, feel free to land the patch with the current names.  We can iterate from there if needed.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:498
&gt; +    if ($interfaceName eq &quot;HTMLElement&quot;) {
&gt; +        push(@headerContent, &lt;&lt;END);
&gt; +    friend v8::Handle&lt;v8::Object&gt; createV8HTMLWrapper(HTMLElement*, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate*);
&gt; +END
&gt; +    } elsif ($interfaceName eq &quot;SVGElement&quot;) {
&gt; +        push(@headerContent, &lt;&lt;END);
&gt; +    friend v8::Handle&lt;v8::Object&gt; createV8SVGWrapper(SVGElement* element, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate* isolate);

Why does the HTML version have named parameters but the SVG version does not?  We should probably make this consistent.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:519
&gt;      static v8::Handle&lt;v8::Object&gt; wrapSlow(${wrapSlowArgumentType}, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate*);

I was thinking of renaming wrapSlow to createWrapper (assuming it no longer checks the cache).

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:553
&gt; +    if (UNLIKELY(!impl))
&gt; +        return v8::Handle&lt;v8::Object&gt;();

Can this ever actually happen?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3425
&gt;  v8::Handle&lt;v8::Object&gt; ${className}::wrapSlow(${wrapSlowArgumentType} impl, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate* isolate)

Yeah, this always creates a wrapper now, right?  We should name it createWrapper.  (We can do that in a separate patch if you like.)

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:122
&gt; +V8NoWrapperCache=*

I think you want this to be just &quot;V8NoWrapperCache&quot; because the attribute doesn&apos;t take any arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765820</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:03:17 -0800</bug_when>
    <thetext>/me is rebasing to top of tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765821</commentid>
    <comment_count>4</comment_count>
      <attachid>173929</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:05:05 -0800</bug_when>
    <thetext>Created attachment 173929
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765822</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:06:01 -0800</bug_when>
    <thetext>I&apos;m going to land this patch because I&apos;d like to build upon it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765825</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:06:56 -0800</bug_when>
    <thetext>Committed r134447: &lt;http://trac.webkit.org/changeset/134447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765847</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 11:28:24 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Committed r134447: &lt;http://trac.webkit.org/changeset/134447&gt;

It broke the Qt build :-/

[1;31mgenerated/JSSVGElementWrapperFactory.cpp:711: error: expected &apos;}&apos; at end of input[0m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765849</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:30:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Committed r134447: &lt;http://trac.webkit.org/changeset/134447&gt;
&gt; 
&gt; It broke the Qt build :-/
&gt; 
&gt; [1;31mgenerated/JSSVGElementWrapperFactory.cpp:711: error: expected &apos;}&apos; at end of input[0m

/me will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765864</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 11:43:46 -0800</bug_when>
    <thetext>Attempted fix in http://trac.webkit.org/changeset/134457</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765948</commentid>
    <comment_count>10</comment_count>
      <attachid>173888</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-13 12:45:36 -0800</bug_when>
    <thetext>Comment on attachment 173888
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:498
&gt;&gt; +    friend v8::Handle&lt;v8::Object&gt; createV8SVGWrapper(SVGElement* element, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate* isolate);
&gt; 
&gt; Why does the HTML version have named parameters but the SVG version does not?  We should probably make this consistent.

No good reason. Copy and paste issues. Will fix.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:519
&gt;&gt;      static v8::Handle&lt;v8::Object&gt; wrapSlow(${wrapSlowArgumentType}, v8::Handle&lt;v8::Object&gt; creationContext, v8::Isolate*);
&gt; 
&gt; I was thinking of renaming wrapSlow to createWrapper (assuming it no longer checks the cache).

Yeah, me too, I just didn&apos;t want to do all the renaming in one patch as I wanted the patch to focus on the change in wrap.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:553
&gt;&gt; +        return v8::Handle&lt;v8::Object&gt;();
&gt; 
&gt; Can this ever actually happen?

I don&apos;t know. I needed to copy the functionality of toV8, which has the check, but without returning v8::Null.

&gt;&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:122
&gt;&gt; +V8NoWrapperCache=*
&gt; 
&gt; I think you want this to be just &quot;V8NoWrapperCache&quot; because the attribute doesn&apos;t take any arguments.

okay. I wasn&apos;t sure what any of that meant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765949</commentid>
    <comment_count>11</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-13 12:47:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;m going to land this patch because I&apos;d like to build upon it.

I&apos;ll try to respond to all the above comments in a fix up patch tomorrow. Did you change anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765950</commentid>
    <comment_count>12</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-11-13 12:52:15 -0800</bug_when>
    <thetext>&gt; wrapSlow -&gt; createWrapper
&gt; dispatchWrap -&gt; wrap
&gt; dispatchWrapCustom -&gt; wrap

okay, I just didn&apos;t want anyone using those functions, so I figured unusual names 

&gt; When you have a CustomToJSObject, can&apos;t we just skip generating the implementation of wrap (aka dispatchWrap)?  I don&apos;t see what having the thunk buys us.  In any case, feel free to land the patch with the current names.  We can iterate from there if needed.

At first I wanted the asserts autogenerated, but I later added the same assert to wrapSlow. I can drop it and just go back to one non member function called wrap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765983</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-13 13:20:58 -0800</bug_when>
    <thetext>&gt; Did you change anything?

I just addressed the createV8HTMLWrapper / createV8SVGWrapper nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766445</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 22:28:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Attempted fix in http://trac.webkit.org/changeset/134457

Thanks for the quick fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776870</commentid>
    <comment_count>15</comment_count>
    <who name="Marshall Greenblatt">marshall</who>
    <bug_when>2012-11-27 09:39:13 -0800</bug_when>
    <thetext>This change appears to have caused an infinite recursion problem in V8 when the &lt;video&gt; tag is used with MediaPlayer disabled. See https://bugs.webkit.org/show_bug.cgi?id=103431.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173888</attachid>
            <date>2012-11-13 07:20:28 -0800</date>
            <delta_ts>2012-11-13 12:45:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102082-20121113161828.patch</filename>
            <type>text/plain</type>
            <size>66063</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRjMjEyODQ4MWNhZGU2
NGZiNTIzNTc0ZGY1ZmZkZjI0YzRkNWY2OC4uNGQ5NTY1MzY1ZWI3OWI1NmJiMDYzMGQ0ZDUwZTBk
OTg1Y2Y1MGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTExLTEzICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFtWOF0gTW9yZSBlZmZpY2ll
bnQgd3JhcHBlciBkaXNwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRGlzcGF0Y2hpbmcgYSBjYWxsIHRvIFY4V2hhdGV2ZXI6OndyYXAgaW52b2x2
ZWQgYSBjaGFpbgorICAgICAgICBvZiBjYWxscywgZWFjaCBvZiB3aGljaCBjaGVja2VkIGl0cyB3
cmFwcGVyIGNhY2hlLgorICAgICAgICBUaGlzIHJlZmFjdG9yIGdpdmVzIGNhbGxzIG9ubHkgMiBj
aG9pY2VzIG9mIGZ1bmN0aW9ucyB0byBjYWxsOgorICAgICAgICB0b1Y4IGFuZCB0b1Y4T2JqZWN0
IGluc3RlYWQgb2Ygd3JhcC4gd3JhcCBoYXMgYmVlbiByZW5hbWVkIHRvCisgICAgICAgIGRpc3Bh
dGNoV3JhcCBhbmQgbm8gbG9uZ2VyIGNvbnRhaW5zIGNhY2hlIGNoZWNrcy4KKyAgICAgICAgQWRk
aXRpb25hbGx5LCBjbGFzc2VzIHdoaWNoIHJlcXVpcmUgYSBjdXN0b20gdG9WOCBmdW5jdGlvbgor
ICAgICAgICBoYXZlIGhhZCBhbGwgd3JhcHBpbmcgYW5kIGNhY2hpbmcgY2FsbHMgcmVtb3ZlZCwg
YXMgdGhleSBjb3VsZAorICAgICAgICBub3QgaGF2ZSBiZWVuIGFjY2Vzc2VkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gU3VmZmljaWVudGx5IGNvdmVyZWQuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJBbnkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eS5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpkaXNwYXRjaFdyYXBD
dXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhDU1NSdWxlOjpkaXNwYXRjaFdyYXBDdXN0b20pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4Q1NTVmFsdWU6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmRpc3BhdGNoV3JhcEN1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpkaXNwYXRj
aFdyYXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNl
RW50cnlDdXN0b20uY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RW50cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhFbnRyeTo6ZGlzcGF0
Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeVN5bmND
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhFbnRyeVN5bmM6OmRpc3BhdGNoV3JhcEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50OjpkaXNwYXRjaFdy
YXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTENvbGxlY3Rpb246OmRpc3BhdGNo
V3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpkaXNwYXRjaFdy
YXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW1hZ2VEYXRhOjpkaXNwYXRjaFdyYXBDdXN0b20pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhOb2RlOjpkaXNwYXRjaFdyYXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhQZXJmb3JtYW5jZUVudHJ5OjpkaXNwYXRjaFdyYXBDdXN0b20pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4U1ZHRG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNWR0VsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNWR1Bh
dGhTZWc6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFN0eWxlU2hlZXQ6
OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAg
ICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRXcmFwcGVyRnVuY3Rpb25zKToK
KyAgICAgICAgKHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKToKKyAgICAgICAgKHByaW50V3Jh
cHBlckZhY3RvcnlIZWFkZXJGaWxlKToKKyAgICAgICAgKiBodG1sL01pY3JvRGF0YUl0ZW1WYWx1
ZS5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsOgorICAgICAgICAq
IGluc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisKIDIwMTItMTEt
MDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTXVsdGlwbGUg
TGF5b3V0IFRlc3RzIChlLmcuIGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tY2xl
YXIuaHRtbCkgaXMgZmFpbGluZyBhZnRlciByMTMzODQwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBmYmI1YTIyZmY2OTBiYmY3ZWM5OGNhYTg0ZWE2ZDBlZjQ1YWM0YmE2Li4xZWJlZDAx
ODNmOWI4ODVkNjc4NDkwYjg2MjhkMzhmNzM5ODBkMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTEzICBEYW4gQ2FybmV5ICA8ZGNhcm5leUBn
b29nbGUuY29tPgorCisgICAgICAgIFtWOF0gTW9yZSBlZmZpY2llbnQgd3JhcHBlciBkaXNwYXRj
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
V2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6dG9W
OFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJsb2I6OnRvVjhWYWx1ZSk6CisKIDIwMTItMTEtMTEgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkg
IDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIEN1c3Rv
bUV2ZW50IHRocm91Z2ggV2ViRE9NQ3VzdG9tRXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmlkbAppbmRleCA1OTYxOGFkNzQ5YzMzMmU3OGQ0NTViYjg2YTcx
MGYyY2FjNmE4ZDE2Li5iNmM0MDQyMzgzZDc3MmFkNzNiNGI5M2VmM2ExM2M3NzIxMDg0ZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5pZGwKQEAgLTI1LDcg
KzI1LDggQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCi0gICAgQ3Vz
dG9tVG9KU09iamVjdAorICAgIEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNo
ZQogXSBpbnRlcmZhY2UgSURCQW55IHsKICAgICAvLyBUaGlzIHNwYWNlIGlzIGludGVudGlvbmFs
bHkgbGVmdCBibGFuay4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5LmlkbAppbmRleCAzYjk2ZmMxYmI0ZTZkNWFiYzJkYmY2ZGE3Y2IxZDY0NDBkMTMyZWY3Li4w
NzRiMmFiYTYwMzU4MjI1YzM3NzhjMmQ3NTU3N2IyNmE4ODdlYTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5pZGwKQEAgLTI1LDcgKzI1LDggQEAKIAogWwog
ICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCi0gICAgQ3VzdG9tVG9KU09iamVjdAor
ICAgIEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZQogXSBpbnRlcmZhY2Ug
SURCS2V5IHsKICAgICAvLyBUaGlzIHNwYWNlIGlzIGludGVudGlvbmFsbHkgbGVmdCBibGFuay4K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGE3Y2NhYWY2MmYzMDM5YjliMDdlYWExOTEzMGE0YzI0
YzNiMmRkZS4uMDkxZGUxMWUyZGYwNzBhMTY2MjRlNTEzNDVhZjkyNDQ4NzVlODBmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMjM1Niw2ICsyMzU2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMTRmNDRi
NzdkOWU1NGY5ZTI4NDNmZTc0N2NlODE3YjdjMDAxMjNjMC4uMWJjY2U0ZWM5ZDdhMGM3ZjIxNzhk
ZWFiYTJkYmYwZTkwZTFiNWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM4MSw3ICszODEsNiBAQCBFTkQKICAgICB7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlwZX0qPihvYmplY3Qt
PkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwog
ICAgIH0KLSAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcCgke25h
dGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2b2lk
IGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiBF
TkQKQEAgLTQ5MCw2NCArNDg5LDkwIEBAIEVORAogRU5ECiAgICAgfQogCisgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MRWxlbWVudCIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOworICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4SFRN
TFdyYXBwZXIoSFRNTEVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqKTsKK0VORAorICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJTVkdFbGVtZW50IikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Cisg
ICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjhTVkdXcmFwcGVyKFNWR0Vs
ZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSk7CitFTkQKKyAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRWxlbWVudCIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAg
IC8vIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gaGFjay4gU2VlIFY4RWxlbWVu
dDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tLgorICAgIGZyaWVuZCBjbGFzcyBWOE5vZGU7CitFTkQKKyAg
ICB9CisKICAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgk
bmF0aXZlVHlwZSk7CisgICAgbXkgJG5vV3JhcCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4Tm9XcmFwcGVyQ2FjaGUifTsKKyAgICBpZiAoJG5vV3JhcCkgeworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Cit9OworCitFTkQKKyAgICB9IGVsc2UgewogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIHByaXZhdGU6CisgICAgZnJpZW5kIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gZGlzcGF0Y2hXcmFwKCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkaXNwYXRjaFdyYXBDdXN0b20oJHtuYXRpdmVUeXBlfSos
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwog
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3JhcFNsb3dBcmd1
bWVudFR5cGV9LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKIH07CiAKIEVORAotCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwot
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQotewotRU5ECi0gICAgbXkgJGdldENhY2hlZFdyYXBwZXIgPSBJc05vZGVTdWJU
eXBlKCRkYXRhTm9kZSkgPyAiVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpIiA6
ICJET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKSI7Ci0gICAgcHVzaChA
aGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSAkZ2V0Q2FjaGVkV3JhcHBlcjsKLSAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotRU5ECi0gICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX06OndyYXBTbG93KGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CisKKyAgICBteSAkY3VzdG9tV3JhcCA9ICEhKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVRvSlNPYmplY3QifSBvciAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVRvSlNPYmplY3QifSk7CisgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHByZXNzVG9KU09iamVjdCJ9
KSB7CisgICAgICAgIGRpZSAiQ2FuJ3Qgc3VwcHJlc3MgdG9WOCBmb3Igc3ViY2xhc3NcbiIgaWYg
QGFsbFBhcmVudHM7CisgICAgfSBlbHNpZiAoJG5vV3JhcCkgeworICAgICAgICBkaWUgIk11c3Qg
aGF2ZSBjdXN0b20gdG9WOFxuIiBpZiAhJGN1c3RvbVdyYXA7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIDw8RU5EKTsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVU
eXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKIEVORAorICAgIH0gZWxzZSB7CiAK
LSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgJ0VsZW1lbnQnIG9yICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlN1cHByZXNzVG9KU09iamVjdCJ9KSB7Ci0gICAgICAgICMgRG8gbm90
IGdlbmVyYXRlIHRvVjgoKSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgotICAgIH0gZWxz
aWYgKCEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KU09iamVjdCJ9
IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tVG9KU09iamVjdCJ9
KSkgeworICAgICAgICBteSAkZ2V0Q2FjaGVkV3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFO
b2RlKSA/ICJWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbCkiIDogIkRPTURhdGFT
dG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpIjsKKyAgICAgICAgbXkgJHdyYXBTbG93
Q2FsbCA9ICRjdXN0b21XcmFwID8gIiR7Y2xhc3NOYW1lfTo6ZGlzcGF0Y2hXcmFwQ3VzdG9tIiA6
ICIke2NsYXNzTmFtZX06OndyYXBTbG93IjsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVUeXBl
fSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGRpc3BhdGNoV3JhcCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUg
PSAwKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhp
c29sYXRlKTsKLSAgICByZXR1cm4gJHtjbGFzc05hbWV9Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOworICAgIEFTU0VSVCgkZ2V0Q2FjaGVk
V3JhcHBlci5Jc0VtcHR5KCkpOworICAgIHJldHVybiAkd3JhcFNsb3dDYWxsKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiBFTkQKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFt
ZSBuZSAnTm9kZScpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJ
c29sYXRlKiA9IDApOwotRU5ECi0gICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOwogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSosIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworaW5s
aW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVjdCgke25hdGl2ZVR5cGV9KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoreworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gJGdldENhY2hlZFdyYXBwZXI7CisgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0
dXJuIGRpc3BhdGNoV3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQogCi1p
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRo
Q2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERP
TVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdyYXBwZXIgPSAkZ2V0Q2FjaGVkV3JhcHBlcjsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CitFTkQKKyAgICAgICAgaWYgKElzTm9kZVN1
YlR5cGUoJGRhdGFOb2RlKSkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxF
TkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KE5vZGUqIG5vZGUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sIE5vZGUqIGhvbGRlcikKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbywgTm9kZSogaG9sZGVyKQogewotICAgIGlmIChVTkxJS0VMWSgh
bm9kZSkpCisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxs
KGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICAvLyBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgdG8gY2hl
Y2sgaGVyZSBpcyB3aGV0aGVyIHdlJ3JlIGluIHRoZSBtYWluIHdvcmxkIG9yCiAgICAgLy8gaW4g
YW4gaXNvbGF0ZWQgd29ybGQuIFRoZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBkbyB0aGF0
IGlzIHRvIGNoZWNrCkBAIC01NTUsMTYgKzU4MCwxOCBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KE5vZGUqIG5vZGUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8s
CiAgICAgLy8gdjg6OkFjY2Vzc29ySW5mby4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlcldyYXBwZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIGlmIChob2xkZXItPndyYXBwZXIoKSA9
PSBob2xkZXJXcmFwcGVyKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IG5vZGUtPndyYXBwZXIoKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gaW1wbC0+d3JhcHBlcigpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQotICAgIHJldHVybiB0b1Y4U2xvdyhu
b2RlLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIGRpc3Bh
dGNoV3JhcChpbXBsLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiBFTkQK
KyAgICAgICAgfQogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKwog
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlw
ZX0gPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIHJl
dHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC0xMDM4
LDcgKzEwNjUsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBS
ZWZQdHI8JHJldHVyblR5cGU+IHJlc3VsdCA9ICR7Z2V0dGVyU3RyaW5nfTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
cGVyID0gcmVzdWx0LmdldCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KERPTURhdGFTdG9yZTo6
Y3VycmVudChpbmZvLkdldElzb2xhdGUoKSktPmdldChyZXN1bHQuZ2V0KCkpKSA6IHY4VW5kZWZp
bmVkKCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAod3Jh
cHBlci5Jc0VtcHR5KCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTtcbiIpOyAjIEZJWE1FOiBDb3VsZCB1c2UgZGlzcGF0Y2hXcmFwIGhlcmUgc2lu
Y2UgdGhlIHdyYXBwZXIgaXMgZW1wdHkuCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5S
ZWZlcmVuY2UoaW5mby5Ib2xkZXIoKSwgXCIke2F0dHJOYW1lfVwiLCB3cmFwcGVyKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOwpAQCAtMjY2MiwxMSAr
MjY4OSwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKICAgICAgICAgbXkgJHZpZXdU
eXBlID0gR2V0VHlwZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJheSgkZGF0YU5vZGUpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
JGltcGxDbGFzc05hbWUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjgke2lt
cGxDbGFzc05hbWV9OjpkaXNwYXRjaFdyYXBDdXN0b20oJGltcGxDbGFzc05hbWUqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjgke2ltcGxDbGFz
c05hbWV9Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgQVNTRVJU
KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4JHtpbXBsQ2xh
c3NOYW1lfTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICB3cmFwcGVyLT5TZXRJbmRleGVkUHJvcGVy
dGllc1RvRXh0ZXJuYWxBcnJheURhdGEoaW1wbC0+YmFzZUFkZHJlc3MoKSwgJHZpZXdUeXBlLCBp
bXBsLT5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC0zMzg2LDEzICszNDEyLDIw
IEBAIHN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzCiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0
OwogICAgIG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7CiAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhOb1dyYXBwZXJDYWNoZSJ9KSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlw
ZSgkbmF0aXZlVHlwZSk7CiAgICAgbXkgJGJhc2VUeXBlID0gQmFzZUludGVyZmFjZU5hbWUoJGRh
dGFOb2RlKTsKKyAgICBteSAkZ2V0Q2FjaGVkV3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFO
b2RlKSA/ICJWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbC5nZXQoKSkiIDogIkRP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpIjsKIAogICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHtjbGFz
c05hbWV9Ojp3cmFwU2xvdygke3dyYXBTbG93QXJndW1lbnRUeXBlfSBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Cisg
ICAgQVNTRVJUKGltcGwuZ2V0KCkpOworICAgIEFTU0VSVCgkZ2V0Q2FjaGVkV3JhcHBlci5Jc0Vt
cHR5KCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKIEVORAogICAgIGlm
ICgkYmFzZVR5cGUgbmUgJGludGVyZmFjZU5hbWUpIHsKQEAgLTM0MDgsNyArMzQ0MSw5IEBAIEVO
RAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChm
cmFtZS0+c2NyaXB0KCktPmluaXRpYWxpemVNYWluV29ybGQoKSkgewogICAgICAgICAgICAgLy8g
aW5pdGlhbGl6ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVhdGVkIGEgd3JhcHBlciBmb3IgdGhlIG9i
amVjdCwgcmV0cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAgICAgICByZXR1cm4gJHtjbGFzc05h
bWV9Ojp3cmFwKGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldENh
Y2hlZFdyYXBwZXIoaW1wbC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgICAgICB9CiAgICAgfQog
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dAppbmRleCBkYjU4ODRjNWY0MjhjNzBkODVhZTEyNGUxZDY0ODYxOWJmZTdkZTQwLi42NmRk
NWM2ZDk5MDJkNDRiYjhjNzg3N2FmMDljNThjMGUxMTFjMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTExOSw2ICsxMTks
NyBAQCBWOERvTm90Q2hlY2tTaWduYXR1cmUKIFY4RW5hYmxlZEF0UnVudGltZT0qCiBWOEVuYWJs
ZWRQZXJDb250ZXh0PSoKIFY4R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1lbnR8SW1wbEVs
ZW1lbnRSb290fEltcGxPd25lclJvb3R8SW1wbE93bmVyTm9kZVJvb3R8SW1wbEJhc2VSb290CitW
OE5vV3JhcHBlckNhY2hlPSoKIFY4TWVhc3VyZUFzPSoKIFY4UmVhZE9ubHkKIFY4VW5mb3JnZWFi
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCmluZGV4IGQxMmQwODUzZDQ0N2ZkNjMxN2Y1NjAyNDY2MDgyYzk4YTc3NWY4MDMu
LjRjMzEwZDg5MTIyM2M1YWE4ZjZjNzZmMWMxYjQzNjU2YzhiMzMxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAt
NjM4LDExICs2MzgsMTEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIXRyeUNhdGNoLkhhc0Nh
dWdodCgpKTsKICAgICAgICAgaWYgKG1lc3NhZ2VQb3J0cykgewogICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgaSsrKQotICAgICAgICAgICAg
ICAgIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuc2V0KFY4TWVzc2FnZVBvcnQ6OndyYXAobWVz
c2FnZVBvcnRzLT5hdChpKS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3dyaXRl
ci5nZXRJc29sYXRlKCkpLCBpKTsKKyAgICAgICAgICAgICAgICBtX3RyYW5zZmVycmVkTWVzc2Fn
ZVBvcnRzLnNldCh0b1Y4T2JqZWN0KG1lc3NhZ2VQb3J0cy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgbV93cml0ZXIuZ2V0SXNvbGF0ZSgpKSwgaSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGFycmF5QnVmZmVycykgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheUJ1ZmZlcnMtPnNpemUoKTsgaSsrKSAgewotICAgICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhBcnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6OndyYXAo
YXJyYXlCdWZmZXJzLT5hdChpKS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3dy
aXRlci5nZXRJc29sYXRlKCkpOworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdjhBcnJheUJ1ZmZlciA9IHRvVjhPYmplY3QoYXJyYXlCdWZmZXJzLT5hdChpKS5nZXQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOwogICAgICAg
ICAgICAgICAgIC8vIENvYWxlc2NlIG11bHRpcGxlIG9jY3VyZW5jZXMgb2YgdGhlIHNhbWUgYnVm
ZmVyIHRvIHRoZSBmaXJzdCBpbmRleC4KICAgICAgICAgICAgICAgICBpZiAoIW1fdHJhbnNmZXJy
ZWRBcnJheUJ1ZmZlcnMuY29udGFpbnModjhBcnJheUJ1ZmZlcikpCiAgICAgICAgICAgICAgICAg
ICAgIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuc2V0KHY4QXJyYXlCdWZmZXIsIGkpOwpAQCAt
MjAyMiw3ICsyMDIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoaW5kZXggPj0gbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+c2l6ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAqb2JqZWN0ID0gVjhNZXNzYWdlUG9ydDo6
d3JhcChtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLT5hdChpbmRleCkuZ2V0KCksIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgKm9iamVj
dCA9IHRvVjgobV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+YXQoaW5kZXgpLmdldCgpLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIG1fcmVhZGVyLmdldElzb2xhdGUoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjAzNCw3ICsyMDM0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlc3Vs
dCA9IG1fYXJyYXlCdWZmZXJzLmF0KGluZGV4KTsKICAgICAgICAgaWYgKHJlc3VsdC5Jc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFY4QXJyYXlCdWZmZXI6OndyYXAoQXJyYXlCdWZm
ZXI6OmNyZWF0ZShtX2FycmF5QnVmZmVyQ29udGVudHMtPmF0KGluZGV4KSkuZ2V0KCksIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IHRvVjhPYmplY3QoQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2FycmF5QnVmZmVyQ29u
dGVudHMtPmF0KGluZGV4KSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9yZWFk
ZXIuZ2V0SXNvbGF0ZSgpKTsKICAgICAgICAgICAgIG1fYXJyYXlCdWZmZXJzW2luZGV4XSA9IHJl
c3VsdDsKICAgICAgICAgfQogICAgICAgICAqb2JqZWN0ID0gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCAwZWNj
NTllMzBjNzVmZWE2MWIwMTdiYTE3Yzg1OTIzZjkwY2QyNTBkLi43MWYxNjJhZWM4MDVhMmE3Mzkz
YjU2MmVlMDA5ZGY2ZjA0ZmZjZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNDMsMTUgKzQzLDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoQmxvYiogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEJsb2I6OmRpc3BhdGNoV3JhcEN1c3RvbShC
bG9iKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOwotCisgICAgQVNTRVJUKGltcGwpOwogICAgIGlmIChpbXBsLT5p
c0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgodG9GaWxlKGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwotCi0gICAgcmV0dXJuIFY4QmxvYjo6d3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvRmlsZShpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhCbG9iOjp3cmFwU2xv
dyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NS
dWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1
bGVDdXN0b20uY3BwCmluZGV4IDhiMTBhZDVjYjA2ODcxNDU1MmU4ODNlNzIyOGE4MWU1M2Y4Yjcz
OGIuLmNkNzYzNmE1NjM0ZGRlOTM0OTgwMDQ2MDk4ZjdjYmZmY2U1NjJhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3Bw
CkBAIC00MywzNiArNDMsMzUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChDU1NSdWxlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4Q1NTUnVsZTo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKENTU1J1bGUqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
LSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7
CisgICAgQVNTRVJUKGltcGwpOwogICAgIHN3aXRjaCAoaW1wbC0+dHlwZSgpKSB7CiAgICAgY2Fz
ZSBDU1NSdWxlOjpVTktOT1dOX1JVTEU6CiAgICAgICAgIC8vIENTU1Vua25vd25SdWxlLmlkbCBp
cyBleHBsaWNpdGx5IGV4Y2x1ZGVkIGFzIGl0IGRvZXNuJ3QgYWRkIGFueXRoaW5nCiAgICAgICAg
IC8vIG92ZXIgQ1NTUnVsZS5pZGwgKHNlZSBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogJ2JpbmRp
bmdzX2lkbF9maWxlcycpLgogICAgICAgICAvLyAtPiBVc2UgdGhlIGJhc2UgY2xhc3Mgd3JhcHBl
ciBoZXJlLgotICAgICAgICByZXR1cm4gVjhDU1NSdWxlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBWOENTU1J1bGU6OndyYXBTbG93KGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBDU1NSdWxlOjpTVFlMRV9SVUxF
OgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChz
dGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKICAgICBjYXNlIENTU1J1bGU6OkNIQVJTRVRfUlVMRToKLSAgICAgICAgcmV0dXJuIHRvVjgo
c3RhdGljX2Nhc3Q8Q1NTQ2hhcnNldFJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NDaGFyc2V0
UnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVs
ZTo6SU1QT1JUX1JVTEU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENTU0ltcG9y
dFJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJu
IGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihpbXBsKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2Fz
dDxDU1NNZWRpYVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBj
YXNlIENTU1J1bGU6OkZPTlRfRkFDRV9SVUxFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxDU1NGb250RmFjZVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NGb250RmFjZVJ1bGUq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIENTU1J1bGU6OlBB
R0VfUlVMRToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNo
V3JhcChzdGF0aWNfY2FzdDxDU1NQYWdlUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX0tFWUZSQU1FX1JVTEU6Ci0gICAgICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVsZSo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0
YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX0tFWUZSQU1FU19SVUxFOgotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NLZXlmcmFtZXNSdWxlKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9SVUxFOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NSZWdpb25SdWxlKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIH0KLSAgICByZXR1cm4gVjhDU1NSdWxlOjp3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4Q1NTUnVsZTo6d3JhcFNsb3co
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NT
VmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NT
VmFsdWVDdXN0b20uY3BwCmluZGV4IDI2MmQ4ZTFlYjNlOTg0NzNjNDI4ODE0NmJkMTYxZWEyMjk2
NjM1MTMuLjA5NGRhYzVlZDAwZmNhYjdjMWQ3NmNhZWYyZThjM2ZkZjY1OTVhYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1ZhbHVlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NWYWx1ZUN1c3Rv
bS5jcHAKQEAgLTQ2LDI3ICs0NiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KENTU1ZhbHVlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4Q1NTVmFsdWU6OmRpc3BhdGNoV3JhcEN1c3RvbShDU1NWYWx1ZSogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhp
c29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlzV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAg
ICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKICAgICBpZiAoaW1wbC0+aXNXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgpKQotICAgICAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NGaWx0ZXJWYWx1ZSo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRp
Y19jYXN0PFdlYktpdENTU0ZpbHRlclZhbHVlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAjZW5kaWYKICAgICBpZiAoaW1wbC0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKGlt
cGwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAg
ICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVOQUJMRShTVkcpCiAgICAg
aWYgKGltcGwtPmlzU1ZHUGFpbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
U1ZHUGFpbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0
dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYWludCo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgIGlmIChpbXBsLT5pc1NWR0NvbG9yKCkpCi0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR0NvbG9yKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHQ29s
b3IqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNlbmRpZgotICAgIHJldHVy
biBWOENTU1ZhbHVlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
cmV0dXJuIFY4Q1NTVmFsdWU6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggMzdhNjUyZjU4NGE1OTk1YWUxYmVlNzMzYzc5NGMxZjllMWRm
NTE3NC4uMTA2ODJkMzUxYjUxMjk1ZDBhMjUwNDc0MGIyZDhjYzE1NjQzYTZmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE4ICszOSwxNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhDYW52
YXNSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaFdyYXBDdXN0b20oQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVs
bFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlz
MmQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVy
biBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlm
IChpbXBsLT5pczNkKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2VuZGlmCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAKaW5kZXggNmRlOWNlOGUyZGMzNWM1MTY5YTNkZWNiOGZjZWMxNjg0NzI3
OTU3OS4uYzcwMjExOTExNTMwZThiYWEwZmFkM2U2NjBmYTg3NTdmYzE5Y2I3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9t
LmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0
dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZmZXJBcmd1bWVudDxEYXRhVmlldywg
Y2hhcj4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxCeXRlQXJyYXksIGZhbHNlKTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRGF0YVZpZXcqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKy8vIEZJWE1F
OiBEb24ndCBuZWVkIHRoaXMgb3ZlcnJpZGUuCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RGF0
YVZpZXc6OmRpc3BhdGNoV3JhcEN1c3RvbShEYXRhVmlldyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlm
ICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICBy
ZXR1cm4gVjhEYXRhVmlldzo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgIEFTU0VSVChpbXBsKTsKKyAgICByZXR1cm4gVjhEYXRhVmlldzo6d3JhcFNsb3coaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RGF0YVZpZXc6OmdldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IDU5NzkwOGNkM2UyNjAxZDhhM2M5N2ZkZTQ4ZmU4NjBkM2Y5Mjk5MTMuLjcy
M2ZmMjk5MmI3NmQxYWUzMWQxYjhjOGU0OTJmZTE1MjY3ZjI2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKQEAg
LTk1LDE3ICs5NSwxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVh
dGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB0b1Y4KHJl
c3VsdC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5k
bGU8djg6Ok9iamVjdD4gVjhEb2N1bWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKERvY3VtZW50KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpOworICAgIEFTU0VSVChpbXBsKTsKICAgICBpZiAoaW1wbC0+aXNIVE1MRG9j
dW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4o
aW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRj
aFdyYXAoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoaW1wbC0+aXNTVkdEb2N1bWVudCgp
KQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0
YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiAjZW5kaWYKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERvY3VtZW50
Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRD
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMmUyN2M3ODQ1ODg4ZDQyYjEwYzRkYWRiYjU0NWViMmRk
Zjg3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlY4RWxlbWVudC5oIgorI2luY2x1
ZGUgIlY4SFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJWOFNWR0VsZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBWOE5vZGU6OmRp
c3BhdGNoV3JhcEN1c3RvbSBmb3IgcGVyZm9ybWFuY2UuIEl0IG11c3QgYmUga2VwdCBpbiBzeW5j
Lgordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbShF
bGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKGltcGwpOworICAgIGlmIChpbXBsLT5p
c0hUTUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAodG9IVE1MRWxlbWVu
dChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAg
IGlmIChpbXBsLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChz
dGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisjZW5kaWYKKyAgICByZXR1cm4gVjhFbGVtZW50Ojp3cmFwU2xvdyhzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNwcAppbmRl
eCBiMzVlMTMzMmE0ZmI1ZmNjZjUzODBhZGRkY2UzNTVhOTgwZmE1ZjJkLi5hZTkwMWViYjM1NjUz
ODliMzUxNjViYmFkZWUzNGM3MTYyZTI2ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwCkBAIC00MywxNiArNDMsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFbnRy
eSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEVudHJ5OjpkaXNwYXRjaFdy
YXBDdXN0b20oRW50cnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7CiAgICAg
aWYgKGltcGwtPmlzRmlsZSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxGaWxl
RW50cnkqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJu
IGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxGaWxlRW50cnkqPihpbXBsKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIAogICAgIEFTU0VSVChpbXBsLT5pc0RpcmVjdG9yeSgpKTsKLSAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeSo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RGly
ZWN0b3J5RW50cnkqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3RvbS5jcHAKaW5kZXggNTQ1ZGQxZmM4NTk3YjBhOTg1
ODhiNjExNWUzODQ1NTk0MjdlNDgwMS4uNmQ4ODk1YzhlYjYwMzI5ZDNiOTM0NjEyY2EwN2Q1ZTZm
YmQ2ZGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RW50cnlTeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFbnRyeVN5bmNDdXN0b20uY3BwCkBAIC00MywxNiArNDMsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFbnRyeVN5bmMqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhFbnRyeVN5bmM6OmRpc3BhdGNoV3JhcEN1
c3RvbShFbnRyeVN5bmMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7CiAgICAg
aWYgKGltcGwtPmlzRmlsZSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxGaWxl
RW50cnlTeW5jKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJl
dHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RmlsZUVudHJ5U3luYyo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCiAgICAgQVNTRVJUKGltcGwtPmlzRGlyZWN0b3J5KCkp
OwotICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5U3luYyo+KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8RGlyZWN0b3J5RW50cnlTeW5jKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAppbmRleCA3NWU2YmJjYmVi
MThjNDJkN2EyMmIxZDY2ZDQ3Y2NkNzhiZjg1NTI1Li4yMmM0NTc3ZjExNDdjYjYxNmZjYTU0NDg4
ZmEzNGZkNzA1MjliMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCkBAIC03MCwyMiArNzAsMjEgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RXZlbnQ6OmNsaXBib2FyZERhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4KIAogI2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZh
Y2VOYW1lKSBcCiAgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3IjI2ludGVyZmFjZU5h
bWUgPT0gZGVzaXJlZEludGVyZmFjZSkgXAotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2Fz
dDxpbnRlcmZhY2VOYW1lKj4oZXZlbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
ICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PGludGVyZmFjZU5hbWUqPihldmVu
dCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KEV2ZW50KiBldmVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlICppc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEV2ZW50Ojpk
aXNwYXRjaFdyYXBDdXN0b20oRXZlbnQqIGV2ZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUgKmlzb2xhdGUpCiB7Ci0gICAgaWYgKCFldmVudCkK
LSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoZXZl
bnQpOwogCiAgICAgU3RyaW5nIGRlc2lyZWRJbnRlcmZhY2UgPSBldmVudC0+aW50ZXJmYWNlTmFt
ZSgpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBFdmVudCBmaXJzdCB0byBhdm9pZCBpbmZp
bml0ZSByZWN1cnNpb24uCiAgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JFdmVudCA9
PSBkZXNpcmVkSW50ZXJmYWNlKQotICAgICAgICByZXR1cm4gVjhFdmVudDo6d3JhcChldmVudCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIFY4RXZlbnQ6OndyYXBT
bG93KGV2ZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCiAgICAgRE9NX0VWRU5UX0lO
VEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAKLSAgICByZXR1
cm4gVjhFdmVudDo6d3JhcChldmVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBy
ZXR1cm4gVjhFdmVudDo6d3JhcFNsb3coZXZlbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRl
eCAwNDkxNWQ3OTJiMWRiYTg0ZWZiNWY5YzMwYTFjODFlMGE0NjgzMzhlLi4wZTA5ODgxMjVjOGVm
NGY5NWQ2MDhhYmFiNmRjMTA3NjgzMWUzNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCkBA
IC04NCwxNCArODQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246
Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlvbiogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEhUTUxDb2xsZWN0aW9uOjpkaXNwYXRj
aFdyYXBDdXN0b20oSFRNTENvbGxlY3Rpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBBU1NFUlQo
aW1wbCk7CiAgICAgaWYgKGltcGwtPnR5cGUoKSA9PSBEb2NBbGwpCi0gICAgICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PEhUTUxBbGxDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Ci0gICAgcmV0dXJuIFY4SFRNTENvbGxlY3Rpb246OndyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0
aWNfY2FzdDxIVE1MQWxsQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgIHJldHVybiBWOEhUTUxDb2xsZWN0aW9uOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcAppbmRleCA4ZjRmY2Y0NWQxZGY3YTMxODM5NmM3NGI5NzFjZmRjZmYyM2Q3Yzhk
Li4yMDNhYmI1MmM1YWY0MDQ1NTBmZThhOGZmMzE2YmVlODYxY2ZjMzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHAKQEAgLTE2OCwxMSArMTY4LDEwIEBAIHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAg
ICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4SFRNTERvY3VtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20oSFRNTERvY3VtZW50KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4SFRN
TERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgQVNT
RVJUKGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4SFRNTERv
Y3VtZW50Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlm
ICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgaWYgKCFW
OERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA2
M2MwZjY1OGYwYjQ0YTlmZDhiNGY0ZDExYzM3ZjU2NDQ2MWE1OGI0Li5mYjU3MTYwYzFiZGM3Y2Yy
NGIzZTJiYjYwYmI5ZWQxMDZjZGE5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MCwxMCAr
NDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4SFRN
TEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbShIVE1MRWxlbWVudCogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
KyAgICBBU1NFUlQoaW1wbCk7CiAgICAgcmV0dXJuIGNyZWF0ZVY4SFRNTFdyYXBwZXIoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggODkwZTQx
MjZhYjE5ZjE4NjNlNGEwOGE2ZTA1ZTllYzEzNTM4NzhlYy4uZGQyM2Y2YjIxZjllYTg1N2FmNDBj
YTc5Mzg4ZjhjOTIyMjlmNTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCkBAIC0zNSwxMSArMzUsMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFn
ZURhdGEqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhJbWFnZURhdGE6OmRp
c3BhdGNoV3JhcEN1c3RvbShJbWFnZURhdGEqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkgewogICAgICAgICAv
LyBDcmVhdGUgYSBWOCBVaW50OENsYW1wZWRBcnJheSBvYmplY3QuCiAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBwaXhlbEFycmF5ID0gdG9WOChpbXBsLT5kYXRhKCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDhhOThhNzZlNmZiZjMxMGU0ZDQ2MDRlNTBiZDUyYTAy
OTliNDgxMWQuLmRlMWQzZjliZTgwMDVhMjI5NzMyZWQwZjYxZDc3ODExNzQ3MzliNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3Bw
CkBAIC0xMjUsNDkgKzEyNSw0NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBl
bmRDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4
OjpOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhTbG93KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhOb2RlOjpk
aXNwYXRjaFdyYXBDdXN0b20oTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLQotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwp
OwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwot
CisgICAgQVNTRVJUKGltcGwpOwogICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUoKSkgewogICAg
IGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVh
c29ucywgdGhpcyBpcyBpbmxpbmVkIGZyb20gVjhFbGVtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20g
YW5kIG11c3QgcmVtYWluIGluIHN5bmMuCiAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxFbGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOCh0b0hUTUxFbGVtZW50KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcCh0b0hU
TUxFbGVtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVOQUJMRShT
VkcpCiAgICAgICAgIGlmIChpbXBsLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZH
RWxlbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2VuZGlmCi0gICAg
ICAgIHJldHVybiBWOEVsZW1lbnQ6OndyYXAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gVjhFbGVtZW50Ojp3cmFw
U2xvdyhzdGF0aWNfY2FzdDxFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgo
c3RhdGljX2Nhc3Q8QXR0cio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
ICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PEF0dHIqPihpbXBsKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAgICAgICAg
cmV0dXJuIHRvVjgodG9UZXh0KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
ICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvVGV4dChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q0RBVEFTZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8Q0RB
VEFTZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBO
b2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19j
YXN0PEVudGl0eVJlZmVyZW5jZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PEVudGl0eVJlZmVyZW5jZSo+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6RU5USVRZ
X05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEVudGl0eSo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0
YXRpY19jYXN0PEVudGl0eSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAg
IGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2Fz
dDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8Q29tbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
ICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PENvbW1lbnQqPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6Ci0g
ICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nh
c3Q8RG9jdW1lbnRUeXBlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
ICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4oaW1wbCks
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudEZyYWdt
ZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBk
aXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxO
b3RhdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KLSAgICByZXR1
cm4gVjhOb2RlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0
dXJuIFY4Tm9kZTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKaW5kZXgg
Mzk3ZTNmOWFlNWMwNDNjNjBlMmYwYjcyOGI3YzExZjA5NTJiZDIzNi4uMjBlMTdlNTgzZjcxY2Q0
YjgwNzE2YTFhM2VjNjNiODBiMzNlNjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAK
QEAgLTQzLDE3ICs0MywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KFBlcmZvcm1hbmNlRW50cnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhQZXJmb3JtYW5jZUVudHJ5OjpkaXNwYXRjaFdyYXBDdXN0b20oUGVyZm9y
bWFuY2VFbnRyeSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IHY4OjpOdWxsKCk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX1RJ
TUlORykKICAgICBpZiAoaW1wbC0+aXNSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKj4oaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogI2VuZGlmCi0KLSAgICByZXR1cm4gVjhQZXJmb3JtYW5jZUVudHJ5Ojp3cmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4UGVyZm9ybWFuY2VFbnRy
eTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDYwNzM4ZDdlOWU3ODRiYTZk
ZWJmMGNkZTAwOWRlZjVmNjczMTkwZTkuLmMyOGMzNjViNzg5MzYyOTVlYzMyOGM0YTMwNTI0Njhh
MmM2ZDhkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTM4LDExICszOCwxMCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNWR0RvY3VtZW50
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4U1ZHRG9jdW1lbnQ6OmRpc3Bh
dGNoV3JhcEN1c3RvbShTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXBTbG93KGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKICAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxl
bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmFjMWQ2MDQ1YjFmNzg3OTRiOWQyMmFjN2JmMDc1OGRh
ZWNhYzQzLi42YjIyZTk1NTczMzZlODM3MTdjYzQzMTIxMGI5YzE0NmI5ODcyMDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50
Q3VzdG9tLmNwcApAQCAtMzcsMTAgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4U1ZHRWxlbWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKFNWR0VsZW1l
bnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxX
aXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOwogICAgIHJldHVybiBjcmVhdGVW
OFNWR1dyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3Vz
dG9tLmNwcAppbmRleCBkNDVjYmUyNGJmNzM1YjI0YjcxODE1MjU5Yjg4ZmM3Y2UzNDFlZTJiLi42
ZTg4YTlmN2Q4NmZmNTJkMDYyYmU0ZDhlZTdlNGVmZjM3NTc0MGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNw
cApAQCAtNTcsNTIgKzU3LDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoU1ZHUGF0aFNlZyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFNWR1BhdGhTZWc6OmRpc3BhdGNoV3JhcEN1c3RvbShTVkdQYXRoU2VnKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOworICAgIEFTU0VSVChpbXBsKTsKICAgICBzd2l0Y2ggKGltcGwtPnBhdGhTZWdU
eXBlKCkpIHsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ0xPU0VQQVRIOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ2xvc2VQYXRoKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ0Nsb3NlUGF0aCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fQUJTOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvQWJzKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fUkVMOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvUmVsKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fQUJTOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvQWJzKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fUkVMOgotICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvUmVsKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklDX0FCUzoK
LSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Fi
cyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlz
cGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdf
Q1VSVkVUT19DVUJJQ19SRUw6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0
b0N1YmljUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBT
VkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUzoKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMqPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyo+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRP
X1FVQURSQVRJQ19SRUw6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBj
YXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX0FCUzoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8U1ZHUGF0aFNlZ0FyY0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdB
cmNBYnMqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1Bh
dGhTZWc6OlBBVEhTRUdfQVJDX1JFTDoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
U1ZHUGF0aFNlZ0FyY1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
ICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdBcmNSZWwqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JF
TDoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWxSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0
dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJl
bCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0
aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMqPihpbXBsKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxT
VkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTDoK
LSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2Fs
UmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBk
aXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRI
U0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0
PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJQ19T
TU9PVEhfUkVMOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aFJlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNh
c2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTOgotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aEFicyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1
cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoQWJzKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUw6Ci0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNw
YXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwq
PihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFY4U1ZHUGF0aFNlZzo6d3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBWOFNWR1BhdGhTZWc6OndyYXBTbG93KGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5
bGVTaGVldEN1c3RvbS5jcHAKaW5kZXggZWQwNWZhMmJkMDNhOWZmY2RlODgxNzMyNzI5ZmU1Mzhk
MjQ0NGYxYS4uM2I4ZjU0YjZkZTMwOTAwZjQ5MTRjZGI0ZTZhMGY3ZDYzMzQ0NDRhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVl
dEN1c3RvbS5jcHAKQEAgLTM3LDEzICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFN0eWxlU2hlZXQqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhTdHlsZVNoZWV0OjpkaXNwYXRjaFdyYXBDdXN0b20oU3R5bGVT
aGVldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVs
bFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlz
Q1NTU3R5bGVTaGVldCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDU1NTdHls
ZVNoZWV0Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgcmV0dXJuIFY4
U3R5bGVTaGVldDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhTdHlsZVNoZWV0Ojp3cmFw
U2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZDUxZTgwNDdjM2E4M2E5ZWY2NmRi
MmYwNWFhYWM5NmQ5MzY1MWVmZi4uZmY3NDFmNmI5MDgzMDczYTdiM2ZmYzNkZDBlNGJkZGVhNTAx
NmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjAsNyArMjAsOCBAQAogCiBbCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTSW5saW5lR2V0T3duUHJvcGVydHlTbG90
CisgICAgSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QsCisgICAgVjhDdXN0b21Ub0pTT2JqZWN0
CiBdIGludGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAKICAgICAvLyBET00gTGV2ZWwgMSBDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDM4ZDg1OTVkZWIxNjAzZWI1MmI3NTE4MTcy
MjQyOGMzZjUwNTkxZDQuLjNiOWI1YWRmNGYwYzQ4OGJjZmMyYzU3YmU1YTA2NGY3YzlkMjBiMWQg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMDY2LDEyICsxMDY2LDEyIEBAIEVORAog
ICAgICAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAg
ICAgIGlmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgewogICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGVs
ZW1lbnQtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CiAgICAgaWYgKCFNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKSB8fCAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc01lZGlhRW5hYmxlZCgpKSkK
LSAgICAgICAgcmV0dXJuIFY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ6OndyYXAoZWxl
bWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChlbGVtZW50LCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8JHtKU0lu
dGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAK
IEVORApAQCAtMTA3OSwzOSArMTA3OSw0MCBAQCBFTkQKICAgICAgICAgICAgIH0gZWxzaWYgKCRl
bmFibGVkVGFnc3skdGFnTmFtZX17Y29udGV4dENvbmRpdGlvbmFsfSkgewogICAgICAgICAgICAg
ICAgIG15ICRjb250ZXh0Q29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnRl
eHRDb25kaXRpb25hbH07CiAgICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFDb250ZXh0RmVh
dHVyZXM6OiR7Y29udGV4dENvbmRpdGlvbmFsfUVuYWJsZWQoZWxlbWVudC0+ZG9jdW1lbnQoKSkp
Ci0gICAgICAgIHJldHVybiBWOCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX06Ondy
YXAodG8kcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1lbnQpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwotICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PCR7SlNJbnRl
cmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1l
fShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gZGlzcGF0
Y2hXcmFwKHN0YXRpY19jYXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogRU5ECiA7CiAgICAgICAgICAgICB9IGVsc2lmICgkZW5h
YmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH0pIHsKICAgICAgICAgICAgICAg
ICBteSAkcnVudGltZUNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1l
Q29uZGl0aW9uYWx9OwogICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gVjgkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFwKHRvJHBhcmFtZXRl
cnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKLSAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihl
bGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3Bh
dGNoV3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNf
Y2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKIH0KIEVORAogOwogICAgICAgICAgICAgfSBlbHNpZiAoJHtKU0ludGVyZmFjZU5hbWV9
IGVxICJIVE1MRWxlbWVudCIpIHsKICAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIo
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjgk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDo6d3JhcChlbGVtZW50LCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiB9CiAKIEVORAogOwogICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQq
IGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDwke0pTSW50ZXJm
YWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1
cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiAKQEAgLTExOTQsNyArMTE5NSw3IEBA
IEVORAogOwogICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewogICAg
ICAgICBwcmludCBGIDw8RU5ECi10eXBlZGVmIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAoKkNyZWF0
ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKSgkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSopOwordHlwZWRlZiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICgqQ3Jl
YXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CiAKIEVORAogOwpAQCAtMTIxMyw3ICsxMjE0LDcgQEAgRU5E
CiA7CiAgICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CiAgICAgICAg
IHByaW50IEYgPDxFTkQKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IEZ1bmN0aW9uTWFwOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwgKCkpOwpAQCAtMTI0Myw3
ICsxMjQ0LDcgQEAgRU5ECiAgICAgcHJpbnQgRiA8PEVORAogICAgIH0KICAgICBDcmVhdGUkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVu
Y3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgaWYgKGNy
ZWF0ZVdyYXBwZXJGdW5jdGlvbikKKyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKSB7CiBF
TkQKIDsKICAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7CkBAIC0xMjUzLDEx
ICsxMjU0LDI4IEBAIEVORAogRU5ECiA7CiAgICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5VHlw
ZSBlcSAiVjgiKSB7CisgICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1M
IikgeworICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICBpZiAoY3JlYXRlV3JhcHBl
ckZ1bmN0aW9uID09IGNyZWF0ZUhUTUxFbGVtZW50V3JhcHBlcikKKyAgICAgICAgICAgcmV0dXJu
IFY4SFRNTEVsZW1lbnQ6OndyYXBTbG93KGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CitFTkQKKyAgICAgICAgfQogICAgICAgICBwcmludCBGIDw8RU5ECiAgICAgICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyRnVuY3Rpb24oZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLSAgICByZXR1cm4gVjgkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFw
KHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKyAgICB9CitFTkQKKzsKKyAgICAgICAgaWYgKCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX0gZXEgIlNWRyIpIHsKKyAgICAgICAgICAgIHByaW50IEYgPDxFTkQKKyAgICBy
ZXR1cm4gVjhTVkdFbGVtZW50Ojp3cmFwU2xvdyhlbGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOworRU5ECis7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludCBGIDw8
RU5ECisgICAgcmV0dXJuIGRpc3BhdGNoV3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJm
YWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiBFTkQKIDsKKyAg
ICAgICAgfQogICAgIH0KICAgICBwcmludCBGIDw8RU5ECiB9CkBAIC0xMzE1LDcgKzEzMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudDsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVy
KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9CiBFTkQKIDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmlkbAppbmRleCA1YjI5ZWQ1NDIyZjFkYTEyOThhMWJj
YzdmYzQzMjU1MTg3ZTdlZDJkLi5mYzFhM2FjYTcxMDAyZmEyOTYxZGU5YTliZDdlOWM4Njg2MjBk
NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUl0ZW1WYWx1ZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRsCkBAIC0z
MSw2ICszMSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUlDUk9EQVRBLAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCi0gICAgT21pdENvbnN0cnVjdG9yCisgICAgT21pdENvbnN0cnVjdG9yLAorICAg
IFY4Tm9XcmFwcGVyQ2FjaGUKIF0gaW50ZXJmYWNlIE1pY3JvRGF0YUl0ZW1WYWx1ZSB7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCmluZGV4IDQ2YzBlOTlj
M2Q4ZDM1Njk5ZDk4ZTVmNmVhZjM4ZmNiZDhjMmU4YmQuLjZhN2E4MmQ3YTYwMTdlM2I4YjRjYzBi
ZTJhZTRlNDY2MThjYWFhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRQcm9maWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJv
ZmlsZS5pZGwKQEAgLTI3LDcgKzI3LDggQEAKIFsKICAgICBDb25kaXRpb25hbD1KQVZBU0NSSVBU
X0RFQlVHR0VSLAogICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICBWOEN1c3RvbVRvSlNPYmplY3QK
KyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZQogXSBpbnRlcmZh
Y2UgU2NyaXB0UHJvZmlsZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0aXRs
ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1aWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbAppbmRleCAzYjI4Yjg4Njcx
NDA4YzFjZWQ0MjZjYjNmYmYxMmRlMmM2ODUzYjgyLi4xYjlkNWZjM2I5OTI0Y2E2NzQwYTQ3ZDM1
NTVlOGYyZGZhYmVmOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0UHJvZmlsZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRQ
cm9maWxlTm9kZS5pZGwKQEAgLTI3LDcgKzI3LDggQEAKIFsKICAgICBDb25kaXRpb25hbD1KQVZB
U0NSSVBUX0RFQlVHR0VSLAogICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICBWOEN1c3RvbVRvSlNP
YmplY3QKKyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZQogXSBp
bnRlcmZhY2UgU2NyaXB0UHJvZmlsZU5vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgZnVuY3Rpb25OYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGRlNWViN2UxODI4MmZlNDM0MjcxZDQz
YWFmOTY4YTE5YTE2M2ZkMzUuLmRjMmEyZGNiMTRhMjE2M2U0ZTc3YWU2NWE3NTdiZTlmYmJkMThi
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTM5LDYgKzM5LDcgQEAKICAgICBS
ZXBsYWNlYWJsZUNvbnN0cnVjdG9yLAogICAgIEpTTGVnYWN5UGFyZW50PUpTRE9NV2luZG93QmFz
ZSwKICAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZSwKICAgICBJ
bnRlcmZhY2VOYW1lPVdpbmRvdwogXSBpbnRlcmZhY2UgRE9NV2luZG93IHsKICAgICAvLyBET00g
TGV2ZWwgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKaW5kZXggNjli
MTFmMWFjYWIzYTY2NWVlNGU5ODdhNTc2NjRiZmY5ZWIwNjc3NS4uMmQ1MjNlYjFhMzdjOGRkMGIw
NTg1MTNjYWY0NWE0ZWI5ZDM5ZDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCkBAIC0zNCw3ICszNCw4IEBACiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNXb3JrZXJD
b250ZXh0QmFzZSwKICAgICBKU05vU3RhdGljVGFibGVzLAogICAgIE9taXRDb25zdHJ1Y3RvciwK
LSAgICBWOEN1c3RvbVRvSlNPYmplY3QKKyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhO
b1dyYXBwZXJDYWNoZQogXSBpbnRlcmZhY2UgV29ya2VyQ29udGV4dCB7CiAKICAgICAvLyBXb3Jr
ZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZm
ZXIuY3BwCmluZGV4IGQ0Mzg3NGI2M2IxOTRkNTQ5MDcyNDJjNDc1MWRkYWQ4ZjA2ZmU2NjAuLjJk
MTkyYmRiNzhlZDEwZjU1ZGEyYTg2NTVhN2M3OGU3MTgxYWYzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdW5z
aWduZWQgV2ViQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogI2lmIFdFQktJVF9VU0lO
R19WOAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkFycmF5QnVmZmVyOjp0b1Y4VmFsdWUoKQog
ewotICAgIHJldHVybiBWOEFycmF5QnVmZmVyOjp3cmFwKG1fcHJpdmF0ZS5nZXQoKSk7CisgICAg
cmV0dXJuIHRvVjhPYmplY3QobV9wcml2YXRlLmdldCgpKTsKIH0KIAogV2ViQXJyYXlCdWZmZXIq
IFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCmluZGV4IGY4MjI4ZTlk
N2Q4YzI1ZmZkNDM5NDQ5NDJiMmJhYTdmMDA4ZTFhOGQuLmIyZjI5OWZkZDM0MjNiNTBhYjcwYmQ0
MDBmNGY3ZjMwYjIwNGVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkJsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2ViQmxvYjo6YXNzaWduKGNvbnN0IFdlYkJsb2ImIG90
aGVyKQogI2lmIFdFQktJVF9VU0lOR19WOAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICBXZWJCbG9i
Ojp0b1Y4VmFsdWUoKQogewotICAgIHJldHVybiBWOEJsb2I6OndyYXAobV9wcml2YXRlLmdldCgp
KTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0KCkpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173929</attachid>
            <date>2012-11-13 11:05:05 -0800</date>
            <delta_ts>2012-11-13 13:21:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102082-20121113110305.patch</filename>
            <type>text/plain</type>
            <size>66924</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY5MWJjOWU0OGFiNmUx
OTBkODUzM2I5MDk3YmQ5Y2Y1YzMxZjdhYi4uMGM4NTQ0MmE5OTc4M2NiNWNkZDRhZDMyYmFiMDYy
NjRkZTUxNDY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTExLTEzICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFtWOF0gTW9yZSBlZmZpY2ll
bnQgd3JhcHBlciBkaXNwYXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBEaXNwYXRjaGluZyBhIGNhbGwgdG8gVjhXaGF0ZXZlcjo6d3JhcCBpbnZvbHZlZCBh
IGNoYWluCisgICAgICAgIG9mIGNhbGxzLCBlYWNoIG9mIHdoaWNoIGNoZWNrZWQgaXRzIHdyYXBw
ZXIgY2FjaGUuCisgICAgICAgIFRoaXMgcmVmYWN0b3IgZ2l2ZXMgY2FsbHMgb25seSAyIGNob2lj
ZXMgb2YgZnVuY3Rpb25zIHRvIGNhbGw6CisgICAgICAgIHRvVjggYW5kIHRvVjhPYmplY3QgaW5z
dGVhZCBvZiB3cmFwLiB3cmFwIGhhcyBiZWVuIHJlbmFtZWQgdG8KKyAgICAgICAgZGlzcGF0Y2hX
cmFwIGFuZCBubyBsb25nZXIgY29udGFpbnMgY2FjaGUgY2hlY2tzLgorICAgICAgICBBZGRpdGlv
bmFsbHksIGNsYXNzZXMgd2hpY2ggcmVxdWlyZSBhIGN1c3RvbSB0b1Y4IGZ1bmN0aW9uCisgICAg
ICAgIGhhdmUgaGFkIGFsbCB3cmFwcGluZyBhbmQgY2FjaGluZyBjYWxscyByZW1vdmVkLCBhcyB0
aGV5IGNvdWxkCisgICAgICAgIG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBTdWZmaWNpZW50bHkgY292ZXJlZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5Lmlk
bDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJsb2I6OmRpc3BhdGNoV3JhcEN1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTUnVsZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOENTU1J1bGU6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhDU1NWYWx1ZTo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmRpc3BhdGNoV3Jh
cEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRy
eUN1c3RvbS5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RWxl
bWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEVudHJ5OjpkaXNwYXRjaFdy
YXBDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEVudHJ5U3luYzo6ZGlzcGF0Y2hXcmFwQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RXZlbnQ6OmRpc3BhdGNoV3JhcEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ29sbGVjdGlvbjo6ZGlzcGF0Y2hXcmFw
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OmRpc3BhdGNoV3JhcEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRWxlbWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhJbWFnZURhdGE6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE5vZGU6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFBlcmZvcm1hbmNlRW50cnk6OmRpc3BhdGNoV3JhcEN1c3RvbSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhTVkdEb2N1bWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZH
RWxlbWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHUGF0aFNl
Zzo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhT
dHlsZVNoZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U3R5bGVTaGVldDo6ZGlz
cGF0Y2hXcmFwQ3VzdG9tKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICog
ZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFdyYXBwZXJGdW5jdGlvbnMpOgorICAg
ICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVy
RmFjdG9yeUhlYWRlckZpbGUpOgorICAgICAgICAqIGh0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGw6CisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5p
ZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoKKwogMjAxMi0xMS0xMyAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQzOTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM3M2RkMGVmNjIwZWM0NTQxNDM5ZTZmOWQxZGY3YTQ3ODYwNmU5OTYuLjYxMTNjYzg1MWQyNzhi
OTkwYWFmYTJiNTc1YWU3NTY0MDFmNGFhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMTMgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW1Y4XSBNb3JlIGVmZmljaWVudCB3cmFwcGVyIGRpc3BhdGNoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIwODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogc3JjL1dlYkFycmF5QnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXlCdWZmZXI6OnRvVjhWYWx1ZSk6Cisg
ICAgICAgICogc3JjL1dlYkJsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCbG9iOjp0b1Y4
VmFsdWUpOgorCiAyMDEyLTExLTEzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDM5MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaWRsCmluZGV4IDU5NjE4YWQ3NDlj
MzMyZTc4ZDQ1NWJiODZhNzEwZjJjYWM2YThkMTYuLmI2YzQwNDIzODNkNzcyYWQ3M2I0YjkzZWYz
YTEzYzc3MjEwODRlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkFueS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QW55LmlkbApAQCAtMjUsNyArMjUsOCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRSwKLSAgICBDdXN0b21Ub0pTT2JqZWN0CisgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAg
ICBWOE5vV3JhcHBlckNhY2hlCiBdIGludGVyZmFjZSBJREJBbnkgewogICAgIC8vIFRoaXMgc3Bh
Y2UgaXMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXkuaWRsCmluZGV4IDNiOTZmYzFiYjRlNmQ1YWJjMmRiZjZkYTdj
YjFkNjQ0MGQxMzJlZjcuLjA3NGIyYWJhNjAzNTgyMjVjMzc3OGMyZDc1NTc3YjI2YTg4N2VhMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmlkbApAQCAtMjUs
NyArMjUsOCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKLSAgICBD
dXN0b21Ub0pTT2JqZWN0CisgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICBWOE5vV3JhcHBlckNh
Y2hlCiBdIGludGVyZmFjZSBJREJLZXkgewogICAgIC8vIFRoaXMgc3BhY2UgaXMgaW50ZW50aW9u
YWxseSBsZWZ0IGJsYW5rLgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2OTRkZmQwNTk3NTZiNTM1
ZDM5NWJkZjIwYTgwYTQ0YjgwZGU0YTY0Li4wOTc0Zjk5MzE0NmJkMGIwOTcwZTNkYmY3YTA2NmUx
OWQyMDViYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMzU2LDYgKzIzNTYsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25D
dXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeVN5bmNDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQppbmRleCA1YzhhYTdmOWYwMjc4OWM2MzM4NmQwMWZlMDBiZDJkZjRjOGYyNGQwLi5jMTY2
MTQwMWE3NmI3ODFmYTZkYTQyNmEyMDE3M2Q2NmRlZDg5OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzgxLDcgKzM4
MSw2IEBAIEVORAogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8JHtuYXRp
dmVUeXBlfSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMg
V3JhcHBlclR5cGVJbmZvIGluZm87CiBFTkQKQEAgLTQwMiw4ICs0MDEsOCBAQCBFTkQKIAogICAg
IGlmICgkaW1wbENsYXNzTmFtZSBlcSAiSFRNTERvY3VtZW50IikgewogICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBJ
blNoYWRvd09iamVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciwgTm9kZSogaW1wbCk7
Ci0gIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9j
dW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcEluU2hhZG93T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiB3cmFwcGVyLCBOb2RlKiBpbXBsKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0
b21pY1N0cmluZyYga2V5LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqKTsKIEVORAogICAgIH0KIApAQCAtNDkwLDEwICs0ODksMjMgQEAgRU5ECiBF
TkQKICAgICB9CiAKLSAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRy
VHlwZSgkbmF0aXZlVHlwZSk7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEVsZW1lbnQiKSB7CisgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgICBmcmllbmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGVWOEhUTUxXcmFwcGVyKEhUTUxFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CitFTkQKKyAgICB9IGVsc2lmICgkaW50ZXJm
YWNlTmFtZSBlcSAiU1ZHRWxlbWVudCIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOworICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4U1ZHV3Jh
cHBlcihTVkdFbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKik7CitFTkQKKyAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRWxl
bWVudCIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIC8vIFRo
aXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gaGFjay4gU2VlIFY4RWxlbWVudDo6ZGlz
cGF0Y2hXcmFwQ3VzdG9tLgorICAgIGZyaWVuZCBjbGFzcyBWOE5vZGU7CitFTkQKKyAgICB9CisK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogcHJpdmF0ZToKLSAgICBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdygke3dyYXBTbG93QXJndW1lbnRUeXBl
fSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7
CiBFTkQKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSAmJiBAeyRkYXRhTm9k
ZS0+Y29uc3RydWN0b3JzfSA+IDEpIHsKQEAgLTUwNCw2MSArNTE2LDcyIEBAIEVORAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIG15ICR3
cmFwU2xvd0FyZ3VtZW50VHlwZSA9IEdldFBhc3NSZWZQdHJUeXBlKCRuYXRpdmVUeXBlKTsKKyAg
ICBteSAkbm9XcmFwID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhOb1dyYXBw
ZXJDYWNoZSJ9OworICAgIGlmICgkbm9XcmFwKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKIH07CiAKIEVORAotCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQp
Owotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBl
fSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQotewotRU5ECi0gICAgbXkgJGdldENhY2hlZFdyYXBwZXIgPSBJc05vZGVT
dWJUeXBlKCRkYXRhTm9kZSkgPyAiVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwp
IiA6ICJET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKSI7Ci0gICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSAkZ2V0Q2FjaGVkV3JhcHBlcjsKLSAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotRU5ECi0gICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX06OndyYXBTbG93KGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci1FTkQKLQotICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAnRWxlbWVudCcgb3IgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3Vw
cHJlc3NUb0pTT2JqZWN0In0pIHsKLSAgICAgICAgIyBEbyBub3QgZ2VuZXJhdGUgdG9WOCgpIGZv
ciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCi0gICAgfSBlbHNpZiAoISgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTT2JqZWN0In0gb3IgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Ub0pTT2JqZWN0In0pKSB7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbXkgJHdyYXBTbG93QXJndW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUoJG5h
dGl2ZVR5cGUpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisgICAgZnJp
ZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZGlzcGF0Y2hXcmFwKCR7bmF0aXZlVHlwZX0qLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkaXNwYXRjaFdyYXBDdXN0b20oJHtuYXRp
dmVUeXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3Jh
cFNsb3dBcmd1bWVudFR5cGV9LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKK307CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29s
YXRlKTsKLSAgICByZXR1cm4gJHtjbGFzc05hbWV9Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Ci19CiBFTkQKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBuZSAnTm9k
ZScpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIH0KIAorICAg
IG15ICRjdXN0b21XcmFwID0gISEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tVG9KU09iamVjdCJ9IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3Vz
dG9tVG9KU09iamVjdCJ9KTsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiU3VwcHJlc3NUb0pTT2JqZWN0In0pIHsKKyAgICAgICAgZGllICJDYW4ndCBzdXBwcmVzcyB0
b1Y4IGZvciBzdWJjbGFzc1xuIiBpZiBAYWxsUGFyZW50czsKKyAgICB9IGVsc2lmICgkbm9XcmFw
KSB7CisgICAgICAgIGRpZSAiTXVzdCBoYXZlIGN1c3RvbSB0b1Y4XG4iIGlmICEkY3VzdG9tV3Jh
cDsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworY2xhc3MgJHtuYXRpdmVU
eXBlfTsKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgdjg6Oklzb2xhdGUqID0gMCk7CiBFTkQKICAgICB9IGVsc2UgeworCisgICAgICAgIG15ICRn
ZXRDYWNoZWRXcmFwcGVyID0gSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpID8gIlY4RE9NV3JhcHBl
cjo6Z2V0Q2FjaGVkV3JhcHBlcihpbXBsKSIgOiAiRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xh
dGUpLT5nZXQoaW1wbCkiOworICAgICAgICBteSAkd3JhcFNsb3dDYWxsID0gJGN1c3RvbVdyYXAg
PyAiJHtjbGFzc05hbWV9OjpkaXNwYXRjaFdyYXBDdXN0b20iIDogIiR7Y2xhc3NOYW1lfTo6d3Jh
cFNsb3ciOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBkaXNwYXRjaFdyYXAoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK3sKKyAgICBBU1NF
UlQoaW1wbCk7CisgICAgQVNTRVJUKCRnZXRDYWNoZWRXcmFwcGVyLklzRW1wdHkoKSk7CisgICAg
cmV0dXJuICR3cmFwU2xvd0NhbGwoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30K
KworaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVjdCgke25hdGl2ZVR5cGV9
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoreworICAgIGlmIChV
TkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gJGdldENhY2hlZFdyYXBwZXI7
CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7Cisg
ICAgcmV0dXJuIGRpc3BhdGNoV3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
fQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51
bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdyYXBwZXIgPSAkZ2V0Q2FjaGVkV3JhcHBlcjsKICAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICByZXR1cm4gdG9WOFNsb3co
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hXcmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CitFTkQKKyAgICAgICAgaWYgKElz
Tm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KE5vZGUq
IG5vZGUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sIE5vZGUqIGhvbGRlcikKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywgTm9kZSogaG9sZGVyKQogewotICAgIGlmIChVTkxJ
S0VMWSghbm9kZSkpCisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4
OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICAvLyBXaGF0IHdlJ2QgcmVhbGx5IGxpa2Ug
dG8gY2hlY2sgaGVyZSBpcyB3aGV0aGVyIHdlJ3JlIGluIHRoZSBtYWluIHdvcmxkIG9yCiAgICAg
Ly8gaW4gYW4gaXNvbGF0ZWQgd29ybGQuIFRoZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBk
byB0aGF0IGlzIHRvIGNoZWNrCkBAIC01NjYsMTYgKzU4OSwxOCBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KE5vZGUqIG5vZGUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8sCiAgICAgLy8gdjg6OkFjY2Vzc29ySW5mby4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlcldyYXBwZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIGlmIChob2xkZXItPndyYXBw
ZXIoKSA9PSBob2xkZXJXcmFwcGVyKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gaW1wbC0+d3JhcHBlcigpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQotICAgIHJldHVybiB0b1Y4
U2xvdyhub2RlLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJu
IGRpc3BhdGNoV3JhcChpbXBsLCBob2xkZXJXcmFwcGVyLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiBFTkQKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5E
KTsKKwogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8ICR7bmF0
aXZlVHlwZX0gPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewog
ICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBA
IC0xMDQ2LDcgKzEwNzEsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBSZWZQdHI8JHJldHVyblR5cGU+IHJlc3VsdCA9ICR7Z2V0dGVyU3RyaW5nfTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KERPTURhdGFT
dG9yZTo6Y3VycmVudChpbmZvLkdldElzb2xhdGUoKSktPmdldChyZXN1bHQuZ2V0KCkpKSA6IHY4
VW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBp
ZiAod3JhcHBlci5Jc0VtcHR5KCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTtcbiIpOyAjIEZJWE1FOiBDb3VsZCB1c2UgZGlzcGF0Y2hXcmFwIGhl
cmUgc2luY2UgdGhlIHdyYXBwZXIgaXMgZW1wdHkuCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRI
aWRkZW5SZWZlcmVuY2UoaW5mby5Ib2xkZXIoKSwgXCIke2F0dHJOYW1lfVwiLCB3cmFwcGVyKTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOwpAQCAtMjcy
OSwxMSArMjc1NCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKICAgICAgICAgbXkg
JHZpZXdUeXBlID0gR2V0VHlwZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJheSgkZGF0YU5vZGUpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoJGltcGxDbGFzc05hbWUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Vjgke2ltcGxDbGFzc05hbWV9OjpkaXNwYXRjaFdyYXBDdXN0b20oJGltcGxDbGFzc05hbWUqIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hl
Y2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjgke2lt
cGxDbGFzc05hbWV9Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
QVNTRVJUKGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4JHtp
bXBsQ2xhc3NOYW1lfTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
ICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICB3cmFwcGVyLT5TZXRJbmRleGVk
UHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoaW1wbC0+YmFzZUFkZHJlc3MoKSwgJHZpZXdU
eXBlLCBpbXBsLT5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC0zNDUzLDEzICsz
NDc3LDIwIEBAIHN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzCiAgICAgbXkgJGNsYXNzTmFtZSA9
IHNoaWZ0OwogICAgIG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7CiAKKyAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhOb1dyYXBwZXJDYWNoZSJ9KSB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVm
UHRyVHlwZSgkbmF0aXZlVHlwZSk7CiAgICAgbXkgJGJhc2VUeXBlID0gQmFzZUludGVyZmFjZU5h
bWUoJGRhdGFOb2RlKTsKKyAgICBteSAkZ2V0Q2FjaGVkV3JhcHBlciA9IElzTm9kZVN1YlR5cGUo
JGRhdGFOb2RlKSA/ICJWOERPTVdyYXBwZXI6OmdldENhY2hlZFdyYXBwZXIoaW1wbC5nZXQoKSki
IDogIkRPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpIjsKIAog
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
JHtjbGFzc05hbWV9Ojp3cmFwU2xvdygke3dyYXBTbG93QXJndW1lbnRUeXBlfSBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7CisgICAgQVNTRVJUKGltcGwuZ2V0KCkpOworICAgIEFTU0VSVCgkZ2V0Q2FjaGVkV3JhcHBl
ci5Jc0VtcHR5KCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKIEVORAog
ICAgIGlmICgkYmFzZVR5cGUgbmUgJGludGVyZmFjZU5hbWUpIHsKQEAgLTM0NzUsNyArMzUwNiw5
IEBAIEVORAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKSB7CiAgICAgICAg
IGlmIChmcmFtZS0+c2NyaXB0KCktPmluaXRpYWxpemVNYWluV29ybGQoKSkgewogICAgICAgICAg
ICAgLy8gaW5pdGlhbGl6ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVhdGVkIGEgd3JhcHBlciBmb3Ig
dGhlIG9iamVjdCwgcmV0cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAgICAgICByZXR1cm4gJHtj
bGFzc05hbWV9Ojp3cmFwKGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmdldENhY2hlZFdyYXBwZXIoaW1wbC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgICAgICB9CiAg
ICAgfQogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLnR4dAppbmRleCBkYjU4ODRjNWY0MjhjNzBkODVhZTEyNGUxZDY0ODYxOWJmZTdkZTQw
Li42NmRkNWM2ZDk5MDJkNDRiYjhjNzg3N2FmMDljNThjMGUxMTFjMGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTExOSw2
ICsxMTksNyBAQCBWOERvTm90Q2hlY2tTaWduYXR1cmUKIFY4RW5hYmxlZEF0UnVudGltZT0qCiBW
OEVuYWJsZWRQZXJDb250ZXh0PSoKIFY4R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1lbnR8
SW1wbEVsZW1lbnRSb290fEltcGxPd25lclJvb3R8SW1wbE93bmVyTm9kZVJvb3R8SW1wbEJhc2VS
b290CitWOE5vV3JhcHBlckNhY2hlPSoKIFY4TWVhc3VyZUFzPSoKIFY4UmVhZE9ubHkKIFY4VW5m
b3JnZWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IGQxMmQwODUzZDQ0N2ZkNjMxN2Y1NjAyNDY2MDgyYzk4YTc3
NWY4MDMuLjRjMzEwZDg5MTIyM2M1YWE4ZjZjNzZmMWMxYjQzNjU2YzhiMzMxMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtNjM4LDExICs2MzgsMTEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIXRyeUNhdGNo
Lkhhc0NhdWdodCgpKTsKICAgICAgICAgaWYgKG1lc3NhZ2VQb3J0cykgewogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlUG9ydHMtPnNpemUoKTsgaSsrKQotICAgICAg
ICAgICAgICAgIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuc2V0KFY4TWVzc2FnZVBvcnQ6Ondy
YXAobWVzc2FnZVBvcnRzLT5hdChpKS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBt
X3dyaXRlci5nZXRJc29sYXRlKCkpLCBpKTsKKyAgICAgICAgICAgICAgICBtX3RyYW5zZmVycmVk
TWVzc2FnZVBvcnRzLnNldCh0b1Y4T2JqZWN0KG1lc3NhZ2VQb3J0cy0+YXQoaSkuZ2V0KCksIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV93cml0ZXIuZ2V0SXNvbGF0ZSgpKSwgaSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGFycmF5QnVmZmVycykgewogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcnJheUJ1ZmZlcnMtPnNpemUoKTsgaSsrKSAgewotICAgICAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhBcnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6
OndyYXAoYXJyYXlCdWZmZXJzLT5hdChpKS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
LCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOworICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdjhBcnJheUJ1ZmZlciA9IHRvVjhPYmplY3QoYXJyYXlCdWZmZXJzLT5hdChpKS5n
ZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpOwog
ICAgICAgICAgICAgICAgIC8vIENvYWxlc2NlIG11bHRpcGxlIG9jY3VyZW5jZXMgb2YgdGhlIHNh
bWUgYnVmZmVyIHRvIHRoZSBmaXJzdCBpbmRleC4KICAgICAgICAgICAgICAgICBpZiAoIW1fdHJh
bnNmZXJyZWRBcnJheUJ1ZmZlcnMuY29udGFpbnModjhBcnJheUJ1ZmZlcikpCiAgICAgICAgICAg
ICAgICAgICAgIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMuc2V0KHY4QXJyYXlCdWZmZXIsIGkp
OwpAQCAtMjAyMiw3ICsyMDIyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAoaW5kZXggPj0gbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+c2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAqb2JqZWN0ID0gVjhNZXNzYWdl
UG9ydDo6d3JhcChtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLT5hdChpbmRleCkuZ2V0KCksIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAgICAg
Km9iamVjdCA9IHRvVjgobV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy0+YXQoaW5kZXgpLmdldCgp
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIG1fcmVhZGVyLmdldElzb2xhdGUoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjAzNCw3ICsyMDM0LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHJlc3VsdCA9IG1fYXJyYXlCdWZmZXJzLmF0KGluZGV4KTsKICAgICAgICAgaWYgKHJlc3VsdC5J
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFY4QXJyYXlCdWZmZXI6OndyYXAoQXJy
YXlCdWZmZXI6OmNyZWF0ZShtX2FycmF5QnVmZmVyQ29udGVudHMtPmF0KGluZGV4KSkuZ2V0KCks
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHRvVjhPYmplY3QoQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2FycmF5QnVm
ZmVyQ29udGVudHMtPmF0KGluZGV4KSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
bV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKICAgICAgICAgICAgIG1fYXJyYXlCdWZmZXJzW2luZGV4
XSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAqb2JqZWN0ID0gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRl
eCAwZWNjNTllMzBjNzVmZWE2MWIwMTdiYTE3Yzg1OTIzZjkwY2QyNTBkLi43MWYxNjJhZWM4MDVh
MmE3MzkzYjU2MmVlMDA5ZGY2ZjA0ZmZjZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNDMsMTUgKzQzLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoQmxvYiog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEJsb2I6OmRpc3BhdGNoV3JhcEN1
c3RvbShCbG9iKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4g
djhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotCisgICAgQVNTRVJUKGltcGwpOwogICAgIGlmIChp
bXBsLT5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgodG9GaWxlKGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwotCi0gICAgcmV0dXJuIFY4QmxvYjo6d3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvRmls
ZShpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhCbG9iOjp3
cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDU1NSdWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OENTU1J1bGVDdXN0b20uY3BwCmluZGV4IDhiMTBhZDVjYjA2ODcxNDU1MmU4ODNlNzIyOGE4MWU1
M2Y4YjczOGIuLmNkNzYzNmE1NjM0ZGRlOTM0OTgwMDQ2MDk4ZjdjYmZmY2U1NjJhZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0
b20uY3BwCkBAIC00MywzNiArNDMsMzUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChDU1NSdWxlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4Q1NTUnVsZTo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKENTU1J1bGUqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOwogICAgIHN3aXRjaCAoaW1wbC0+dHlwZSgpKSB7CiAg
ICAgY2FzZSBDU1NSdWxlOjpVTktOT1dOX1JVTEU6CiAgICAgICAgIC8vIENTU1Vua25vd25SdWxl
LmlkbCBpcyBleHBsaWNpdGx5IGV4Y2x1ZGVkIGFzIGl0IGRvZXNuJ3QgYWRkIGFueXRoaW5nCiAg
ICAgICAgIC8vIG92ZXIgQ1NTUnVsZS5pZGwgKHNlZSBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDog
J2JpbmRpbmdzX2lkbF9maWxlcycpLgogICAgICAgICAvLyAtPiBVc2UgdGhlIGJhc2UgY2xhc3Mg
d3JhcHBlciBoZXJlLgotICAgICAgICByZXR1cm4gVjhDU1NSdWxlOjp3cmFwKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBWOENTU1J1bGU6OndyYXBTbG93
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBDU1NSdWxlOjpTVFlM
RV9SVUxFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNo
V3JhcChzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKICAgICBjYXNlIENTU1J1bGU6OkNIQVJTRVRfUlVMRToKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8Q1NTQ2hhcnNldFJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1ND
aGFyc2V0UnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2Ug
Q1NTUnVsZTo6SU1QT1JUX1JVTEU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENT
U0ltcG9ydFJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAg
cmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0
aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
ICAgICBjYXNlIENTU1J1bGU6OkZPTlRfRkFDRV9SVUxFOgotICAgICAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDxDU1NGb250RmFjZVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NGb250RmFj
ZVJ1bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIENTU1J1
bGU6OlBBR0VfUlVMRToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1
bGUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRp
c3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NQYWdlUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX0tFWUZSQU1FX1JVTEU6Ci0g
ICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVsZSo+KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hX
cmFwKHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVsZSo+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX0tFWUZSQU1FU19SVUxF
OgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNw
YXRjaFdyYXAoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgQ1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9S
VUxFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NSZWdpb25SdWxl
Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNw
YXRjaFdyYXAoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogICAgIH0KLSAgICByZXR1cm4gVjhDU1NSdWxlOjp3cmFwKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4Q1NTUnVsZTo6d3Jh
cFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q1NTVmFsdWVDdXN0b20uY3BwCmluZGV4IDI2MmQ4ZTFlYjNlOTg0NzNjNDI4ODE0NmJkMTYx
ZWEyMjk2NjM1MTMuLjA5NGRhYzVlZDAwZmNhYjdjMWQ3NmNhZWYyZThjM2ZkZjY1OTVhYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1ZhbHVlQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NWYWx1
ZUN1c3RvbS5jcHAKQEAgLTQ2LDI3ICs0NiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KENTU1ZhbHVlKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4Q1NTVmFsdWU6OmRpc3BhdGNoV3JhcEN1c3RvbShDU1NWYWx1ZSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhD
aGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPmlzV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBpZiAoaW1wbC0+aXNXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgpKQotICAg
ICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJLaXRDU1NGaWx0ZXJWYWx1ZSo+KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFw
KHN0YXRpY19jYXN0PFdlYktpdENTU0ZpbHRlclZhbHVlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiAjZW5kaWYKICAgICBpZiAoaW1wbC0+aXNWYWx1ZUxpc3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVMaXN0Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAg
aWYgKGltcGwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVOQUJMRShTVkcp
CiAgICAgaWYgKGltcGwtPmlzU1ZHUGFpbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8U1ZHUGFpbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAg
ICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYWludCo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGlmIChpbXBsLT5pc1NWR0NvbG9yKCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR0NvbG9yKj4oaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8
U1ZHQ29sb3IqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICNlbmRpZgotICAg
IHJldHVybiBWOENTU1ZhbHVlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisgICAgcmV0dXJuIFY4Q1NTVmFsdWU6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMzdhNjUyZjU4NGE1OTk1YWUxYmVlNzMzYzc5NGMx
ZjllMWRmNTE3NC4uMTA2ODJkMzUxYjUxMjk1ZDBhMjUwNDc0MGIyZDhjYzE1NjQzYTZmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE4ICszOSwxNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KENh
bnZhc1JlbmRlcmluZ0NvbnRleHQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaFdyYXBDdXN0b20oQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGlt
cGwtPmlzMmQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAg
IHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQog
ICAgIGlmIChpbXBsLT5pczNkKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2VuZGlmCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
KyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNmRlOWNlOGUyZGMzNWM1MTY5YTNkZWNiOGZjZWMx
Njg0NzI3OTU3OS4uYzcwMjExOTExNTMwZThiYWEwZmFkM2U2NjBmYTg3NTdmYzE5Y2I3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERh
dGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZmZXJBcmd1bWVudDxEYXRh
VmlldywgY2hhcj4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxCeXRlQXJyYXksIGZhbHNlKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRGF0YVZpZXcqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKy8v
IEZJWE1FOiBEb24ndCBuZWVkIHRoaXMgb3ZlcnJpZGUuCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4RGF0YVZpZXc6OmRpc3BhdGNoV3JhcEN1c3RvbShEYXRhVmlldyogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
LSAgICByZXR1cm4gVjhEYXRhVmlldzo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgIEFTU0VSVChpbXBsKTsKKyAgICByZXR1cm4gVjhEYXRhVmlldzo6d3JhcFNsb3co
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RGF0YVZpZXc6OmdldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1l
bnRDdXN0b20uY3BwCmluZGV4IGQwZmI4NzA2MDBiM2Q3ZTFmYmYxZjcxNGVjYmQ2MGE1Zjc4YWI2
NTIuLjk5NmZhOTZiODk0OWU4ZTExNzQ2MWJjYjRlYzgwMWNmYjY5NmQ5NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAKQEAgLTk1LDE3ICs5NSwxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6
ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB0
b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhEb2N1bWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKERvY3Vt
ZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOworICAgIEFTU0VSVChpbXBsKTsKICAgICBpZiAoaW1wbC0+aXNI
VE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTERvY3Vt
ZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBk
aXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoaW1wbC0+aXNTVkdEb2N1
bWVudCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hX
cmFwKHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiAjZW5kaWYKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERv
Y3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhEb2N1bWVudDo6d3JhcFNsb3coaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIGlmICghVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJl
ZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhF
bGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVs
ZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMmUyN2M3ODQ1ODg4ZDQyYjEwYzRkYWRiYjU0
NWViMmRkZjg3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworI2luY2x1ZGUgIlY4RWxlbWVudC5oIgor
I2luY2x1ZGUgIlY4SFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJWOFNWR0VsZW1lbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBWOE5v
ZGU6OmRpc3BhdGNoV3JhcEN1c3RvbSBmb3IgcGVyZm9ybWFuY2UuIEl0IG11c3QgYmUga2VwdCBp
biBzeW5jLgordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1
c3RvbShFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKGltcGwpOworICAgIGlmIChp
bXBsLT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAodG9IVE1M
RWxlbWVudChpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGlmIChpbXBsLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNo
V3JhcChzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gVjhFbGVtZW50Ojp3cmFwU2xvdyhzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNw
cAppbmRleCBiMzVlMTMzMmE0ZmI1ZmNjZjUzODBhZGRkY2UzNTVhOTgwZmE1ZjJkLi5hZTkwMWVi
YjM1NjUzODliMzUxNjViYmFkZWUzNGM3MTYyZTI2ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwCkBAIC00MywxNiArNDMs
MTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChFbnRyeSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEVudHJ5OjpkaXNw
YXRjaFdyYXBDdXN0b20oRW50cnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAg
ICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7
CiAgICAgaWYgKGltcGwtPmlzRmlsZSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2Fz
dDxGaWxlRW50cnkqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAg
cmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxGaWxlRW50cnkqPihpbXBsKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIAogICAgIEFTU0VSVChpbXBsLT5pc0RpcmVjdG9yeSgpKTsK
LSAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeSo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nh
c3Q8RGlyZWN0b3J5RW50cnkqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3RvbS5jcHAKaW5kZXggNTQ1ZGQxZmM4NTk3
YjBhOTg1ODhiNjExNWUzODQ1NTk0MjdlNDgwMS4uNmQ4ODk1YzhlYjYwMzI5ZDNiOTM0NjEyY2Ew
N2Q1ZTZmYmQ2ZGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFbnRyeVN5bmNDdXN0b20uY3BwCkBAIC00MywxNiArNDMsMTQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFbnRyeVN5bmMq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhFbnRyeVN5bmM6OmRpc3BhdGNo
V3JhcEN1c3RvbShFbnRyeVN5bmMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAg
ICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7
CiAgICAgaWYgKGltcGwtPmlzRmlsZSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2Fz
dDxGaWxlRW50cnlTeW5jKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAg
ICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RmlsZUVudHJ5U3luYyo+KGltcGwp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCiAgICAgQVNTRVJUKGltcGwtPmlzRGlyZWN0
b3J5KCkpOwotICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5U3luYyo+
KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8RGlyZWN0b3J5RW50cnlTeW5jKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAppbmRleCAzODFl
ODJiZTNlYTIwYzkyYTY1YjkyZWNhNWUwMmYyODU3MzJjYjIxLi40M2VhYjY5YjhkY2RlOGY3OThl
N2M1ODRhMDQyYmIzMGI2ZWZkMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCkBAIC02NCwyMiArNjQsMjEgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RXZlbnQ6OmNsaXBib2FyZERhdGFBY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4KIAogI2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShp
bnRlcmZhY2VOYW1lKSBcCiAgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3IjI2ludGVy
ZmFjZU5hbWUgPT0gZGVzaXJlZEludGVyZmFjZSkgXAotICAgICAgICByZXR1cm4gdG9WOChzdGF0
aWNfY2FzdDxpbnRlcmZhY2VOYW1lKj4oZXZlbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PGludGVyZmFjZU5hbWUq
PihldmVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEV2ZW50KiBldmVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlICppc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEV2
ZW50OjpkaXNwYXRjaFdyYXBDdXN0b20oRXZlbnQqIGV2ZW50LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUgKmlzb2xhdGUpCiB7Ci0gICAgaWYgKCFl
dmVudCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NF
UlQoZXZlbnQpOwogCiAgICAgU3RyaW5nIGRlc2lyZWRJbnRlcmZhY2UgPSBldmVudC0+aW50ZXJm
YWNlTmFtZSgpOwogCiAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBFdmVudCBmaXJzdCB0byBhdm9p
ZCBpbmZpbml0ZSByZWN1cnNpb24uCiAgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JF
dmVudCA9PSBkZXNpcmVkSW50ZXJmYWNlKQotICAgICAgICByZXR1cm4gVjhFdmVudDo6d3JhcChl
dmVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIFY4RXZlbnQ6
OndyYXBTbG93KGV2ZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCiAgICAgRE9NX0VW
RU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAKLSAg
ICByZXR1cm4gVjhFdmVudDo6d3JhcChldmVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICByZXR1cm4gVjhFdmVudDo6d3JhcFNsb3coZXZlbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAppbmRleCAwNDkxNWQ3OTJiMWRiYTg0ZWZiNWY5YzMwYTFjODFlMGE0NjgzMzhlLi4wZTA5ODgx
MjVjOGVmNGY5NWQ2MDhhYmFiNmRjMTA3NjgzMWUzNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20u
Y3BwCkBAIC04NCwxNCArODQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxl
Y3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlv
biogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEhUTUxDb2xsZWN0aW9uOjpk
aXNwYXRjaFdyYXBDdXN0b20oSFRNTENvbGxlY3Rpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAo
IWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0KKyAgICBB
U1NFUlQoaW1wbCk7CiAgICAgaWYgKGltcGwtPnR5cGUoKSA9PSBEb2NBbGwpCi0gICAgICAgIHJl
dHVybiB0b1Y4KHN0YXRpY19jYXN0PEhUTUxBbGxDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgcmV0dXJuIFY4SFRNTENvbGxlY3Rpb246OndyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3Jh
cChzdGF0aWNfY2FzdDxIVE1MQWxsQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworICAgIHJldHVybiBWOEhUTUxDb2xsZWN0aW9uOjp3cmFwU2xvdyhpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAppbmRleCA4ZjRmY2Y0NWQxZGY3YTMxODM5NmM3NGI5NzFjZmRjZmYy
M2Q3YzhkLi4yMDNhYmI1MmM1YWY0MDQ1NTBmZThhOGZmMzE2YmVlODYxY2ZjMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAKQEAgLTE2OCwxMSArMTY4LDEwIEBAIHZvaWQgVjhIVE1MRG9jdW1lbnQ6
OmFsbEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6CiAgICAgaW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpkaXNwYXRjaFdyYXBDdXN0b20oSFRNTERvY3Vt
ZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IFY4SFRNTERvY3VtZW50Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgQVNTRVJUKGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4
SFRNTERvY3VtZW50Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
ICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAg
aWYgKCFWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcApp
bmRleCA2M2MwZjY1OGYwYjQ0YTlmZDhiNGY0ZDExYzM3ZjU2NDQ2MWE1OGI0Li5mYjU3MTYwYzFi
ZGM3Y2YyNGIzZTJiYjYwYmI5ZWQxMDZjZGE5ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCkBAIC00
MCwxMCArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4SFRNTEVsZW1lbnQ6OmRpc3BhdGNoV3JhcEN1c3RvbShIVE1MRWxlbWVudCogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29s
YXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgcmV0dXJuIGNyZWF0ZVY4SFRNTFdyYXBwZXIo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXgg
ODkwZTQxMjZhYjE5ZjE4NjNlNGEwOGE2ZTA1ZTllYzEzNTM4NzhlYy4uZGQyM2Y2YjIxZjllYTg1
N2FmNDBjYTc5Mzg4ZjhjOTIyMjlmNTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCkBAIC0zNSwxMSArMzUs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChJbWFnZURhdGEqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhJbWFnZURh
dGE6OmRpc3BhdGNoV3JhcEN1c3RvbShJbWFnZURhdGEqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAo
IWltcGwpCi0gICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXBTbG93KGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkgewogICAg
ICAgICAvLyBDcmVhdGUgYSBWOCBVaW50OENsYW1wZWRBcnJheSBvYmplY3QuCiAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBwaXhlbEFycmF5ID0gdG9WOChpbXBsLT5kYXRhKCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDhhOThhNzZlNmZiZjMxMGU0ZDQ2MDRlNTBi
ZDUyYTAyOTliNDgxMWQuLmRlMWQzZjliZTgwMDVhMjI5NzMyZWQwZjYxZDc3ODExNzQ3MzliNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0
b20uY3BwCkBAIC0xMjUsNDkgKzEyNSw0NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2Rl
OjphcHBlbmRDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0
dXJuIHY4OjpOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhTbG93KE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhO
b2RlOjpkaXNwYXRjaFdyYXBDdXN0b20oTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1w
bCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLQotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVy
KGltcGwpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFw
cGVyOwotCisgICAgQVNTRVJUKGltcGwpOwogICAgIHN3aXRjaCAoaW1wbC0+bm9kZVR5cGUoKSkg
ewogICAgIGNhc2UgTm9kZTo6RUxFTUVOVF9OT0RFOgorICAgICAgICAvLyBGb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucywgdGhpcyBpcyBpbmxpbmVkIGZyb20gVjhFbGVtZW50OjpkaXNwYXRjaFdyYXBD
dXN0b20gYW5kIG11c3QgcmVtYWluIGluIHN5bmMuCiAgICAgICAgIGlmIChpbXBsLT5pc0hUTUxF
bGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdG9WOCh0b0hUTUxFbGVtZW50KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3Jh
cCh0b0hUTUxFbGVtZW50KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2lmIEVO
QUJMRShTVkcpCiAgICAgICAgIGlmIChpbXBsLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nh
c3Q8U1ZHRWxlbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogI2VuZGlm
Ci0gICAgICAgIHJldHVybiBWOEVsZW1lbnQ6OndyYXAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gVjhFbGVtZW50
Ojp3cmFwU2xvdyhzdGF0aWNfY2FzdDxFbGVtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8QXR0cio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PEF0dHIqPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKLSAg
ICAgICAgcmV0dXJuIHRvVjgodG9UZXh0KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvVGV4dChpbXBsKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q0RBVEFTZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nh
c3Q8Q0RBVEFTZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAg
Y2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0
YXRpY19jYXN0PEVudGl0eVJlZmVyZW5jZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PEVudGl0eVJlZmVy
ZW5jZSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6
RU5USVRZX05PREU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEVudGl0eSo+KGlt
cGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hX
cmFwKHN0YXRpY19jYXN0PEVudGl0eSo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgICBy
ZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0
aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKLSAgICAgICAgcmV0dXJuIHRv
Vjgoc3RhdGljX2Nhc3Q8Q29tbWVudCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PENvbW1lbnQqPihpbXBs
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05P
REU6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4o
aW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9GUkFHTUVOVF9OT0RFOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1bWVu
dEZyYWdtZW50Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJl
dHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToK
LSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihpbXBsKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNf
Y2FzdDxOb3RhdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOyAvLyBYUEFUSF9OQU1FU1BBQ0VfTk9ERQogICAgIH0KLSAg
ICByZXR1cm4gVjhOb2RlOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgcmV0dXJuIFY4Tm9kZTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKIH0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAK
aW5kZXggMzk3ZTNmOWFlNWMwNDNjNjBlMmYwYjcyOGI3YzExZjA5NTJiZDIzNi4uMjBlMTdlNTgz
ZjcxY2Q0YjgwNzE2YTFhM2VjNjNiODBiMzNlNjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1c3Rv
bS5jcHAKQEAgLTQzLDE3ICs0MywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBlcmZvcm1hbmNlRW50cnkqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhQZXJmb3JtYW5jZUVudHJ5OjpkaXNwYXRjaFdyYXBDdXN0b20o
UGVyZm9ybWFuY2VFbnRyeSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAg
cmV0dXJuIHY4OjpOdWxsKCk7Ci0KKyAgICBBU1NFUlQoaW1wbCk7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX1RJTUlORykKICAgICBpZiAoaW1wbC0+aXNSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKj4oaW1wbCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGlj
X2Nhc3Q8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogI2VuZGlmCi0KLSAgICByZXR1cm4gVjhQZXJmb3JtYW5jZUVudHJ5Ojp3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4UGVyZm9ybWFu
Y2VFbnRyeTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDYwNzM4ZDdlOWU3
ODRiYTZkZWJmMGNkZTAwOWRlZjVmNjczMTkwZTkuLmMyOGMzNjViNzg5MzYyOTVlYzMyOGM0YTMw
NTI0NjhhMmM2ZDhkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTM4LDExICszOCwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNWR0Rv
Y3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4U1ZHRG9jdW1lbnQ6
OmRpc3BhdGNoV3JhcEN1c3RvbShTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICgh
aW1wbCkKLSAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOFNWR0RvY3VtZW50Ojp3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4U1ZHRG9jdW1lbnQ6OndyYXBTbG93KGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKICAgICBpZiAoIVY4RE9NV2luZG93U2hlbGw6OmdldEVudGVy
ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTVkdFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3MmFjMWQ2MDQ1YjFmNzg3OTRiOWQyMmFjN2Jm
MDc1OGRhZWNhYzQzLi42YjIyZTk1NTczMzZlODM3MTdjYzQzMTIxMGI5YzE0NmI5ODcyMDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdF
bGVtZW50Q3VzdG9tLmNwcApAQCAtMzcsMTAgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdFbGVtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4U1ZHRWxlbWVudDo6ZGlzcGF0Y2hXcmFwQ3VzdG9tKFNW
R0VsZW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2
OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgQVNTRVJUKGltcGwpOwogICAgIHJldHVybiBj
cmVhdGVWOFNWR1dyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNl
Z0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRo
U2VnQ3VzdG9tLmNwcAppbmRleCBkNDVjYmUyNGJmNzM1YjI0YjcxODE1MjU5Yjg4ZmM3Y2UzNDFl
ZTJiLi42ZTg4YTlmN2Q4NmZmNTJkMDYyYmU0ZDhlZTdlNGVmZjM3NTc0MGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3Vz
dG9tLmNwcApAQCAtNTcsNTIgKzU3LDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHUGF0aFNlZyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFNWR1BhdGhTZWc6OmRpc3BhdGNoV3JhcEN1c3RvbShTVkdQYXRoU2Vn
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdjhOdWxsV2l0
aENoZWNrKGlzb2xhdGUpOworICAgIEFTU0VSVChpbXBsKTsKICAgICBzd2l0Y2ggKGltcGwtPnBh
dGhTZWdUeXBlKCkpIHsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ0xPU0VQQVRIOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ2xvc2VQYXRoKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0Nsb3NlUGF0aCo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fQUJTOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvQWJzKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19NT1ZFVE9fUkVMOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTW92ZXRvUmVsKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ01vdmV0b1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fQUJTOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvQWJzKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fUkVMOgot
ICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvUmVsKj4oaW1w
bCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdy
YXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX0NVQklD
X0FCUzoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1
cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19SRUw6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0
PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAg
Y2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUzoKLSAgICAgICAg
cmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNo
V3JhcChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyo+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19D
VVJWRVRPX1FVQURSQVRJQ19SRUw6Ci0gICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
ICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX0FCUzoKLSAgICAgICAgcmV0dXJuIHRv
Vjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0FyY0Ficyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1Bh
dGhTZWdBcmNBYnMqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNl
IFNWR1BhdGhTZWc6OlBBVEhTRUdfQVJDX1JFTDoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ0FyY1JlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdBcmNS
ZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhT
ZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgotICAgICAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyo+KGltcGwpLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19j
YXN0PFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19IT1JJWk9O
VEFMX1JFTDoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAg
ICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvSG9yaXpv
bnRhbFJlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTOgotICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMqPihpbXBsKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChzdGF0aWNf
Y2FzdDxTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX1ZFUlRJQ0FM
X1JFTDoKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1Zl
cnRpY2FsUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJl
dHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVs
Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBTVkdQYXRoU2Vn
OjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzoKLSAgICAgICAgcmV0dXJuIHRvVjgo
c3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyo+KGltcGwpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRp
Y19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMqPihpbXBsKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19D
VUJJQ19TTU9PVEhfUkVMOgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CisgICAgICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1Ntb290aFJlbCo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
ICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJT
OgotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1Ntb290aEFicyo+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljU21vb3RoQWJzKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9SRUw6Ci0gICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoUmVsKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgICAgIHJldHVy
biBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhSZWwqPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFY4U1ZHUGF0aFNlZzo6d3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBWOFNWR1BhdGhTZWc6OndyYXBT
bG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFN0eWxlU2hlZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3R5bGVTaGVldEN1c3RvbS5jcHAKaW5kZXggZWQwNWZhMmJkMDNhOWZmY2RlODgxNzMyNzI5
ZmU1MzhkMjQ0NGYxYS4uM2I4ZjU0YjZkZTMwOTAwZjQ5MTRjZGI0ZTZhMGY3ZDYzMzQ0NDRhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVl
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5
bGVTaGVldEN1c3RvbS5jcHAKQEAgLTM3LDEzICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFN0eWxlU2hlZXQqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhTdHlsZVNoZWV0OjpkaXNwYXRjaFdyYXBDdXN0b20o
U3R5bGVTaGVldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICBBU1NFUlQoaW1wbCk7CiAgICAgaWYgKGlt
cGwtPmlzQ1NTU3R5bGVTaGVldCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgcmV0
dXJuIFY4U3R5bGVTaGVldDo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4gVjhTdHlsZVNoZWV0
Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggZDUxZTgwNDdjM2E4M2E5
ZWY2NmRiMmYwNWFhYWM5NmQ5MzY1MWVmZi4uZmY3NDFmNmI5MDgzMDczYTdiM2ZmYzNkZDBlNGJk
ZGVhNTAxNmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMjAsNyArMjAsOCBAQAogCiBb
CiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEpTSW5saW5lR2V0T3duUHJvcGVy
dHlTbG90CisgICAgSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QsCisgICAgVjhDdXN0b21Ub0pT
T2JqZWN0CiBdIGludGVyZmFjZSBFbGVtZW50IDogTm9kZSB7CiAKICAgICAvLyBET00gTGV2ZWwg
MSBDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDM4ZDg1OTVkZWIxNjAzZWI1MmI3
NTE4MTcyMjQyOGMzZjUwNTkxZDQuLjNiOWI1YWRmNGYwYzQ4OGJjZmMyYzU3YmU1YTA2NGY3Yzlk
MjBiMWQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMDY2LDEyICsxMDY2LDEyIEBA
IEVORAogICAgICAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAg
ICAgICAgICAgIGlmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlz
QXZhaWxhYmxlfSkgewogICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CiAgICAgaWYgKCFNZWRpYVBsYXll
cjo6aXNBdmFpbGFibGUoKSB8fCAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5pc01lZGlhRW5hYmxl
ZCgpKSkKLSAgICAgICAgcmV0dXJuIFY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ6Ondy
YXAoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChlbGVtZW50LCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworICAgIHJldHVybiBkaXNwYXRjaFdyYXAoc3RhdGljX2Nhc3Q8
JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiB9CiAKIEVORApAQCAtMTA3OSwzOSArMTA3OSw0MCBAQCBFTkQKICAgICAgICAgICAgIH0gZWxz
aWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17Y29udGV4dENvbmRpdGlvbmFsfSkgewogICAgICAg
ICAgICAgICAgIG15ICRjb250ZXh0Q29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e2NvbnRleHRDb25kaXRpb25hbH07CiAgICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVy
KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFDb250
ZXh0RmVhdHVyZXM6OiR7Y29udGV4dENvbmRpdGlvbmFsfUVuYWJsZWQoZWxlbWVudC0+ZG9jdW1l
bnQoKSkpCi0gICAgICAgIHJldHVybiBWOCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFt
ZX06OndyYXAodG8kcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1lbnQpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PCR7
SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
ICAgICAgICByZXR1cm4gZGlzcGF0Y2hXcmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZh
Y2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICByZXR1cm4g
ZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogRU5ECiA7CiAgICAgICAgICAgICB9IGVsc2lm
ICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH0pIHsKICAgICAgICAg
ICAgICAgICBteSAkcnVudGltZUNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXty
dW50aW1lQ29uZGl0aW9uYWx9OwogICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gVjgkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFwKHRvJHBh
cmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKLSAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDwke0pTSW50ZXJmYWNlTmFt
ZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICAgICAgcmV0dXJu
IGRpc3BhdGNoV3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVu
dCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIGRpc3BhdGNoV3JhcChz
dGF0aWNfY2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKIH0KIEVORAogOwogICAgICAgICAgICAgfSBlbHNpZiAoJHtKU0ludGVyZmFj
ZU5hbWV9IGVxICJIVE1MRWxlbWVudCIpIHsKICAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5E
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdy
YXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIo
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1
cm4gVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDo6d3JhcChlbGVtZW50LCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CiB9CiAKIEVORAogOwogICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDwke0pT
SW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAg
ICByZXR1cm4gZGlzcGF0Y2hXcmFwKHN0YXRpY19jYXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVs
ZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiAKQEAgLTExOTQsNyArMTE5
NSw3IEBAIEVORAogOwogICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4Iikg
ewogICAgICAgICBwcmludCBGIDw8RU5ECi10eXBlZGVmIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAo
KkNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKSgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwordHlwZWRlZiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
ICgqQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAKIEVORAogOwpAQCAtMTIxMyw3ICsxMjE0LDcg
QEAgRU5ECiA7CiAgICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CiAg
ICAgICAgIHByaW50IEYgPDxFTkQKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBl
bGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7
bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQs
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9taWNTdHJpbmdJbXBsKiwgQ3Jl
YXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IEZ1bmN0aW9u
TWFwOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1hcCwgKCkpOwpAQCAt
MTI0Myw3ICsxMjQ0LDcgQEAgRU5ECiAgICAgcHJpbnQgRiA8PEVORAogICAgIH0KICAgICBDcmVh
dGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVXcmFw
cGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAg
aWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKKyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9u
KSB7CiBFTkQKIDsKICAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7CkBAIC0x
MjUzLDExICsxMjU0LDI4IEBAIEVORAogRU5ECiA7CiAgICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0
b3J5VHlwZSBlcSAiVjgiKSB7CisgICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVx
ICJIVE1MIikgeworICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICBpZiAoY3JlYXRl
V3JhcHBlckZ1bmN0aW9uID09IGNyZWF0ZUhUTUxFbGVtZW50V3JhcHBlcikKKyAgICAgICAgICAg
cmV0dXJuIFY4SFRNTEVsZW1lbnQ6OndyYXBTbG93KGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CitFTkQKKyAgICAgICAgfQogICAgICAgICBwcmludCBGIDw8RU5ECiAgICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24oZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLSAgICByZXR1cm4gVjgkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9
Ojp3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICB9CitFTkQKKzsKKyAgICAgICAgaWYgKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gZXEgIlNWRyIpIHsKKyAgICAgICAgICAgIHByaW50IEYgPDxFTkQK
KyAgICByZXR1cm4gVjhTVkdFbGVtZW50Ojp3cmFwU2xvdyhlbGVtZW50LCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworRU5ECis7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmlu
dCBGIDw8RU5ECisgICAgcmV0dXJuIGRpc3BhdGNoV3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNr
SW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiBFTkQK
IDsKKyAgICAgICAgfQogICAgIH0KICAgICBwcmludCBGIDw8RU5ECiB9CkBAIC0xMzE1LDcgKzEz
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudDsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1X
cmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9CiBFTkQKIDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWljcm9EYXRhSXRlbVZhbHVlLmlkbAppbmRleCA1YjI5ZWQ1NDIyZjFkYTEy
OThhMWJjYzdmYzQzMjU1MTg3ZTdlZDJkLi5mYzFhM2FjYTcxMDAyZmEyOTYxZGU5YTliZDdlOWM4
Njg2MjBkNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01pY3JvRGF0YUl0ZW1W
YWx1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NaWNyb0RhdGFJdGVtVmFsdWUuaWRs
CkBAIC0zMSw2ICszMSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9TUlDUk9EQVRBLAogICAgIEN1
c3RvbVRvSlNPYmplY3QsCi0gICAgT21pdENvbnN0cnVjdG9yCisgICAgT21pdENvbnN0cnVjdG9y
LAorICAgIFY4Tm9XcmFwcGVyQ2FjaGUKIF0gaW50ZXJmYWNlIE1pY3JvRGF0YUl0ZW1WYWx1ZSB7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCmluZGV4IDQ2
YzBlOTljM2Q4ZDM1Njk5ZDk4ZTVmNmVhZjM4ZmNiZDhjMmU4YmQuLjZhN2E4MmQ3YTYwMTdlM2I4
YjRjYzBiZTJhZTRlNDY2MThjYWFhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRQcm9maWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2Ny
aXB0UHJvZmlsZS5pZGwKQEAgLTI3LDcgKzI3LDggQEAKIFsKICAgICBDb25kaXRpb25hbD1KQVZB
U0NSSVBUX0RFQlVHR0VSLAogICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICBWOEN1c3RvbVRvSlNP
YmplY3QKKyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZQogXSBp
bnRlcmZhY2UgU2NyaXB0UHJvZmlsZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0aXRsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1aWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbAppbmRleCAwYjhi
MTI1OWJmMzg3OWZjZTZlZjgzN2Q0MzA2NzEyYjJhYTMyYWQyLi5lNmJlMjg3YTAxOGEzNDUwZjhl
M2U4NTVhNDQ2ZjM5MzEzMmZjYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZU5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHRQcm9maWxlTm9kZS5pZGwKQEAgLTI3LDcgKzI3LDggQEAKIFsKICAgICBDb25kaXRpb25h
bD1KQVZBU0NSSVBUX0RFQlVHR0VSLAogICAgIE9taXRDb25zdHJ1Y3RvciwKLSAgICBWOEN1c3Rv
bVRvSlNPYmplY3QKKyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNo
ZQogXSBpbnRlcmZhY2UgU2NyaXB0UHJvZmlsZU5vZGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgZnVuY3Rpb25OYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGRlNWViN2UxODI4MmZlNDM0
MjcxZDQzYWFmOTY4YTE5YTE2M2ZkMzUuLmRjMmEyZGNiMTRhMjE2M2U0ZTc3YWU2NWE3NTdiZTlm
YmJkMThiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTM5LDYgKzM5LDcgQEAK
ICAgICBSZXBsYWNlYWJsZUNvbnN0cnVjdG9yLAogICAgIEpTTGVnYWN5UGFyZW50PUpTRE9NV2lu
ZG93QmFzZSwKICAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisgICAgVjhOb1dyYXBwZXJDYWNoZSwK
ICAgICBJbnRlcmZhY2VOYW1lPVdpbmRvdwogXSBpbnRlcmZhY2UgRE9NV2luZG93IHsKICAgICAv
LyBET00gTGV2ZWwgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKaW5k
ZXggNjliMTFmMWFjYWIzYTY2NWVlNGU5ODdhNTc2NjRiZmY5ZWIwNjc3NS4uMmQ1MjNlYjFhMzdj
OGRkMGIwNTg1MTNjYWY0NWE0ZWI5ZDM5ZDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsCkBAIC0zNCw3ICszNCw4IEBACiAgICAgSlNMZWdhY3lQYXJlbnQ9SlNX
b3JrZXJDb250ZXh0QmFzZSwKICAgICBKU05vU3RhdGljVGFibGVzLAogICAgIE9taXRDb25zdHJ1
Y3RvciwKLSAgICBWOEN1c3RvbVRvSlNPYmplY3QKKyAgICBWOEN1c3RvbVRvSlNPYmplY3QsCisg
ICAgVjhOb1dyYXBwZXJDYWNoZQogXSBpbnRlcmZhY2UgV29ya2VyQ29udGV4dCB7CiAKICAgICAv
LyBXb3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJy
YXlCdWZmZXIuY3BwCmluZGV4IGQ0Mzg3NGI2M2IxOTRkNTQ5MDcyNDJjNDc1MWRkYWQ4ZjA2ZmU2
NjAuLjJkMTkyYmRiNzhlZDEwZjU1ZGEyYTg2NTVhN2M3OGU3MTgxYWYzMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdW5zaWduZWQgV2ViQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogI2lmIFdFQktJ
VF9VU0lOR19WOAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkFycmF5QnVmZmVyOjp0b1Y4VmFs
dWUoKQogewotICAgIHJldHVybiBWOEFycmF5QnVmZmVyOjp3cmFwKG1fcHJpdmF0ZS5nZXQoKSk7
CisgICAgcmV0dXJuIHRvVjhPYmplY3QobV9wcml2YXRlLmdldCgpKTsKIH0KIAogV2ViQXJyYXlC
dWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJC
bG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCmluZGV4IGY4
MjI4ZTlkN2Q4YzI1ZmZkNDM5NDQ5NDJiMmJhYTdmMDA4ZTFhOGQuLmIyZjI5OWZkZDM0MjNiNTBh
YjcwYmQ0MDBmNGY3ZjMwYjIwNGVmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJs
b2IuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2ViQmxvYjo6YXNzaWduKGNvbnN0IFdlYkJs
b2ImIG90aGVyKQogI2lmIFdFQktJVF9VU0lOR19WOAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICBX
ZWJCbG9iOjp0b1Y4VmFsdWUoKQogewotICAgIHJldHVybiBWOEJsb2I6OndyYXAobV9wcml2YXRl
LmdldCgpKTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChtX3ByaXZhdGUuZ2V0KCkpOwogfQogI2Vu
ZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>